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.