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 値を指定します。 詳細については、ZwCreateKey の DesiredAccess パラメーターを参照してください。
[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) |