Share via


SW_DEVICE_CREATE_INFO 構造体 (swdevicedef.h)

PnP がソフトウェア デバイスの作成に使用する情報について説明します。

構文

typedef struct _SW_DEVICE_CREATE_INFO {
  ULONG                     cbSize;
  PCWSTR                    pszInstanceId;
  PCZZWSTR                  pszzHardwareIds;
  PCZZWSTR                  pszzCompatibleIds;
  const GUID                *pContainerId;
  ULONG                     CapabilityFlags;
  PCWSTR                    pszDeviceDescription;
  PCWSTR                    pszDeviceLocation;
  const SECURITY_DESCRIPTOR *pSecurityDescriptor;
} SW_DEVICE_CREATE_INFO, *PSW_DEVICE_CREATE_INFO;

メンバー

cbSize

この構造体のサイズ (バイト単位)。 バージョン フィールドとして使用します。 sizeof(SW_DEVICE_CREATE_INFO) に初期化します。

pszInstanceId

デバイス インスタンス ID のインスタンス ID 部分を表す文字列。 この値は、busQueryInstanceIDIRP_MN_QUERY_ID使用されます。 すべてのソフトウェア デバイスは "UniqueId" デバイスと見なされるため、この文字列は、このソフトウェア デバイス列挙子上のすべてのデバイスの一意の名前である必要があります。 詳細については、「 インスタンス ID」を参照してください。

pszzHardwareIds

ソフトウェア デバイスのハードウェア ID の文字列の一覧。 この値は、 IRP_MN_QUERY_IDBusQueryHardwareIDs に使用されます。 クライアントがドライバーまたはデバイスメタデータをデバイスにバインドすることを想定している場合、クライアントはハードウェア ID を指定します。

pszzCompatibleIds

ソフトウェア デバイスの互換性のある ID の文字列の一覧。 この値は、 IRP_MN_QUERY_IDBusQueryCompatibleIDs に使用されます。 クライアントがクラス ドライバーを読み込む必要がある場合、クライアントはクラス ドライバーと一致する互換性のある ID を指定します。 ドライバーが必要ない場合は、ソフトウェア デバイスの種類を分類するために互換性のある ID を指定することをお勧めします。 このメンバーで指定されている互換性のある ID に加えて、SWD\Generic と場合によっては SWD\GenericRaw は、常に最小の互換性のある ID として追加されます。

pContainerId

ソフトウェア デバイスのベース コンテナー ID を制御するために使用される値。 この値は、 IRP_MN_QUERY_IDBusQueryContainerIDs に使用されます。 一般的な状況では、このメンバーを NULL に設定し、 SWDeviceCapabilitiesRemovable フラグを使用して、デバイスが親のコンテナー ID を継承するか、PnP が新しいランダム コンテナー ID を割り当てるかを制御することをお勧めします。 クライアントがコンテナー ID を明示的に制御する必要がある場合は、このメンバーが指す変数に GUID を 指定します。

CapabilityFlags

ビットごとの OR 演算を使用して結合される SW_DEVICE_CAPABILITIES 値の組み合わせ。 結果の値は、ソフトウェア デバイスの機能を指定します。 ソフトウェア デバイスを作成するときに指定できる機能は、バス ドライバーが DEVICE_CAPABILTIES 構造を使用して指定できる機能のサブセットです。 ソフトウェアのみのデバイスの変更を許可する意味のある機能のみがサポートされています。 残りは適切な既定値を受け取ります。 使用可能な値を次に示します。

意味
SWDeviceCapabilitiesNone
0x00000000
機能が指定されていません。
SWDeviceCapabilitiesRemovable
0x00000001
このビットは、デバイスが親からリムーバブルであることを指定します。 このフラグの設定は、PDO のDEVICE_CAPABILTIES構造体のリムーバブル メンバーを設定するバス ドライバーと同じです。
SWDeviceCapabilitiesSilentInstall
0x00000002
このビットは、通常はインストール中に表示される UI を抑制します。 このフラグの設定は、PDO のDEVICE_CAPABILTIES構造体の SilentInstall メンバーを設定するバス ドライバーと同じです。
SWDeviceCapabilitiesNoDisplayInUI
0x00000004
このビットにより、デバイスが一部の UI に表示されなくなります。 このフラグの設定は、PDO のDEVICE_CAPABILTIES構造体の NoDisplayInUI メンバーを設定するバス ドライバーと同じです。
SWDeviceCapabilitiesDriverRequired
0x00000008
クライアントがデバイスにドライバーを読み込みたい場合、およびクライアントの機能の正しい機能にこのドライバーが必要な場合は、このビットを指定します。

このビットを指定する場合は、少なくとも 1 つの pszzHardwareIds または pszzCompatibleIds を 入力する必要があります。

このビットが指定されていて、ドライバーが見つからない場合、デバイスに問題があることを示す黄色の強打がデバイス マネージャーに表示され、トラブルシューティング ツールによって問題のあるデバイスとしてフラグが設定されます。 このビットの設定は、PDO のDEVICE_CAPABILTIES構造体の RawDeviceOK メンバーを設定しないバス ドライバーと同じです。

このビットを指定すると、ドライバーはデバイスのインターフェイスを作成し、デバイスの SwDeviceInterfaceRegister を呼び出すことはできません。

pszDeviceDescription

UI のデバイス名に表示されるテキストを含む文字列。 この値は、 IRP_MN_QUERY_DEVICE_TEXTDeviceTextDescription に使用されます。

  

INF がデバイスと一致すると、この名前を保持する手順を実行しない限り、INF の名前がこの名前をオーバーライドします。

この文字列はローカライズ可能なリソースへの参照にすることをお勧めします。 リソースを参照する構文については、「 DEVPROP_TYPE_STRING_INDIRECT」を参照してください。

 

pszDeviceLocation

UI のデバイスの場所に表示されるテキストを含む文字列。 この値は、 IRP_MN_QUERY_DEVICE_TEXTDeviceTextLocationInformation に使用されます。

メモ 場所を指定することは一般的ではありません。
 

pSecurityDescriptor

ソフトウェア デバイスに関連付けられているセキュリティ情報を含む SECURITY_DESCRIPTOR 構造体へのポインター。 このメンバーが NULL の場合、 I/O マネージャー はデバイスに既定のセキュリティ記述子を割り当てます。 カスタム セキュリティ記述子が必要な場合は、自己相対セキュリティ記述子を指定します。

注釈

この情報は作成時にのみ指定でき、後でソフトウェア デバイス API を呼び出して、たとえばプロパティを設定してこの情報を変更することはできません。

要件

要件
Header swdevicedef.h (Swdevice.h を含む)

こちらもご覧ください

SwDeviceCreate