ZwQueryVirtualMemory 関数 (ntifs.h)
ZwQueryVirtualMemory ルーチンは、サブジェクト プロセスの仮想アドレス空間内のページの領域の状態、保護、および種類を決定します。
構文
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
);
パラメーター
[in] ProcessHandle
クエリ対象のページが存在するコンテキスト内のプロセスのハンドル。 ZwCurrentProcess マクロを使用して、現在のプロセスを指定します。
[in, optional] BaseAddress
クエリを実行するページの領域のベース アドレス。 この値は、次のホスト ページ アドレス境界に切り捨てられます。
[in] MemoryInformationClass
情報を取得するメモリ情報クラス。 現在、サポートされている唯一の
[out] MemoryInformation
指定した情報を受け取るバッファーへのポインター。 バッファーの形式と内容は、MemoryInformationClass パラメーターで指定された指定された情報クラスによって異なります。 MemoryBasicInformation
[in] MemoryInformationLength
メモリ情報バッファーの長さをバイト単位で指定します。
[out, optional] ReturnLength
省略可能なポインター。指定した場合は、メモリ情報バッファーに配置されたバイト数を受け取ります。
戻り値
呼び出しが成功した場合にSTATUS_SUCCESSを返します。 呼び出しが失敗した場合、考えられるエラー コードは次のとおりです。
リターン コード | 形容 |
---|---|
STATUS_INVALID_PARAMETER | 指定したベース アドレスが、アクセス可能なアドレスの範囲外です。 |
STATUS_ACCESS_DENIED | 呼び出し元には、要求されたアクションを実行するための十分なアクセス権がありませんでした。 |
STATUS_INFO_LENGTH_MISMATCH | MemoryInformation バッファーが MemoryInformationLength より大きい。 |
STATUS_INVALID_INFO_CLASS | MemoryBasicInformation 以外の値が、MemoryInformationClass パラメーターに渡されました。 |
備考
ZwQueryVirtualMemory は、リージョン内の最初のページの状態を決定し、ページの範囲全体がスキャンされるまで、または一致しない属性のセットが見つかるまで、ベース アドレスからプロセス アドレス マップ内の後続のエントリをスキャンします。 リージョン属性、一致する属性を持つページの領域の長さ、および適切な状態値が返されます。
ページの領域全体に一致する属性のセットがない場合は、ReturnLength パラメーター値を使用して、スキャンされなかったページの領域のアドレスと長さを計算できます。
カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx**** および ZwXxx**** バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx と ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt および Zw バージョンの使用 を参照してください。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 10 |
ターゲット プラットフォーム の |
万国 |
ヘッダー | ntifs.h |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |