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
ProcessBasicInformation
0
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.

ProcessDebugPort
7
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 .

ProcessWow64Information
26
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.

ProcessImageFileName
27
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.

ProcessBreakOnTermination
29
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.
 
ProcessTelemetryIdInformation
64

Recupera un valor de PROCESS_TELEMETRY_ID_INFORMATION_TYPE que contiene metadatos sobre un proceso.

ProcessSubsystemInformation
75
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

Consulte también

CheckRemoteDebuggerPresent

GetProcessId

IsDebuggerPresent

IsWow64Process

IsWow64Process2