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

情報を取得するメモリ情報クラス。 現在、サポートされている MEMORY_INFORMATION_CLASS 値は MemoryBasicInformation のみです。

[out] MemoryInformation

指定した情報を受け取るバッファーへのポインター。 バッファーの形式と内容は、 MemoryInformationClass パラメーターで指定された指定された情報クラスによって異なります。 MemoryBasicInformation の値が MemoryInformationClass に渡されると、MemoryInformation パラメーターの値はMEMORY_BASIC_INFORMATION構造体になります。

[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 パラメーター値を使用して、スキャンされなかったページの領域のアドレスと長さを計算できます。

NtQueryVirtualMemoryZwQueryVirtualMemory は、同じ Windows ネイティブ システム サービス ルーチンの 2 つのバージョンです。

カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx**** および ZwXxx**** バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョン間の関係の詳細については、「Using Nt and Zw Versions of the Native System Services Routines」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 10
対象プラットフォーム ユニバーサル
Header ntifs.h
Library NtosKrnl.lib
[DLL] NtosKrnl.exe

こちらもご覧ください

POWER_PLATFORM_INFORMATION