DSF使用COM自动化对象将DSF服务暴露给设备模拟器。您可以从任何具有COM客户端能力的语言访问这些对象。几乎所有对象都公开了只使用OLE自动化兼容数据类型的双接口。
返回对象的COM方法和属性总是将它们作为指向在MIDL生成的头文件中定义的对象同类类型的指针返回。C++客户端必须将返回的指针转换为对象的默认双接口类型。这种转换有助于保持与脚本语言的兼容性,脚本语言不区分对象上的多个接口,并且只允许通过其默认的双重接口访问对象。
除了单独的对象之外,DSF还定义了许多对象集合。这些集合都是支持Add、Remove和Clear方法以及Item和Count属性的标准OLE自动化集合。
所有集合支持枚举的_NewEnum属性(例如:通过使用VBScript For/Each 语法)。_NewEnum在支持IEnumVARIANT接口的枚举器对象上返回IUnknown。IEnumVARIANT::Next 方法返回VARIANT值和VT_DISPATCH 类型,该类型包含集合项上的IDispatch接口。
集合索引是可能包含整数或任意字符串的VARIANT值。Add方法接受一个可选的索引参数,当未指定时,该参数接收使用基于零的序数(即,调用Add方法之前集合的Count属性的值)的默认值。除了标准方法和属性之外,集合还支持Lock和Unlock方法,这些方法可以暂时防止来自其他线程对集合的更改。调用方只能在集合被锁定时使用计数和项属性。
创建于: 9/21/2010
英文原文连接:https://docs.microsoft.com/en-us/previous-versions/windows/hardware/dsf/ff538273(v%3dvs.85)