接口处理程序插件

可以编写接口处理程序插件,以提供对 KS 微型驱动程序公开的特定于驱动程序的属性集的编程用户模式访问。 首先,按照注册 KS 代理插件中所述注册对象。

接口插件类可以从 CUnknown 派生:

class CMyPluginInterface : public CUnknown
{
public:
    // creation method
    static CUnknown* CALLBACK CreateInstance( LPUNKNOWN piOuterUnknown, HRESULT* phResult );
private:
 CMyPluginInterface( IKsPropertySet* piKsPropertySet );
    IKsPropertySet* m_piKsPropertySet;
};

接口插件是供应商提供的 COM 接口,在创建时与 MS 提供的 KS 代理进行聚合。

具体而言,插件的 CreateInstance 方法接收指向 KS 代理的指针,作为外部未知。

然后,可以查询此外部对象以获取指向 MS 提供的 IKsPropertySet 接口的指针:

hResult = piOuterUnknown->QueryInterface(
                __uuidof( piKsPropertySet ),
                 &piKsPropertySet );

然后,从 CreateInstance 调用接口的构造函数,以创建接口处理程序对象的实例。

在构造函数的调用中,提供 指向 IKsPropertySet 的指针作为参数。 然后,构造函数将指向 iKsPropertySet 的指针保留为上一个声明中的 m_piKsPropertySet 成员。

现在,可以在类中实现 Get 和 Set 方法,这些方法分别调用 IKsPropertySet::GetIKsPropertySet::Set ,以操作驱动程序公开的属性。

或者,可以查询外部未知,以获取指向其 IKsObject 接口的指针。 然后调用 IKsObject::KsGetObjectHandle 以获取文件句柄。 现在,可以通过使用此文件句柄调用 KsSynchronousIoControlDevice 来操作设备属性。