WdfFdoInitOpenRegistryKey 関数 (wdffdo.h)
[KMDF と UMDF に適用]
WdfFdoInitOpenRegistryKey メソッドは、レジストリでデバイスのハードウェア キーまたはドライバーのソフトウェア キーを開き、レジストリ キーを表すフレームワーク レジストリ キー オブジェクトを作成します。
構文
NTSTATUS WdfFdoInitOpenRegistryKey(
[in] PWDFDEVICE_INIT DeviceInit,
[in] ULONG DeviceInstanceKeyType,
[in] ACCESS_MASK DesiredAccess,
[in, optional] PWDF_OBJECT_ATTRIBUTES KeyAttributes,
[out] WDFKEY *Key
);
パラメーター
[in] DeviceInit
ドライバーが EvtDriverDeviceAdd コールバック関数から取得したWDFDEVICE_INIT構造体へのポインター。
[in] DeviceInstanceKeyType
開くキーまたはサブキーを指定します。
注意
UMDF では、サブキーの作成はサポートされていません。
これは、次のフラグ ( Wdm.h で定義されている) のビットごとの OR です。
DeviceInstanceKeyType フラグ | 意味 | フレームワーク |
---|---|---|
PLUGPLAY_REGKEY_DEVICE | デバイスのハードウェア キーを開きます。 | KMDF/UMDF |
PLUGPLAY_REGKEY_DRIVER | ドライバーのソフトウェア キーを開きます。 このフラグを設定する UMDF ドライバーも DesiredAccess を KEY_READに設定する必要があります。 それ以外の場合、このメソッドは STATUS_ACCESS_DENIEDを返します。 | KMDF/UMDF |
PLUGPLAY_REGKEY_CURRENT_HWPROFILE | KMDF ドライバーは、このフラグを使用して、現在のハードウェア プロファイルにあるハードウェアまたはソフトウェア キーのコピーを開きます。 | KMDF |
PLUGPLAY_REGKEY_DRIVER |WDF_REGKEY_DRIVER_SUBKEY | UMDF ドライバーは、これらのフラグを一緒に使用して、読み取り/書き込みアクセス用にドライバーのソフトウェア キーの ServiceName サブキーを開きます。 | UMDF |
PLUGPLAY_REGKEY_DEVICE |WDF_REGKEY_DEVICE_SUBKEY | 同様に、UMDF ドライバーはこれらのフラグを使用して、読み取り/書き込みアクセス用にデバイスのハードウェア キーの ServiceName サブキーを開きます。 | UMDF |
[in] DesiredAccess
ドライバーが指定したレジストリ キーに対して要求しているアクセス権を指定する、 ACCESS_MASK型指定された値。
KMDF ドライバーは通常、 KEY_READ、 KEY_WRITE、またはKEY_READを要求します 。 |KEY_WRITE。
UMDF ドライバーを作成する場合は、次の表を使用します。
DeviceInstanceKeyType | DesiredAccess |
---|---|
PLUGPLAY_REGKEY_DEVICE | KEY_READ |
PLUGPLAY_REGKEY_DEVICE |WDF_REGKEY_DEVICE_SUBKEY | KEY_READ または KEY_READ |KEY_SET_VALUE |
PLUGPLAY_REGKEY_DRIVER | KEY_READ |
PLUGPLAY_REGKEY_DRIVER |WDF_REGKEY_DRIVER_SUBKEY | KEY_READ または KEY_READ |KEY_SET_VALUE |
ベスト プラクティスとして、ドライバーに必要なアクセスの種類のみを要求します。
[in, optional] KeyAttributes
新しいレジストリ キー オブジェクトのドライバー指定の属性を含む WDF_OBJECT_ATTRIBUTES 構造体へのポインター。 このパラメーターは省略可能であり、WDF_NO_OBJECT_ATTRIBUTESできます。
[out] Key
新しいレジストリ キー オブジェクトへのハンドルを受け取る場所へのポインター。
戻り値
操作が成功した場合、WdfFdoInitOpenRegistryKey はSTATUS_SUCCESSを返します。 それ以外の場合、メソッドは次のいずれかの値を返す可能性があります。
リターン コード | 説明 |
---|---|
|
WdfFdoInitOpenRegistryKey は IRQL = PASSIVE_LEVELで呼び出されませんでした。 |
|
無効なパラメーターが指定されたか、ドライバーが EvtDriverDeviceAdd コールバック関数からWDFDEVICE_INIT構造体を取得しませんでした。 UMDF の場合、この戻り値はアクセス権が不十分であることを示している可能性があります。 |
|
レジストリ キー オブジェクトを割り当てませんでした。 |
|
指定されたレジストリ キーが存在しません。 |
WdfFdoInitOpenRegistryKey メソッドが返す可能性があるその他の戻り値の一覧については、「フレームワーク オブジェクト作成エラー」を参照してください。
メソッドは、他の NTSTATUS 値を返す場合もあります。
注釈
ドライバーは、WdfDeviceCreate を呼び出す前に WdfFdoInitOpenRegistryKey を呼び出す必要があります。 WdfDeviceCreate の呼び出しの詳細については、「フレームワーク デバイス オブジェクトの作成」を参照してください。
WdfFdoInitOpenRegistryKey メソッドの詳細については、「関数ドライバーでのデバイス オブジェクトの作成」を参照してください。
レジストリ、ハードウェアおよびソフトウェア キー、およびレジストリ オブジェクトの詳細については、「 Framework-Based ドライバーでのレジストリの使用」を参照してください。
例
次のコード例では、読み取りアクセス権を持つデバイスのハードウェア キーを開きます。
WDFKEY key;
NTSTATUS status;
status = WdfFdoInitOpenRegistryKey(
DeviceInit,
PLUGPLAY_REGKEY_DEVICE,
GENERIC_READ,
WDF_NO_OBJECT_ATTRIBUTES,
&key
);
if (!NT_SUCCESS(status)) {
return status;
}
要件
要件 | 値 |
---|---|
対象プラットフォーム | ユニバーサル |
最小 KMDF バージョン | 1.0 |
最小 UMDF バージョン | 2.0 |
Header | wdffdo.h (Wdf.h を含む) |
Library | Wdf01000.sys (KMDF);WUDFx02000.dll (UMDF) |
IRQL | PASSIVE_LEVEL |
DDI コンプライアンス規則 | DeviceInitAPI(kmdf)、 DriverCreate(kmdf)、 KmdfIrql(kmdf)、 KmdfIrql2(kmdf)、KmdfIrqlExplicit(kmdf) |