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”设备,因此此字符串必须是此软件设备枚举器上所有设备的唯一名称。 有关详细信息,请参阅 实例 ID

pszzHardwareIds

软件设备的硬件 ID 的字符串列表。 此值用于IRP_MN_QUERY_IDBusQueryHardwareID。 如果客户端需要将驱动程序或设备元数据绑定到设备,则客户端会指定硬件 ID。

pszzCompatibleIds

软件设备的兼容 ID 的字符串列表。 此值用于IRP_MN_QUERY_IDBusQueryCompatibleID。 如果客户端需要加载类驱动程序,则客户端会指定与类驱动程序匹配的兼容 ID。 如果不需要驱动程序,建议指定一个兼容的 ID 来对软件设备类型进行分类。 除了在此成员中指定的兼容 ID 之外,SWD\Generic 和可能的 SWD\GenericRaw 将始终添加为最不具体的兼容 ID。

pContainerId

一个值,用于控制软件设备的基本容器 ID。 此值将用于 IRP_MN_QUERY_IDBusQueryContainerIDs。 对于典型情况,建议将此成员设置为 NULL ,并使用 SWDeviceCapabilitiesRemovable 标志来控制设备是继承父级的容器 ID,还是 PnP 分配了新的随机容器 ID。 如果客户端需要显式控制容器 ID,请在此成员指向的变量中指定 GUID

CapabilityFlags

SW_DEVICE_CAPABILITIES值的组合,这些值通过使用按位 OR 运算进行组合。 生成的值指定软件设备的功能。 在创建软件设备时可以指定的功能是总线驱动程序可以使用 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
当客户端想要在设备上加载驱动程序以及需要此驱动程序才能正确执行客户端功能时,请指定此位。

指定此位时,必须填写至少一个 pszzHardwareIdspszzCompatibleIds

如果指定了此位,并且找不到驱动程序,则设备在设备管理器中显示黄色砰砰声,以指示设备有问题,疑难解答会将其标记为有问题的设备。 设置此位等效于未为 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