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 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 da eseguire. Usare la macro ZwCurrentProcess per specificare il processo corrente.
[in, optional] BaseAddress
Indirizzo di base dell'area delle pagine da eseguire query. Questo valore viene arrotondato fino al limite dell'indirizzo della pagina host successivo.
[in] MemoryInformationClass
Classe di informazioni sulla memoria su cui recuperare 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 ha esito negativo, 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 . |
Commenti
ZwQueryVirtualMemory determina lo stato della prima pagina all'interno dell'area e quindi analizza le voci successive nella mappa degli indirizzi del processo dall'indirizzo di base verso l'alto fino all'intero intervallo di pagine o fino a quando non viene rilevato un set di attributi non corrispondente. Gli attributi dell'area, la lunghezza delle pagine con attributi corrispondenti e un valore di stato appropriato vengono restituiti.
Se l'intera area delle pagine non ha un set di attributi corrispondente, il valore del parametro ReturnLength può essere usato per calcolare l'indirizzo e la lunghezza dell'area delle pagine che non sono state analizzate.
NtQueryVirtualMemory e ZwQueryVirtualMemory sono due versioni della stessa routine di Windows Native System Services.
Per le chiamate dai driver in modalità kernel, le versioni NtXxx* e ZwXxx* di una routine di Windows Native System Services 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 Uso di nt e zw versioni delle routine di Servizi di sistema nativo.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 10 |
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |