Функция NtQueryInformationProcess (winternl.h)
[NtQueryInformationProcess может быть изменен или недоступен в будущих версиях Windows. Приложения должны использовать альтернативные функции, перечисленные в этом разделе.]
Извлекает сведения об указанном процессе.
Синтаксис
__kernel_entry NTSTATUS NtQueryInformationProcess(
[in] HANDLE ProcessHandle,
[in] PROCESSINFOCLASS ProcessInformationClass,
[out] PVOID ProcessInformation,
[in] ULONG ProcessInformationLength,
[out, optional] PULONG ReturnLength
);
Параметры
[in] ProcessHandle
Дескриптор процесса, для которого требуется извлечь сведения.
[in] ProcessInformationClass
Тип извлекаемой информации о процессе. Этот параметр может быть одним из следующих значений перечисления PROCESSINFOCLASS .
Значение | Значение |
---|---|
|
Извлекает указатель на структуру PEB, с помощью которой можно определить, выполняется ли отладка указанного процесса, и уникальное значение, используемое системой для идентификации указанного процесса.
Для получения этих сведений используйте функции CheckRemoteDebuggerPresent и GetProcessId . |
|
Извлекает значение DWORD_PTR , которое является номером порта отладчика для процесса. Ненулевое значение указывает, что процесс выполняется под управлением отладчика круга 3.
Используйте функцию CheckRemoteDebuggerPresent или IsDebuggerPresent . |
|
Определяет, выполняется ли процесс в среде WOW64 (WOW64 — это эмулятор x86, позволяющий приложениям на основе Win32 запускаться в 64-разрядной версии Windows).
Для получения этих сведений используйте функцию IsWow64Process2 . |
|
Извлекает значение UNICODE_STRING , содержащее имя файла изображения для процесса.
Для получения этих сведений используйте функцию QueryFullProcessImageName или GetProcessImageFileName . |
|
Извлекает значение ULONG , указывающее, считается ли процесс критическим.
Примечание Это значение можно использовать, начиная с Windows XP с пакетом обновления 3 (SP3). Начиная с Windows 8.1 вместо него следует использовать IsProcessCritical.
|
|
Извлекает значение PROCESS_TELEMETRY_ID_INFORMATION_TYPE , содержащее метаданные о процессе. |
|
Извлекает значение SUBSYSTEM_INFORMATION_TYPE , указывающее тип подсистемы процесса. Буфер, на который указывает параметр ProcessInformation , должен быть достаточно большим, чтобы вместить одно перечисление SUBSYSTEM_INFORMATION_TYPE . |
[out] ProcessInformation
Указатель на буфер, предоставляемый вызывающим приложением, в который функция записывает запрошенные сведения. Размер записываемой информации зависит от типа данных параметра ProcessInformationClass :
PROCESS_BASIC_INFORMATION
Если параметр ProcessInformationClass имеет значение ProcessBasicInformation, буфер, на который указывает параметр ProcessInformation , должен быть достаточно большим, чтобы вместить одну PROCESS_BASIC_INFORMATION структуру со следующим макетом:
typedef struct _PROCESS_BASIC_INFORMATION {
NTSTATUS ExitStatus;
PPEB PebBaseAddress;
ULONG_PTR AffinityMask;
KPRIORITY BasePriority;
ULONG_PTR UniqueProcessId;
ULONG_PTR InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION;
Поле | Значение |
---|---|
ExitStatus | Содержит то же значение, которое возвращает GetExitCodeProcess . Однако для ясности и безопасности предпочтительнее использовать GetExitCodeProcess . |
PebBaseAddress | Указывает на структуру PEB . |
AffinityMask | Может быть приведен к DWORD и содержит то же значение, которое GetProcessAffinityMask возвращает для lpProcessAffinityMask параметра . |
BasePriority | Содержит приоритет процесса, как описано в разделе Приоритеты планирования. |
UniqueProcessId | Может быть приведен к DWORD и содержит уникальный идентификатор для этого процесса. Для получения этих сведений рекомендуется использовать функцию GetProcessId . |
InheritedFromUniqueProcessId | Может быть приведен к DWORD и содержит уникальный идентификатор родительского процесса. |
ULONG_PTR
Если параметр ProcessInformationClass имеет значение ProcessWow64Information, буфер, на который указывает параметр ProcessInformation , должен быть достаточно большим, чтобы вместить ULONG_PTR. Если это ненулевое значение, процесс выполняется в среде WOW64. В противном случае процесс не выполняется в среде WOW64.
Используйте функцию IsWow64Process2 , чтобы определить, выполняется ли процесс в среде WOW64.
UNICODE_STRING
Если параметр ProcessInformationClass имеет значение ProcessImageFileName, буфер, на который указывает параметр ProcessInformation , должен быть достаточно большим, чтобы вместить UNICODE_STRING структуру, а также саму строку. Строка, хранящейся в элементе Buffer , является именем файла изображения.
Если буфер слишком мал, функция завершается сбоем с кодом ошибки STATUS_INFO_LENGTH_MISMATCH и параметру ReturnLength присваивается требуемый размер буфера.
[in] ProcessInformationLength
Размер буфера, на который указывает параметр ProcessInformation , в байтах.
[out, optional] ReturnLength
Указатель на переменную, в которой функция возвращает размер запрошенной информации. Если функция выполнена успешно, это размер сведений, записанных в буфер, на который указывает параметр ProcessInformation (если буфер был слишком мал, это минимальный размер буфера, необходимый для успешного получения информации).
Возвращаемое значение
Функция возвращает код успеха или ошибки NTSTATUS.
Формы и важность кодов ошибок NTSTATUS перечислены в файле заголовка Ntstatus.h, доступном в DDK. Дополнительные сведения см. в статье Ошибки ведения журнала .
Комментарии
Функция NtQueryInformationProcess и возвращаемые ею структуры являются внутренними для операционной системы и могут изменяться из одного выпуска Windows в другой. Для обеспечения совместимости приложения лучше использовать общедоступные функции, упомянутые в описании параметра ProcessInformationClass .
Если вы используете NtQueryInformationProcess, получите доступ к функции через динамическое связывание во время выполнения. Это дает коду возможность корректно реагировать, если функция была изменена или удалена из операционной системы. Однако изменения подписи могут быть недоступны для обнаружения.
У этой функции нет связанной библиотеки импорта. Для динамической связи с Ntdll.dll необходимо использовать функции LoadLibrary и GetProcAddress .
Требования
Требование | Значение |
---|---|
Целевая платформа | Windows |
Header | winternl.h |
Библиотека | ntdll.lib |
DLL | ntdll.dll |