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 Das Objekt, wie in der Registrierung von KS-Proxy-Plug-Ins beschrieben.

Ihre Schnittstellen-Plug-In-Klasse kann 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 zur Erstellungszeit mit dem 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 abfragen, um einen Zeiger auf die von MS bereitgestellte IKsPropertySet-Schnittstelle zu erhalten.

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

Rufen Sie dann aus CreateInstance den Konstruktor der Schnittstelle auf, um eine Instanz des Schnittstellenhandlerobjekts zu erstellen.

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

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

Alternativ können Sie das äußere Unbekannte für einen 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.