Я пишу обработчик кэша, которому нужен уникальный идентификационный номер для каждого экземпляра приложения, чтобы при перепутывании двух проектов в двух экземплярах кэши не путались. В соответствии с эта тема, кажется HINSTANCE
перешел к WinMain
является дескриптором модуля, который может быть просто exe, а не обязательно уникальным идентификатором процесса.
Кажется, что поток говорит, что информация о модуле / процессе, который должен быть запущен, заносится в память только один раз, и HINSTANCE
является ручкой к этому. Означает ли это HINSTANCE
нельзя использовать в качестве уникального идентификатора процесса, поскольку все они указывают на один и тот же модуль? Или я ошибаюсь?
HINSTANCE
в основном устарел, пережиток 16-битных дней. Он будет иметь одинаковое значение для всех экземпляров вашего приложения.
Для уникального идентификатора процесса используйте GetCurrentProcessId
На Win32 HINSTANCE
соответствует HMODULE
исполняемого файла, который в свою очередь сводится к его базовому адресу. Он не является уникальным для процесса в любом случае — AFAIK данный исполняемый файл всегда будет загружен по его запрошенному базовому адресу.
Вы можете либо использовать идентификатор процесса для своей задачи, либо, если проблема заключается в том, что идентификаторы процесса перерабатываются, или если вы предпочитаете уникальный идентификатор для разных машин, просто сгенерируйте новый GUID при запуске и используйте тот как удостоверение личности.