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 インターフェースでは、ドライバーが値を削除することもできます。
ドライバーのレジストリ キーの詳細については、「レジストリ ツリーとキーの概要」をご参照ください。