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

Vedi anche

MEMORY_BASIC_INFORMATION

MEMORY_INFORMATION_CLASS

POWER_PLATFORM_INFORMATION

ZwQueryVirtualMemory