次の方法で共有


ZwOpenKey 関数 (wdm.h)

ZwOpenKey ルーチンは、既存のレジストリ キーを開きます。

構文

NTSYSAPI NTSTATUS ZwOpenKey(
  [out] PHANDLE            KeyHandle,
  [in]  ACCESS_MASK        DesiredAccess,
  [in]  POBJECT_ATTRIBUTES ObjectAttributes
);

パラメーター

[out] KeyHandle

キーへのハンドルを受け取る HANDLE 変数へのポインター。

[in] DesiredAccess

オブジェクトへの要求されたアクセスを決定する ACCESS_MASK 値を指定します。 詳細については、ZwCreateKeyDesiredAccess パラメーターを参照してください。

[in] ObjectAttributes

オブジェクト名とその他の属性を指定する OBJECT_ATTRIBUTES 構造体へのポインター。 InitializeObjectAttributes を使用して、この構造体を初期化します。 呼び出し元がシステム スレッド コンテキストで実行されていない場合は、 InitializeObjectAttributes を呼び出すときにOBJ_KERNEL_HANDLE属性を設定する必要があります。

戻り値

指定したキーが開かれた場合、ZwOpenKey はSTATUS_SUCCESSを返します。 それ以外の場合は、次のようなエラー状態を返すことができます。

  • STATUS_INVALID_HANDLE

  • STATUS_ACCESS_DENIED

注釈

ZwOpenKey は、呼び出し元がレジストリ キーを操作するために使用できるハンドルを提供します。 ルーチンは、 ZwCreateKey の機能のサブセットを提供します。 詳細については、「 ドライバーでのレジストリの使用」を参照してください。

指定したキーが存在しない場合、 ZwOpenKey はエラー状態を返し、キー ハンドルを返しません。

KeyHandle が指すハンドルが使用されなくなったら、ドライバーは ZwClose を呼び出して閉じる必要があります。

ZwOpenKey は、ObjectAttributes パラメーターが指す構造体のセキュリティ情報を無視します。

呼び出し元がシステム スレッド コンテキストで実行されていない場合は、作成するハンドルがプライベート ハンドルであることを確認する必要があります。 それ以外の場合は、ドライバーが実行されているコンテキスト内のプロセスによってハンドルにアクセスできます。 詳細については、「 オブジェクト ハンドル」を参照してください。

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

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

要件

要件
対象プラットフォーム ユニバーサル
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)ZwRegistryOpen(storport)、ZwRegistryOpen(storport)、 ZwRegistryOpen(wdm)

こちらもご覧ください

ACCESS_MASK

InitializeObjectAttributes

ZwCreateKey

ZwDeleteKey

ZwEnumerateKey

ZwEnumerateValueKey

ZwFlushKey

ZwQueryKey

ZwQueryValueKey

ZwSetValueKey