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.