Compartilhar via


Plug-in de manipulador de interface

Você pode escrever um plug-in do manipulador de interface para fornecer acesso programático no modo de usuário a um conjunto de propriedades específico do driver que é exposto por um minidriver KS. Primeiro, registre seu objeto conforme descrito em Registrar Plug-ins de Proxy KS.

Sua classe de plug-in de interface pode derivar do 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 ao 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, no CreateInstance, invoque o construtor de sua 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 as propriedades expostas pelo driver.

Como alternativa, você pode consultar o objeto 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.