UMDF 1.x ドライバーでのレジストリの使用

警告

UMDF 2 は UMDF の最新バージョンであり、UMDF 1 よりも優先されます。 すべての新しい UMDF ドライバーは、UMDF 2 を使用して記述する必要があります。 UMDF 1 には新機能が追加されておらず、Windows 10 の新しいバージョンでは UMDF 1 のサポートが制限されています。 ユニバーサル Windows ドライバーでは、UMDF 2 を使用する必要があります。

アーカイブされた UMDF 1 サンプルは、「Windows 11, バージョン 22H2 - 2022 年 5 月 ドライバーサンプルの更新」でご確認いただけます。

詳しくは、「UMDF の概要」をご覧ください。

UMDF ベースのドライバーは、プロパティ ストア オブジェクトのインターフェイスを使用して、レジストリの値の読み取りと書き込みを行うことができます。

UMDF ベースのドライバーは、4 種類のレジストリ キーにアクセスできます。 ドライバーは、これらのキーの下にサブキーと値を作成、読み取り、書き込むことができます。 UMDF ベースのドライバーでは、次の種類のレジストリ キーを使用できます。

  • ハードウェア キー

    PnP マネージャーは、デバイスごとにハードウェア キー、またはデバイス キーを作成し、デバイスの一意の識別情報を格納します。

    ドライバーは、ハードウェア キーの下にあるプロパティ値の一部を取得および変更できます。 格納される値の場所は、それらにアクセスするために使用する方法によって異なります。

    PropertyStore メソッドを使用して作成されたプロパティ値は、ハードウェア キーの下の \Device Parameters サブキーに格納されます。 これらのプロパティにアクセスするには、ドライバーでプロパティ ストア インターフェイスを取得する次のいずれかのメソッドを呼び出します。

    IWDFDevice::RetrieveDevicePropertyStore
    IWDFNamedPropertyStoreインターフェースへのポインターを取得します。

    IWDFDeviceInitialize::RetrieveDevicePropertyStore
    IWDFNamedPropertyStoreインターフェースへのポインターを取得します。

    IWDFPropertyStoreFactory::RetrieveDevicePropertyStore
    IWDFNamedPropertyStore2インターフェースへのポインターを取得します。 SubkeyPath パラメーターを使用して、\Device Parameters\DriverServiceName\subkeyなどのドライバーで作成されたサブキーの値を指定できます。

    ドライバーは \Device Parameters サブキー内の値への読み取り専用アクセス権を持ち、 \Device Parameters\WDF または \Device Parameters\WUDF にはアクセスできません。

    統合デバイス プロパティ モデルを使用して作成されたプロパティ値は、 \Properties サブキーのハードウェア キーの下に格納されます。

    これらのプロパティにアクセスするために、ドライバーは IWDFUnifiedPropertyStoreFactory::RetrieveUnifiedDevicePropertyStore を呼び出してプロパティ ストア インターフェイスを取得します。 その後、ドライバーは IWDFUnifiedPropertyStore インターフェイスを使用して、デバイス プロパティの現在の設定を変更および取得できます。

  • ソフトウェア キー

    レジストリには各ドライバーのソフトウェア キーが含まれているため、ドライバーのソフトウェア キーはドライバー キーとも呼ばれます。 レジストリにはすべてのデバイス クラスの一覧が含まれており、各ドライバーのソフトウェア キーはデバイス クラス エントリの下に存在します。 システムは、各ドライバーに関する情報をソフトウェア キーの下に格納します。

    ドライバーは、IWDFPropertyStoreFactory::RetrieveDevicePropertyStoreを呼び出し、ソフトウェア キーの値への読み取りまたは書き込みアクセスを取得できます。 ドライバーは、特定のデバイスに関連付けられていないドライバー固有の情報を読み書きできます。

  • デバイス インターフェース キー

    レジストリには、ドライバーが作成したすべてのデバイス インターフェイス クラスのためのキーが含まれています。 これらの各キーの下には、ドライバーが登録したデバイス インターフェイス クラスの各インスタンスのエントリがあります。

    ドライバーがデバイス インターフェイス クラスのインスタンスを登録している場合は、IWDFPropertyStoreFactory::RetrieveDevicePropertyStore を呼び出すことによって、そのインスタンスのレジストリエントリの値を読み書きできます。 ドライバーは、デバイス インターフェイスに関するインスタンス固有の情報を読み書きできます。

  • DEVICEMAP キー

    レジストリには HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP キーが含まれており、シリアル ポートや並列ポートなど、古いテクノロジの一部のドライバーが使用します。 ドライバーが DEVICEMAP キーを使用するテクノロジをサポートしている場合、ドライバーは IWDFPropertyStoreFactory::RetrieveDevicePropertyStore を呼び出すことによって、キーの下のサブキーと値にアクセスできます。

ドライバーがレジストリ サブキーを開くために RetrieveDevicePropertyStore メソッドのいずれかを呼び出した後、ドライバーは、IWDFNamedPropertyStore, IWDFNamedPropertyStore2、または IWDFUnifiedPropertyStore によって公開されているメソッドを使用して、サブキーの下に値を作成、読み取り、書き込むことができます。 IWDFNamedPropertyStore2 インターフェースでは、ドライバーが値を削除することもできます。

ドライバーのレジストリ キーの詳細については、「レジストリ ツリーとキーの概要」をご参照ください。