Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
[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 .
| Ценность | Meaning |
|---|---|
|
Извлекает указатель на структуру 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;
| Поле | Meaning |
|---|---|
| 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 , а также саму строку. Строка, хранящуюся в элементе буфера , — это имя файла изображения.
Если буфер слишком мал, функция завершается ошибкой с кодом ошибки 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 .
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Виндоус |
| Header | winternl.h |
| Library | ntdll.lib |
| DLL | ntdll.dll |