介面處理常式外掛程式
您可以撰寫介面處理常式外掛程式,以提供由 KS minidriver 公開之驅動程式特定屬性集的程式設計使用者模式存取。 首先,註冊物件,如 註冊 KS Proxy 外掛程式中所述。
您的介面外掛程式類別可能衍生自 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 Proxy 匯總。
具體而言,外掛程式的 CreateInstance 方法會接收 KS Proxy 的指標做為外部未知。
然後,您可以查詢這個外部物件,以取得 MS 提供的 IKsPropertySet 介面指標:
hResult = piOuterUnknown->QueryInterface(
__uuidof( piKsPropertySet ),
&piKsPropertySet );
然後,從 CreateInstance叫用介面的建構函式,以建立介面處理常式物件的實例。
在建構函式調用中,提供 IKsPropertySet 的指標作為參數。 然後,建構函式會將 iKsPropertySet 的指標保留為上一個宣告中的m_piKsPropertySet成員。
現在,您可以在類別中實作 Get 和 Set 方法,以分別呼叫 IKsPropertySet::Get 和 IKsPropertySet::Set 來操作驅動程式所公開的屬性。
或者,您可以查詢其 IKsObject 介面指標的外部未知。 然後呼叫 IKsObject::KsGetObjectHandle 以取得檔案控制代碼。 現在,您可以使用此檔案控制碼呼叫 KsSynchronousIoControlDevice 來操作裝置屬性。