При использовании заголовков Win32 API необходимо указать, на какую версию операционной системы вы нацелены.Это задокументировано в библиотеке MSDN .
. В настоящее время вы должны делать это, определяя NTDDI_VERSION.Если вы посмотрите документацию для GetProcessId , вы заметите, что для этого требуется Windows XP SP1, поэтому вам нужно указать как минимум NTDDI_WINXPSP1 в качестве целевой версии операционной системы.Фактически, поскольку SP1 больше не поддерживается, вам, вероятно, лучше использовать SP2:
#define NTDDI_VERSION 0x05010200
В прошлом я обнаружил, что определение NTDDI_VERSION не всегда работает должным образом, хотя, надеюсь, большинство глюковбыли сглажены к настоящему времени.Если это не работает, попробуйте использовать более старый макрос _WIN32_WINNT, который также задокументирован по ссылке, приведенной выше.В этом случае вы хотите:
#define _WIN32_WINNT 0x0502
Если вам позже понадобится использовать функции, которые были представлены в Vista или Windows 7, измените значение NTDDI_VERSION или _WIN32_WINNT соответствующим образом.В документации библиотеки MSDN для каждой функции указано, в какой версии операционной системы она была представлена.