Plug-in do manipulador de interface
Você pode escrever um plug-in do manipulador de interface para fornecer acesso programático do modo de usuário a um conjunto de propriedades específico do driver exposto por um minidriver KS. Primeiro, registre seu objeto conforme descrito em Registrando plug-ins de proxy KS.
Sua classe de plug-in de interface pode 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;
};
O plug-in de interface é uma interface COM fornecida pelo fornecedor que se agrega com o proxy KS fornecido pela MS no momento da criação.
Especificamente, o método CreateInstance do plug-in recebe um ponteiro para o proxy KS como um desconhecido externo.
Em seguida, você pode consultar esse objeto externo para obter um ponteiro para a interface IKsPropertySet fornecida pela MS:
hResult = piOuterUnknown->QueryInterface(
__uuidof( piKsPropertySet ),
&piKsPropertySet );
Em seguida, em CreateInstance, invoque o construtor da interface para criar uma instância do objeto do manipulador de interface.
Forneça o ponteiro para IKsPropertySet como um parâmetro na invocação do construtor. Em seguida, o construtor mantém o ponteiro para iKsPropertySet como o membro m_piKsPropertySet na declaração anterior.
Agora você pode implementar métodos Get e Set em sua classe que chamam IKsPropertySet::Get e IKsPropertySet::Set respectivamente para manipular propriedades expostas pelo driver.
Como alternativa, você pode consultar o desconhecido externo para obter um ponteiro para sua interface IKsObject . Em seguida, chame IKsObject::KsGetObjectHandle para obter um identificador de arquivo. Agora você manipula as propriedades do dispositivo chamando KsSynchronousIoControlDevice com esse identificador de arquivo.