ZwQueryKey 関数 (wdm.h)

ZwQueryKey ルーチンは、レジストリ キーのクラスと、そのサブキーの数とサイズに関する情報を提供します。

構文

NTSYSAPI NTSTATUS ZwQueryKey(
  [in]            HANDLE                KeyHandle,
  [in]            KEY_INFORMATION_CLASS KeyInformationClass,
  [out, optional] PVOID                 KeyInformation,
  [in]            ULONG                 Length,
  [out]           PULONG                ResultLength
);

パラメーター

[in] KeyHandle

レジストリ キーを処理して、情報を取得します。 このハンドルは、 ZwCreateKey または ZwOpenKey を正常に呼び出すことによって作成 されます

[in] KeyInformationClass

KeyInformationバッファーで返される情報の種類を決定するKEY_INFORMATION_CLASS値を指定します。

[out, optional] KeyInformation

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

[in] Length

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

[out] ResultLength

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

戻り値

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

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

注釈

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

KeyInformationClass が KeyNameInformation または KeyHandleTagsInformation の場合、KEY_QUERY_VALUE要件は適用されません。

ZwQueryKey を使用すると、キーの値エントリまたはサブキー名の最大サイズやサブキーの数など、レジストリ データを保持するバッファーを割り当てるために使用できる情報を取得できます。 たとえば、 ZwQueryKey を呼び出し、返された情報を使用してサブキーのバッファーを割り当て、 ZwEnumerateKey を 呼び出してサブキーの名前を取得し、その名前を RtlXxxレジストリ ルーチンに渡すことができます。

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

この関数の呼び出しがユーザー モードで発生する場合は、"ZwQueryKey" ではなく "NtQueryKey" という名前を使用する必要があります。

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

要件

要件
対象プラットフォーム ユニバーサル
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_BASIC_INFORMATION

KEY_CACHED_INFORMATION

KEY_FULL_INFORMATION

KEY_INFORMATION_CLASS

KEY_NAME_INFORMATION

KEY_NODE_INFORMATION

KEY_VIRTUALIZATION_INFORMATION

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

ZwClose

ZwEnumerateKey

ZwOpenKey