Freigeben über


Schnittstellenhandler-Plug-In

Sie können ein Schnittstellenhandler-Plug-In schreiben, um programmgesteuerten Benutzermoduszugriff auf einen treiberspezifischen Eigenschaftensatz bereitzustellen, der von einem KS-Minidriver verfügbar gemacht wird. Registrieren Sie zunächst Ihr Objekt, wie unter Registrieren von KS-Proxy-Plug-Ins beschrieben.

Ihre Schnittstellen-Plug-In-Klasse könnte von CUnknown abgeleitet werden:

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

Das Schnittstellen-Plug-In ist eine vom Anbieter bereitgestellte COM-Schnittstelle, die beim Erstellen mit dem von MS bereitgestellten KS-Proxy aggregiert wird.

Insbesondere empfängt die CreateInstance-Methode des Plug-Ins einen Zeiger auf den KS-Proxy als äußeres Unbekanntes.

Anschließend können Sie dieses äußere Objekt nach einem Zeiger auf die von MS bereitgestellte IKsPropertySet-Schnittstelle abfragen:

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

Rufen Sie dann über CreateInstance den Konstruktor Ihrer Schnittstelle auf, um eine instance Ihres Schnittstellenhandlerobjekts zu erstellen.

Geben Sie den Zeiger auf IKsPropertySet als Parameter im Aufruf des Konstruktors an. Der Konstruktor behält dann den Zeiger auf iKsPropertySet als m_piKsPropertySet Member in der vorherigen Deklaration bei.

Jetzt können Sie die Get- und Set-Methoden in Ihrer Klasse implementieren, die IKsPropertySet::Get bzw . IKsPropertySet::Set aufrufen, um Eigenschaften zu bearbeiten, die vom Treiber verfügbar gemacht werden.

Alternativ können Sie das äußere Unbekannte nach einem Zeiger auf die IKsObject-Schnittstelle abfragen. Rufen Sie dann IKsObject::KsGetObjectHandle auf, um ein Dateihandle abzurufen. Jetzt bearbeiten Sie Geräteeigenschaften, indem Sie KsSynchronousIoControlDevice mit diesem Dateihandle aufrufen.