ZwEnumerateValueKey 関数 (wdm.h)

ZwEnumerateValueKey ルーチンは、開いているキーの値エントリに関する情報を取得します。

構文

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

パラメーター

[in] KeyHandle

値エントリを列挙するレジストリ キーを処理します。 ZwCreateKey または ZwOpenKey の呼び出しが成功するとこのハンドルが作成されます。

[in] Index

値情報が必要なサブキーの 0 から始まるインデックス。

[in] KeyValueInformationClass

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

[out, optional] KeyValueInformation

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

[in] Length

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

[out] ResultLength

値情報のサイズをバイト単位で受け取る変数へのポインター。 このルーチンがSTATUS_SUCCESSを返す場合、変数は返されるデータの量を示します。 このルーチンがSTATUS_BUFFER_OVERFLOWまたはSTATUS_BUFFER_TOO_SMALLを返す場合、変数は値情報を保持するために必要なバッファー サイズを示します。

戻り値

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

リターン コード 説明
STATUS_BUFFER_OVERFLOW 指定されたバッファーが小さすぎて、部分的なデータのみがバッファーに書き込まれた。 *ResultLength は、要求された情報を保持するために必要な最小サイズに設定されます。
STATUS_BUFFER_TOO_SMALL 指定されたバッファーが小さすぎて、バッファーにデータが書き込まれなくなりました。 *ResultLength は、要求された情報を保持するために必要な最小サイズに設定されます。
STATUS_INVALID_PARAMETER KeyInformationClass パラメーターが有効なKEY_VALUE_INFORMATION_CLASS値ではありません。
STATUS_NO_MORE_ENTRIES KeyHandle で指定されたレジストリ キーのインデックス値が範囲外です。 たとえば、キーに n 個 のサブキーがある場合、 n-1 より大きい値の場合、ルーチンはSTATUS_NO_MORE_ENTRIESを返します。

注釈

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

Index は、単に値エントリを持つサブキーの中から選択する方法です。 同じ Index を使用して ZwEnumerateValueKey を 2 回呼び出すと、同じ結果が返される保証はありません。

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

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

カーネル モード ドライバーからの呼び出しの場合、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_VALUE_BASIC_INFORMATION

KEY_VALUE_FULL_INFORMATION

KEY_VALUE_PARTIAL_INFORMATION

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

ZwClose

ZwCreateKey

ZwOpenKey

ZwQueryValueKey