次の方法で共有


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 部分を表す文字列。 この値は、IRP_MN_QUERY_IDBusQueryInstanceIDに使用されます。 すべてのソフトウェア デバイスは "UniqueId" デバイスと見なされるため、この文字列は、このソフトウェア デバイス列挙子上のすべてのデバイスの一意の名前である必要があります。

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 の割り当てに影響する方法の詳細については、「リムーバブル デバイス機能 の概要」を参照してください。 クライアントがコンテナー ID を明示的に制御する必要がある場合は、このメンバーが指す変数に GUID を指定します。 一般に、コンテナー ID にNULL_GUIDを指定しないでください。 コンテナー ID とNULL_GUIDの特別な意味の詳細については、「コンテナー ID の概要」を参照してください。

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
クライアントがデバイスにドライバーを読み込む必要がある場合、およびクライアントの機能の正しい機能にこのドライバーが必要な場合は、このビットを指定します。

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

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

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

pszDeviceDescription

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

ノート  

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

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

 

pszDeviceLocation

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

メモ 場所の指定は一般的ではありません。
 

pSecurityDescriptor

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

備考

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

必要条件

要件 価値
ヘッダー swdevicedef.h (Swdevice.h を含む)

関連項目

swDeviceCreate の