Condividi tramite


Funzione NtQueryInformationProcess (winternl.h)

[NtQueryInformationProcess potrebbe essere modificato o non disponibile nelle versioni future di Windows. Le applicazioni devono usare le funzioni alternative elencate in questo argomento.

Recupera informazioni sul processo specificato.

Sintassi

__kernel_entry NTSTATUS NtQueryInformationProcess(
  [in]            HANDLE           ProcessHandle,
  [in]            PROCESSINFOCLASS ProcessInformationClass,
  [out]           PVOID            ProcessInformation,
  [in]            ULONG            ProcessInformationLength,
  [out, optional] PULONG           ReturnLength
);

Parametri

[in] ProcessHandle

Handle per il processo per cui recuperare le informazioni.

[in] ProcessInformationClass

Tipo di informazioni sul processo da recuperare. Questo parametro può essere uno dei valori seguenti dell'enumerazione PROCESSINFOCLASS .

Value Meaning
ProcessBasicInformation
0
Recupera un puntatore a una struttura PEB che può essere utilizzata per determinare se il processo specificato viene sottoposto a debug e un valore univoco utilizzato dal sistema per identificare il processo specificato.

Usare le funzioni CheckRemoteDebuggerPresent e GetProcessId per ottenere queste informazioni.

ProcessDebugPort
7
Recupera un valore DWORD_PTR che rappresenta il numero di porta del debugger per il processo. Un valore diverso da zero indica che il processo viene eseguito sotto il controllo di un debugger circolare 3.

Usare la funzione CheckRemoteDebuggerPresent o IsDebuggerPresent .

ProcessWow64Information
26
Determina se il processo è in esecuzione nell'ambiente WOW64 (WOW64 è l'emulatore x86 che consente l'esecuzione di applicazioni basate su Win32 in Windows a 64 bit).

Usare la funzione IsWow64Process2 per ottenere queste informazioni.

ProcessImageFileName
27
Recupera un valore UNICODE_STRING contenente il nome del file di immagine per il processo.

Usare la funzione QueryFullProcessImageName o GetProcessImageFileName per ottenere queste informazioni.

ProcessBreakOnTermination
29
Recupera un valore ULONG che indica se il processo è considerato critico.
Nota Questo valore può essere usato a partire da Windows XP con SP3. A partire da Windows 8.1, è consigliabile usare IsProcessCritical .
 
ProcessTelemetryIdInformation
64

Recupera un valore PROCESS_TELEMETRY_ID_INFORMATION_TYPE che contiene i metadati relativi a un processo.

ProcessSubsystemInformation
75
Recupera un valore SUBSYSTEM_INFORMATION_TYPE che indica il tipo di sottosistema del processo. Il buffer a cui punta il parametro ProcessInformation deve essere sufficientemente grande da contenere una singola enumerazione SUBSYSTEM_INFORMATION_TYPE .

[out] ProcessInformation

Puntatore a un buffer fornito dall'applicazione chiamante in cui la funzione scrive le informazioni richieste. Le dimensioni delle informazioni scritte variano a seconda del tipo di dati del parametro ProcessInformationClass :

PROCESS_BASIC_INFORMATION

Quando il parametro ProcessInformationClass è ProcessBasicInformation, il buffer a cui punta il parametro ProcessInformation deve essere sufficientemente grande da contenere una singola struttura PROCESS_BASIC_INFORMATION con il layout seguente:

typedef struct _PROCESS_BASIC_INFORMATION {
    NTSTATUS ExitStatus;
    PPEB PebBaseAddress;
    ULONG_PTR AffinityMask;
    KPRIORITY BasePriority;
    ULONG_PTR UniqueProcessId;
    ULONG_PTR InheritedFromUniqueProcessId;
} PROCESS_BASIC_INFORMATION;
Campo Meaning
ExitStatus Contiene lo stesso valore restituito da GetExitCodeProcess . Tuttavia, l'uso di GetExitCodeProcess è preferibile per maggiore chiarezza e sicurezza.
PebBaseAddress Punta a una struttura PEB .
AffinityMask Può essere eseguito il cast a una DWORD e contiene lo stesso valore restituito da GetProcessAffinityMask per il lpProcessAffinityMask parametro .
BasePriority Contiene la priorità del processo, come descritto in Priorità di pianificazione.
UniqueProcessId Può essere eseguito il cast a una DWORD e contiene un identificatore univoco per questo processo. Per recuperare queste informazioni, è consigliabile usare la funzione GetProcessId .
InheritedFromUniqueProcessId Può essere eseguito il cast a una DWORD e contiene un identificatore univoco per il processo padre.

ULONG_PTR

Quando il parametro ProcessInformationClass è ProcessWow64Information, il buffer a cui punta il parametro ProcessInformation deve essere sufficientemente grande da contenere un ULONG_PTR. Se questo valore è diverso da zero, il processo viene eseguito in un ambiente WOW64. In caso contrario, il processo non è in esecuzione in un ambiente WOW64.

Usare la funzione IsWow64Process2 per determinare se un processo è in esecuzione nell'ambiente WOW64.

UNICODE_STRING

Quando il parametro ProcessInformationClass è ProcessImageFileName, il buffer a cui punta il parametro ProcessInformation deve essere sufficientemente grande da contenere una struttura UNICODE_STRING e la stringa stessa. La stringa archiviata nel membro Buffer è il nome del file di immagine.

Se il buffer è troppo piccolo, la funzione ha esito negativo con il codice di errore STATUS_INFO_LENGTH_MISMATCH e il parametro ReturnLength viene impostato sulla dimensione del buffer richiesta.

[in] ProcessInformationLength

Dimensioni del buffer a cui punta il parametro ProcessInformation , in byte.

[out, optional] ReturnLength

Puntatore a una variabile in cui la funzione restituisce le dimensioni delle informazioni richieste. Se la funzione ha esito positivo, si tratta delle dimensioni delle informazioni scritte nel buffer a cui punta il parametro ProcessInformation (se il buffer era troppo piccolo, questa è la dimensione minima del buffer necessaria per ricevere correttamente le informazioni).

Valore restituito

La funzione restituisce un codice NTSTATUS riuscito o di errore.

I moduli e il significato dei codici di errore NTSTATUS sono elencati nel file di intestazione Ntstatus.h disponibile in DDK. Per altri dettagli, vedere Registrazione degli errori .

Osservazioni:

La funzione NtQueryInformationProcess e le strutture restituite sono interne al sistema operativo e soggette a modifiche da una versione di Windows a un'altra. Per mantenere la compatibilità dell'applicazione, è preferibile usare funzioni pubbliche indicate nella descrizione del parametro ProcessInformationClass .

Se si usa NtQueryInformationProcess, accedere alla funzione tramite il collegamento dinamico in fase di esecuzione. In questo modo il codice può rispondere normalmente se la funzione è stata modificata o rimossa dal sistema operativo. Le modifiche apportate alla firma, tuttavia, potrebbero non essere rilevabili.

Questa funzione non ha una libreria di importazione associata. È necessario usare le funzioni LoadLibrary e GetProcAddress per collegare dinamicamente a Ntdll.dll.

Requisiti

Requisito Value
Piattaforma di destinazione Windows
Header winternl.h
Library ntdll.lib
DLL ntdll.dll

Vedere anche

CheckRemoteDebuggerPresent

GetProcessId

IsDebuggerPresent

IsWow64Process

IsWow64Process2