ZwQueryValueKey 関数 (wdm.h)

ZwQueryValueKey ルーチンは、レジストリ キーの値エントリを返します。

構文

NTSYSAPI NTSTATUS ZwQueryValueKey(
  [in]            HANDLE                      KeyHandle,
  [in]            PUNICODE_STRING             ValueName,
  [in]            KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
  [out, optional] PVOID                       KeyValueInformation,
  [in]            ULONG                       Length,
  [out]           PULONG                      ResultLength
);

パラメーター

[in] KeyHandle

値エントリの読み取り元のキーを処理します。 このハンドルは、 ZwCreateKey または ZwOpenKey の正常な呼び出しによって作成 されます

[in] ValueName

データを取得する値エントリの名前へのポインター。

[in] KeyValueInformationClass

KeyValueInformation バッファーで返される情報の種類を決定するKEY_VALUE_INFORMATION_CLASS値。

[out, optional] KeyValueInformation

要求された情報を受信する呼び出し元によって割り当てられたバッファーへのポインター。

[in] Length

KeyValueInformation バッファーのサイズをバイト単位で指定します。

[out] ResultLength

キー情報のサイズ (バイト単位) を受け取る変数へのポインター。 ZwQueryValueKey ルーチンがSTATUS_SUCCESSを返す場合、呼び出し元はこの変数の値を使用して、返されるデータの量を決定できます。 ルーチンがSTATUS_BUFFER_OVERFLOWまたはSTATUS_BUFFER_TOO_SMALLを返す場合、呼び出し元はこの変数の値を使用して、キー情報を保持するために必要なバッファーのサイズを決定できます。

戻り値

ZwQueryValueKey は 、成功した場合はSTATUS_SUCCESS、失敗した場合は適切なエラー コードを返します。 考えられるエラー コードの値は次のとおりです。

リターン コード 説明
STATUS_OBJECT_NAME_NOT_FOUND レジストリ値が使用できませんでした。
STATUS_BUFFER_OVERFLOW 指定されたバッファーが小さすぎて、部分的なデータのみがバッファーに書き込まれた。 ResultLength は、要求された情報を保持するために必要な最小サイズに設定されます。
STATUS_BUFFER_TOO_SMALL 指定されたバッファーが小さすぎて、バッファーにデータが書き込まれなかった。 ResultLength は、要求された情報を保持するために必要な最小サイズに設定されます。
STATUS_INVALID_PARAMETER KeyInformationClass パラメーターが有効なKEY_VALUE_INFORMATION_CLASS値ではありません。

注釈

ZwQueryValueKey に渡される KeyHandle は、KEY_QUERY_VALUEアクセス権で開かれている必要があります。 これを行うには、 DesiredAccess パラメーターとして KEY_QUERY_VALUE、KEY_READ、または KEY_ALL_ACCESSを ZwCreateKey または ZwOpenKey に渡します。

レジストリ キーの操作の詳細については、「 ドライバーでのレジストリの使用」を参照してください。

この関数の呼び出しがユーザー モードで行われる場合は、"ZwQueryValueKey" ではなく "NtQueryValueKey" という名前を使用する必要があります。 カーネル モード ドライバーからの呼び出しの場合、Windows ネイティブ システム サービス ルーチンの NtXxx および ZwXxx バージョンは、入力パラメーターを処理および解釈する方法で動作が異なる場合があります。 ルーチンの NtXxx バージョンと ZwXxx バージョンの間の関係の詳細については、「ネイティブ システム サービス ルーチンの Nt バージョンと Zw バージョンの使用」を参照してください。

要件

要件
対象プラットフォーム ユニバーサル
Header wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI コンプライアンス規則 HwStorPortProhibitedDDIs(storport)IrqlZwPassive(wdm)PowerIrpDDis(wdm)ZwRegistryCreate(storport)、ZwRegistryCreate(storport)、 ZwRegistryCreate(wdm)ZwRegistryOpen(storport)、ZwRegistryOpen(storport)、 ZwRegistryOpen(wdm)

こちらもご覧ください

KEY_VALUE_BASIC_INFORMATION

KEY_VALUE_FULL_INFORMATION

KEY_VALUE_INFORMATION_CLASS

KEY_VALUE_PARTIAL_INFORMATION

Nt および Zw バージョンのネイティブ システム サービス ルーチンの使用

ZwCreateKey

ZwEnumerateValueKey

ZwOpenKey