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 di pagine su cui eseguire una query. Questo valore viene arrotondato per difetto al limite successivo host-page-address.
[in] MemoryInformationClass
Classe di informazioni sulla memoria su cui recuperare le informazioni. Attualmente, l'unico valore supportato MEMORY_INFORMATION_CLASS è 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 a cui punta MemoryInformation .
[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 è maggiore di MemoryInformationLength. |
STATUS_INVALID_INFO_CLASS | Il parametro MemoryInformationClass specificato non è valido. |
STATUS_INVALID_PARAMETER | L'indirizzo di base specificato non rientra nell'intervallo di indirizzi accessibili. |
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 a quando non viene analizzato l'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 ha 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 singole dimensioni saranno in *MemoryInformation.RegionSize e 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 versioni 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 .For more information about the Nt Xxx and Zw versions of the Native System Services Routines.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 |
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |