Función NtQueryInformationProcess (winternl.h)
[NtQueryInformationProcess puede modificarse o no estar disponible en versiones futuras de Windows. Las aplicaciones deben usar las funciones alternativas enumeradas en este tema.
Recupera información sobre el proceso especificado.
Sintaxis
__kernel_entry NTSTATUS NtQueryInformationProcess(
[in] HANDLE ProcessHandle,
[in] PROCESSINFOCLASS ProcessInformationClass,
[out] PVOID ProcessInformation,
[in] ULONG ProcessInformationLength,
[out, optional] PULONG ReturnLength
);
Parámetros
[in] ProcessHandle
Identificador del proceso para el que se va a recuperar la información.
[in] ProcessInformationClass
Tipo de información de proceso que se va a recuperar. Este parámetro puede ser uno de los siguientes valores de la enumeración PROCESSINFOCLASS .
Valor | Significado |
---|---|
|
Recupera un puntero a una estructura PEB que se puede usar para determinar si se está depurando el proceso especificado y un valor único utilizado por el sistema para identificar el proceso especificado.
Use las funciones CheckRemoteDebuggerPresent y GetProcessId para obtener esta información. |
|
Recupera un valor de DWORD_PTR que es el número de puerto del depurador para el proceso. Un valor distinto de cero indica que el proceso se está ejecutando bajo el control de un depurador de anillo 3.
Use la función CheckRemoteDebuggerPresent o IsDebuggerPresent . |
|
Determina si el proceso se ejecuta en el entorno WOW64 (WOW64 es el emulador x86 que permite que las aplicaciones basadas en Win32 se ejecuten en Windows de 64 bits).
Use la función IsWow64Process2 para obtener esta información. |
|
Recupera un valor de UNICODE_STRING que contiene el nombre del archivo de imagen para el proceso.
Use la función QueryFullProcessImageName o GetProcessImageFileName para obtener esta información. |
|
Recupera un valor de ULONG que indica si el proceso se considera crítico.
Nota Este valor se puede usar a partir de Windows XP con SP3. A partir de Windows 8.1, se debe usar IsProcessCritical en su lugar.
|
|
Recupera un valor de PROCESS_TELEMETRY_ID_INFORMATION_TYPE que contiene metadatos sobre un proceso. |
|
Recupera un valor de SUBSYSTEM_INFORMATION_TYPE que indica el tipo de subsistema del proceso. El búfer al que apunta el parámetro ProcessInformation debe ser lo suficientemente grande como para contener una sola enumeración SUBSYSTEM_INFORMATION_TYPE . |
[out] ProcessInformation
Puntero a un búfer proporcionado por la aplicación que realiza la llamada en la que la función escribe la información solicitada. El tamaño de la información escrita varía según el tipo de datos del parámetro ProcessInformationClass :
PROCESS_BASIC_INFORMATION
Cuando el parámetro ProcessInformationClass es ProcessBasicInformation, el búfer al que apunta el parámetro ProcessInformation debe ser lo suficientemente grande como para contener una única estructura de PROCESS_BASIC_INFORMATION que tenga el siguiente diseño:
typedef struct _PROCESS_BASIC_INFORMATION {
NTSTATUS ExitStatus;
PPEB PebBaseAddress;
ULONG_PTR AffinityMask;
KPRIORITY BasePriority;
ULONG_PTR UniqueProcessId;
ULONG_PTR InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION;
Campo | Significado |
---|---|
ExitStatus | Contiene el mismo valor que devuelve GetExitCodeProcess . Sin embargo, el uso de GetExitCodeProcess es preferible para mayor claridad y seguridad. |
PebBaseAddress | Apunta a una estructura PEB . |
AffinityMask | Se puede convertir a un DWORD y contiene el mismo valor que GetProcessAffinityMask devuelve para el lpProcessAffinityMask parámetro . |
BasePriority | Contiene la prioridad del proceso como se describe en Programación de prioridades. |
UniqueProcessId | Se puede convertir a un DWORD y contiene un identificador único para este proceso. Se recomienda usar la función GetProcessId para recuperar esta información. |
InheritedFromUniqueProcessId | Se puede convertir a un DWORD y contiene un identificador único para el proceso primario. |
ULONG_PTR
Cuando el parámetro ProcessInformationClass es ProcessWow64Information, el búfer al que apunta el parámetro ProcessInformation debe ser lo suficientemente grande como para contener un ULONG_PTR. Si este valor es distinto de cero, el proceso se ejecuta en un entorno WOW64. De lo contrario, el proceso no se está ejecutando en un entorno WOW64.
Use la función IsWow64Process2 para determinar si un proceso se ejecuta en el entorno WOW64.
UNICODE_STRING
Cuando el parámetro ProcessInformationClass es ProcessImageFileName, el búfer al que apunta el parámetro ProcessInformation debe ser lo suficientemente grande como para contener una estructura de UNICODE_STRING , así como la propia cadena. La cadena almacenada en el miembro Buffer es el nombre del archivo de imagen.
Si el búfer es demasiado pequeño, se produce un error en la función con el código de error STATUS_INFO_LENGTH_MISMATCH y el parámetro ReturnLength se establece en el tamaño de búfer necesario.
[in] ProcessInformationLength
Tamaño del búfer al que apunta el parámetro ProcessInformation , en bytes.
[out, optional] ReturnLength
Puntero a una variable en la que la función devuelve el tamaño de la información solicitada. Si la función se realizó correctamente, este es el tamaño de la información escrita en el búfer al que apunta el parámetro ProcessInformation (si el búfer era demasiado pequeño, este es el tamaño mínimo del búfer necesario para recibir la información correctamente).
Valor devuelto
La función devuelve un código de error o correcto de NTSTATUS.
Los formularios y la importancia de los códigos de error NTSTATUS se enumeran en el archivo de encabezado Ntstatus.h disponible en el DDK. Consulte Errores de registro para obtener más detalles.
Comentarios
La función NtQueryInformationProcess y las estructuras que devuelve son internas para el sistema operativo y están sujetas a cambios de una versión de Windows a otra. Para mantener la compatibilidad de la aplicación, es mejor usar funciones públicas mencionadas en la descripción del parámetro ProcessInformationClass en su lugar.
Si usa NtQueryInformationProcess, acceda a la función mediante la vinculación dinámica en tiempo de ejecución. Esto ofrece al código la oportunidad de responder correctamente si la función se ha cambiado o quitado del sistema operativo. Sin embargo, es posible que los cambios de firma no sean detectables.
Esta función no tiene ninguna biblioteca de importación asociada. Debe usar las funciones LoadLibrary y GetProcAddress para vincular dinámicamente a Ntdll.dll.
Requisitos
Requisito | Value |
---|---|
Plataforma de destino | Windows |
Encabezado | winternl.h |
Library | ntdll.lib |
Archivo DLL | ntdll.dll |