Compartir a través de


Complemento de controlador de interfaz

Puede escribir un complemento de controlador de interfaz para proporcionar acceso en modo de usuario mediante programación a un conjunto de propiedades específico del controlador expuesto por un minidriver KS. En primer lugar, registre el objeto tal y como se describe en Registro de complementos de proxy KS.

La clase de complemento de interfaz podría derivar de CUnknown:

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

El complemento de interfaz es una interfaz COM proporcionada por el proveedor que se agrega con el proxy KS proporcionado por MS en tiempo de creación.

En concreto, el método CreateInstance del complemento recibe un puntero al proxy KS como desconocido externo.

A continuación, puede consultar este objeto externo para un puntero a la interfaz IKsPropertySet proporcionada por MS:

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

A continuación, desde CreateInstance, invoque el constructor de la interfaz para crear una instancia del objeto del controlador de interfaz.

Proporcione el puntero a IKsPropertySet como parámetro en la invocación del constructor. A continuación, el constructor conserva el puntero a iKsPropertySet como miembro m_piKsPropertySet de la declaración anterior.

Ahora puede implementar métodos Get y Set en la clase que llaman a IKsPropertySet::Get e IKsPropertySet::Set respectivamente para manipular las propiedades expuestas por el controlador.

Como alternativa, puede consultar el desconocido externo para un puntero a su interfaz IKsObject . A continuación, llame a IKsObject::KsGetObjectHandle para obtener un identificador de archivo. Ahora manipula las propiedades del dispositivo llamando a KsSynchronousIoControlDevice con este identificador de archivo.