IWMDeviceManager3::SetDeviceEnumPreference 方法 (mswmdm.h)

SetDeviceEnumPreference 方法设置设备枚举首选项。

语法

HRESULT SetDeviceEnumPreference(
  [in] DWORD dwEnumPref
);

参数

[in] dwEnumPref

指定以下一个或多个指定枚举首选项的位值的按位 OR 组合。 每个设置位启用相应的扩展行为,而不存在该位会禁用扩展行为,并指定默认的向后兼容的枚举行为。 下表提供了 fuPrefs 的可能值。

说明
DO_NOT_VIRTUALIZE_STORAGES_AS_DEVICES 默认情况下,对于包含多个存储媒体 (例如,) 多个闪存卡的设备,每个存储都枚举为单独的伪设备。 但是,设置此标志时,存储不作为设备可见,并且只有设备作为设备可见。 有关更多信息,请参见备注。
ALLOW_OUTOFBAND_NOTIFICATION 设置此标志后,服务提供商可以通过其他机制(例如使用窗口消息)以及调用任何应用程序实现的 IWMDMNotification 接口的默认机制发送设备到达和删除。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
E_INVALIDARG
fuPrefs 参数指定不受支持的位值。
WMDM_E_CALL_OUT_OF_SEQUENCE
方法是在枚举操作后调用的;必须在枚举操作之前调用它。

注解

此方法使客户端能够替代 Windows Media 设备管理器的默认设备枚举行为。 为了替代默认行为,客户端应用程序必须在创建设备管理器对象后立即调用此方法,方法是从媒体设备管理器查询 IWMDMDeviceManager3 接口。 必须在执行任何枚举之前进行调用,无论是显式还是隐式地作为另一个操作的结果。

设置首选项标志后,不能在应用程序的生存期内更改它 (而不仅仅是 Windows Media 设备管理器 对象的生存期) 。 尝试更改首选项标志将导致错误。 使用相同的标志设置再次调用此方法不会返回错误,并且对枚举也没有任何影响。

服务提供商不得遵循DO_NOT_VIRTUALIZE_STORAGES_AS_DEVICES标志。 确定存储是否由同一设备托管的一种更可靠的方法是调用 IWMDMDevice2::GetCanonicalName。 同一设备的存储将返回相同的值,最后一个“$”字符后的最后一个数字除外。

要求

要求
目标平台 Windows
标头 mswmdm.h

另请参阅

IWMDMDevice2::GetCanonicalName