Funzione NtQueryVirtualMemory (ntifs.h)
La routine NtQueryVirtualMemory determina lo stato, la protezione e il tipo di un'area di pagine all'interno dello spazio indirizzi virtuale del processo specificato.
Sintassi
__kernel_entry NTSYSCALLAPI NTSTATUS NtQueryVirtualMemory(
[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 NtCurrentProcess 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 host-page-address successivo.
[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
[in] MemoryInformationLength
Specifica la lunghezza, in byte, del buffer a cui MemoryInformation punta.
[out, optional] ReturnLength
Puntatore facoltativo che, se specificato, riceve il numero di byte inseriti nel buffer MemoryInformation
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_ACCESS_DENIED | Il chiamante aveva diritti di accesso insufficienti per eseguire l'azione richiesta. |
STATUS_ACCESS_VIOLATION | L'indirizzo di base specificato è un indirizzo virtuale non valido. |
STATUS_INFO_LENGTH_MISMATCH | Il buffer MemoryInformation |
STATUS_INVALID_INFO_CLASS | Il parametro MemoryInformationClass specificato |
STATUS_INVALID_PARAMETER | L'indirizzo di base specificato non è compreso nell'intervallo di indirizzi accessibili. |
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, le aree secondarie all'interno di una prenotazione di indirizzi verranno restituite singolarmente. Avranno lo stesso valore *MemoryInformation.AllocationBase, le dimensioni individuali saranno in *MemoryInformation.RegionSizee le dimensioni totali della prenotazione degli indirizzi possono essere ottenute sommando tutti i valori *MemoryInformation.RegionSize associati a un determinato valore *MemoryInformation.AllocationBase.
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 NtXxx e ZwXxx versioni 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 Using Nt and Zw Versions of the Native System Services Routines.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 2000 |
piattaforma di destinazione | Universale |
intestazione |
ntifs.h |
libreria |
NtosKrnl.lib |
dll | NtosKrnl.exe |