NtQueryVirtualMemory 関数 (ntifs.h)
NtQueryVirtualMemory ルーチンは、指定されたプロセスの仮想アドレス空間内のページ領域の状態、保護、および種類を決定します。
構文
__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
);
パラメーター
[in] ProcessHandle
クエリ対象のページが存在するコンテキスト内のプロセスを処理します。 NtCurrentProcess マクロを使用して、現在のプロセスを指定します。
[in, optional] BaseAddress
クエリを実行するページの領域のベース アドレス。 この値は、次のホスト ページ アドレス境界に切り捨てられます。
[in] MemoryInformationClass
情報を取得するメモリ情報クラス。 現在、サポートされている MEMORY_INFORMATION_CLASS 値は MemoryBasicInformation のみです。
[out] MemoryInformation
指定した情報を受け取るバッファーへのポインター。 バッファーの形式と内容は、 MemoryInformationClass パラメーターで指定された情報クラスによって異なります。 MemoryBasicInformation の値が MemoryInformationClass に渡されると、MemoryInformation パラメーターの値はMEMORY_BASIC_INFORMATION構造体になります。
[in] MemoryInformationLength
MemoryInformation が指すバッファーの長さをバイト単位で指定します。
[out, optional] ReturnLength
省略可能なポインター。指定した場合、 MemoryInformation バッファーに配置されたバイト数を受け取ります。
戻り値
呼び出しが成功した場合は、STATUS_SUCCESSを返します。 呼び出しが失敗した場合、考えられるエラー コードは次のとおりです。
リターン コード | 説明 |
---|---|
STATUS_ACCESS_DENIED | 呼び出し元には、要求されたアクションを実行するための十分なアクセス権がありませんでした。 |
STATUS_ACCESS_VIOLATION | 指定したベース アドレスが無効な仮想アドレスです。 |
STATUS_INFO_LENGTH_MISMATCH | MemoryInformation バッファーが MemoryInformationLength より大きい。 |
STATUS_INVALID_INFO_CLASS | 指定された MemoryInformationClass パラメーターが無効です。 |
STATUS_INVALID_PARAMETER | 指定したベース アドレスが、アクセス可能なアドレスの範囲外です。 |
注釈
ZwQueryVirtualMemory は、領域内の最初のページの状態を決定し、ページの範囲全体がスキャンされるまで、または一致しない属性のセットが検出されるまで、プロセス アドレス マップ内の後続のエントリをベース アドレスから上方向にスキャンします。 リージョン属性、一致する属性を持つページの領域の長さ、および適切な状態値が返されます。
ページの領域全体に一致する属性のセットがない場合、1 つのアドレス予約内のサブリージョンは個別に返されます。 これらは同じ *MemoryInformation.AllocationBase 値を持ち、個々のサイズは *MemoryInformation.RegionSize に、アドレス予約の合計サイズは、特定の *MemoryInformation.AllocationBase 値に関連付けられているすべての *MemoryInformation.RegionSize 値を合計することで取得できます。
NtQueryVirtualMemory と ZwQueryVirtualMemory は、同じ Windows ネイティブ システム サービス ルーチンの 2 つのバージョンです。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 |
対象プラットフォーム | ユニバーサル |
Header | ntifs.h |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |