ZwOpenKeyEx 関数 (wdm.h)
ZwOpenKeyEx ルーチンは、既存のレジストリ キーを開きます。
構文
NTSYSAPI NTSTATUS ZwOpenKeyEx(
[out] PHANDLE KeyHandle,
[in] ACCESS_MASK DesiredAccess,
[in] POBJECT_ATTRIBUTES ObjectAttributes,
[in] ULONG OpenOptions
);
パラメーター
[out] KeyHandle
ルーチンがキーにハンドルを書き込む HANDLE 変数へのポインター。
[in] DesiredAccess
呼び出し元が要求するキーへのアクセスの種類を指定します。 このパラメーターは 、ACCESS_MASK 値です。 詳細については、ZwCreateKey ルーチンの DesiredAccess パラメーターの説明を参照してください。
[in] ObjectAttributes
開いているキーのオブジェクト属性へのポインター。 このパラメーターは、InitializeObjectAttributes ルーチンによって以前に初期化されている必要があるOBJECT_ATTRIBUTES構造体を指します。 呼び出し元は、InitializeObjectAttributes の呼び出しで、レジストリ キーの名前を ObjectName パラメーターとして指定する必要があります。 呼び出し元がシステム スレッド コンテキストで実行されていない場合は、 InitializeObjectAttributes を呼び出すときにOBJ_KERNEL_HANDLE属性を設定する必要があります。
[in] OpenOptions
キーを開くときに適用するオプションを指定します。 このパラメーターを 0 に設定するか、次の 1 つ以上のREG_OPTION_XXX フラグ ビットのビットごとの OR に 設定します。
OpenOptions フラグ | 説明 |
---|---|
REG_OPTION_OPEN_LINK | キーはシンボリック リンクです。 このフラグは、デバイス ドライバーと中間ドライバーでは使用されません。 |
REG_OPTION_BACKUP_RESTORE | キーは、バックアップ操作と復元操作を許可する特別な特権で開く必要があります。 このフラグは、デバイス ドライバーと中間ドライバーでは使用されません。 |
戻り値
ZwOpenKeyEx は、呼び出しがキーの開きに成功した場合にSTATUS_SUCCESSを返します。 考えられるエラーの戻り値は次のとおりです。
リターン コード | 説明 |
---|---|
|
OpenOptions パラメーターは無効なオプションを指定します。 |
|
オブジェクト属性のレジストリ パスが無効です。 |
|
オブジェクト属性のレジストリ キー名が見つかりませんでした。 |
|
名前付きレジストリ キーはシンボリック リンクですが、REG_OPTION_OPEN_LINK フラグ ビットは OpenOptions では設定されません。 |
|
呼び出し元には、名前付きレジストリ キーのハンドルを開くために必要なアクセス権がありませんでした。 |
|
メモリ割り当て操作が失敗しました。 |
注釈
このルーチンは、呼び出し元がレジストリ キーにアクセスできるハンドルを提供します。 指定したキーが存在しない場合、ルーチンはエラー状態値を返し、キー ハンドルを指定しません。
ZwOpenKey ルーチンは ZwOpenKeyEx に似ていますが、OpenOptions パラメーターは受け入れられません。 ZwOpenKeyEx の OpenOptions パラメーターを使用すると、呼び出し元はシンボリック リンクであるキーを開くか、バックアップおよび復元操作用のキーを開くことができます。 OpenOptions = 0 の ZwOpenKeyEx の呼び出しは、ZwOpenKey の呼び出しと同じです。
KeyHandle が指すハンドルが使用されなくなったら、ドライバーは ZwClose を呼び出して閉じる必要があります。
ZwOpenKeyEx は、 ObjectAttributes パラメーターが指す構造体のセキュリティ情報を無視します。
カーネル モード呼び出し元がシステム スレッド コンテキストで実行されていない場合は、作成するハンドルがカーネル ハンドルであることを確認する必要があります。 それ以外の場合は、ドライバーが実行されているコンテキスト内のプロセスによってハンドルにアクセスできます。 詳細については、「 オブジェクト ハンドル」を参照してください。
カーネル モードでのレジストリ キーの操作の詳細については、「 ドライバーでのレジストリの使用」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 7 以降のバージョンの Windows で使用できます。 |
対象プラットフォーム | ユニバーサル |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
Library | NtosKrnl.lib |
[DLL] | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |