Являются ли win32 hInstances уникальными?

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

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

1

Решение

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

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

5

Другие решения

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

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

2

По вопросам рекламы [email protected]