Являются ли win32 hInstances уникальными? - PullRequest
0 голосов
/ 03 января 2019

Я пишу обработчик кэша, которому нужен уникальный идентификационный номер для каждого экземпляра приложения, чтобы, когда у кого-то было открыто два проекта в двух экземплярах, кэши не перепутались.Согласно этой нити , похоже, что HINSTANCE, переданный WinMain, является дескриптором модуля, который может быть просто exe, а не обязательно уникальным идентификатором процесса.

поток, кажется, говорит, что информация о модуле / процессе, который должен быть запущен, заносится в память только один раз, и HINSTANCE является дескриптором этого.Означает ли это, что HINSTANCE нельзя использовать в качестве уникального идентификатора процесса, поскольку все они указывают на один и тот же модуль?Или я ошибаюсь?

Ответы [ 2 ]

0 голосов
/ 03 января 2019

На Win32 HINSTANCE соответствует HMODULE исполняемого файла, который, в свою очередь, сводится к его базовому адресу. Это никак не уникально для процесса - AFAIK для данного исполняемого файла всегда будет загружаться по его запрошенному базовому адресу.

Вы можете либо использовать идентификатор процесса для своей задачи, либо, если факт повторного использования идентификаторов процесса является проблемой, или если вы предпочитаете уникальный идентификатор для разных машин, просто сгенерируйте новый GUID при запуске и используйте что как идентификатор.

0 голосов
/ 03 января 2019

HINSTANCE в основном устарели, пережиток 16-битных дней.Он будет иметь одинаковое значение для всех экземпляров вашего приложения.

Для уникального идентификатора процесса используйте GetCurrentProcessId

...