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
当客户端希望将驱动程序加载到设备上,以及当需要此驱动程序才能正确运行客户端功能时,请指定此位。

指定此位后,必须填充至少一个 pszzHardwareIdspszzCompatibleIds

如果指定了此位并且找不到驱动程序,则设备在 Device Manager 中显示黄色爆炸,以指示设备有问题,疑难解答会将此问题标记为设备。 设置此位等效于总线驱动程序,而不是为 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 结构的指针。 如果此成员 NULLI/O 管理器 将默认安全描述符分配给设备。 如果需要自定义安全描述符,请指定一个相对安全描述符。

言论

只能在创建时指定此信息,并且以后无法通过设置属性来调用软件设备 API 来修改此信息。

要求

要求 价值
标头 swdevicedef.h (包括 Swdevice.h)

另请参阅

SwDeviceCreate