Condividi tramite


Plug-in del gestore di interfaccia

È possibile scrivere un plug-in del gestore di interfaccia per fornire l'accesso in modalità utente a livello di codice a un set di proprietà specifico del driver esposto da un minidriver KS. Prima di tutto, registrare l'oggetto come descritto in Registrazione dei plug-in proxy KS.

La classe plug-in dell'interfaccia può derivare da CUnknown:

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

Il plug-in dell'interfaccia è un'interfaccia COM fornita dal fornitore che aggrega con il proxy KS fornito da MS in fase di creazione.

In particolare, il metodo CreateInstance del plug-in riceve un puntatore al proxy KS come sconosciuto esterno.

È quindi possibile eseguire una query su questo oggetto esterno per un puntatore all'interfaccia IKsPropertySet fornita da MS:

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

Quindi, da CreateInstance, richiamare il costruttore dell'interfaccia per creare un'istanza dell'oggetto gestore di interfaccia.

Specificare il puntatore a IKsPropertySet come parametro nella chiamata del costruttore. Il costruttore mantiene quindi il puntatore a iKsPropertySet come membro m_piKsPropertySet nella dichiarazione precedente.

È ora possibile implementare i metodi Get e Set nella classe che chiamano rispettivamente IKsPropertySet::Get e IKsPropertySet::Set per modificare le proprietà esposte dal driver.

In alternativa, è possibile eseguire una query sull'oggetto sconosciuto esterno per un puntatore alla relativa interfaccia IKsObject . Chiamare quindi IKsObject::KsGetObjectHandle per ottenere un handle di file. Ora si modificano le proprietà del dispositivo chiamando KsSynchronousIoControlDevice con questo handle di file.