Condividi tramite


Funzione ZwQueryVirtualMemory (ntifs.h)

La routine ZwQueryVirtualMemory determina lo stato, la protezione e il tipo di un'area di pagine all'interno dello spazio indirizzi virtuale del processo del soggetto.

Sintassi

NTSYSAPI NTSTATUS ZwQueryVirtualMemory(
  [in]            HANDLE                   ProcessHandle,
  [in, optional]  PVOID                    BaseAddress,
  [in]            MEMORY_INFORMATION_CLASS MemoryInformationClass,
  [out]           PVOID                    MemoryInformation,
  [in]            SIZE_T                   MemoryInformationLength,
  [out, optional] PSIZE_T                  ReturnLength
);

Parametri

[in] ProcessHandle

Handle per il processo nel cui contesto risiedono le pagine su cui eseguire query. Utilizzare la macro ZwCurrentProcess per specificare il processo corrente.

[in, optional] BaseAddress

Indirizzo di base dell'area delle pagine su cui eseguire una query. Questo valore viene arrotondato per difetto al limite successivo dell'indirizzo della pagina host.

[in] MemoryInformationClass

Classe di informazioni sulla memoria su cui recuperare le informazioni. Attualmente, l'unico valore MEMORY_INFORMATION_CLASS supportato è MemoryBasicInformation.

[out] MemoryInformation

Puntatore a un buffer che riceve le informazioni specificate. Il formato e il contenuto del buffer dipendono dalla classe di informazioni specificata nel parametro MemoryInformationClass . Quando il valore MemoryBasicInformation viene passato a MemoryInformationClass, il valore del parametro MemoryInformation è una struttura MEMORY_BASIC_INFORMATION.

[in] MemoryInformationLength

Specifica la lunghezza in byte del buffer delle informazioni sulla memoria.

[out, optional] ReturnLength

Puntatore facoltativo che, se specificato, riceve il numero di byte inseriti nel buffer delle informazioni sulla memoria.

Valore restituito

Restituisce STATUS_SUCCESS se la chiamata ha esito positivo. Se la chiamata non riesce, i codici di errore possibili includono quanto segue:

Codice restituito Descrizione
STATUS_INVALID_PARAMETER L'indirizzo di base specificato non è compreso nell'intervallo di indirizzi accessibili.
STATUS_ACCESS_DENIED Il chiamante aveva diritti di accesso insufficienti per eseguire l'azione richiesta.
STATUS_INFO_LENGTH_MISMATCH Il buffer MemoryInformation è maggiore di MemoryInformationLength.
STATUS_INVALID_INFO_CLASS Un valore diverso da MemoryBasicInformation è stato passato al parametro MemoryInformationClass .

Osservazioni

ZwQueryVirtualMemory determina lo stato della prima pagina all'interno dell'area e quindi analizza le voci successive nella mappa degli indirizzi del processo dall'alto fino a quando non viene eseguita l'analisi dell'intero intervallo di pagine o fino a quando non viene rilevata una pagina con un set di attributi non corrispondente. Gli attributi dell'area, la lunghezza dell'area delle pagine con attributi corrispondenti e vengono restituiti un valore di stato appropriato.

Se l'intera area delle pagine non dispone di un set di attributi corrispondente, è possibile usare il valore del parametro ReturnLength per calcolare l'indirizzo e la lunghezza dell'area delle pagine non analizzate.

ntQueryVirtualMemory e ZwQueryVirtualMemory sono due versioni della stessa routine di Servizi di sistema nativi di Windows.

Per le chiamate da driver in modalità kernel, le versioni nt NtXxx} e ZwXxx} di una routine di Servizi di sistema nativi di Windows possono comportarsi in modo diverso nel modo in cui gestiscono e interpretano i parametri di input. Per altre informazioni sulla relazione tra le versioni NtXxx e ZwXxx di una routine, vedere Using Nt and Zw Versions of the Native System Services Routines.

Fabbisogno

Requisito Valore
client minimo supportato Windows 10
piattaforma di destinazione Universale
intestazione ntifs.h
libreria NtosKrnl.lib
dll NtosKrnl.exe

Vedere anche

POWER_PLATFORM_INFORMATION