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 ドライバーも DesiredAccessKEY_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_READKEY_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を返します。 それ以外の場合、メソッドは次のいずれかの値を返す可能性があります。

リターン コード 説明
STATUS_INVALID_DEVICE_REQUEST

WdfFdoInitOpenRegistryKey は IRQL = PASSIVE_LEVELで呼び出されませんでした。

STATUS_INVALID_PARAMETER
無効なパラメーターが指定されたか、ドライバーが EvtDriverDeviceAdd コールバック関数からWDFDEVICE_INIT構造体を取得しませんでした。 UMDF の場合、この戻り値はアクセス権が不十分であることを示している可能性があります。
STATUS_INSUFFICIENT_RESOURCES
レジストリ キー オブジェクトを割り当てませんでした。
STATUS_OBJECT_NAME_NOT_FOUND
指定されたレジストリ キーが存在しません。
 

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)

こちらもご覧ください

WdfDeviceOpenRegistryKey

WdfDriverOpenParametersRegistryKey