Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode fornecer uma interface de usuário para as propriedades do dispositivo escrevendo uma página de propriedades como um plug-in para o proxy KS. Este tópico explica como escrever esse plug-in. Primeiro, registre seu objeto conforme descrito em Registrando plug-ins de proxy KS.
Em seguida, declare o modelo de fábrica para o filtro. Um modelo de fábrica é uma classe C++ que contém informações para a fábrica de classes.
Em sua DLL, declare uma matriz global de objetos CFactoryTemplate, um para cada filtro ou componente COM em sua DLL. Se você tiver apenas uma página de propriedades, crie apenas um objeto na matriz.
Para cada objeto, gere um GUID para o identificador de classe (CLSID) e forneça uma entrada na declaração.
A matriz deve ser nomeada g_Templates:
CFactoryTemplate g_Templates[] =
{
{
L"My Property Page",
&CLSID_MyPropPage),
CMyPropPage::CreateInstance,
NULL,
NULL
},
};
Sua página de propriedade deve derivar da classe CBasePropertyPage e deve substituir vários dos métodos de CBasePropertyPage:
class CMyPropPage: public CBasePropertyPage
{
public:
// creation routine returns ptr to new prop pg as a CUnknown
static CUnknown* CreateInstance( LPUNKNOWN piOuterUnknown, HRESULT* phResult );
// overridden methods:
HRESULT OnConnect( IUnknown *punk);
HRESULT OnDisconnect();
HRESULT OnApplyChanges();
HRESULT OnActivate();
HRESULT OnDeactivate();
INT_PTR OnReceiveMessage( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam );
private:
CMyPropPage ( LPUNKNOWN piOuterUnknown );
};
Para inicializar a página de propriedades, a folha de propriedades do host chama IPropertyPage::SetPageSite. Essa chamada resulta em uma chamada do método OnConnect do plug-in. No momento desta chamada, a página de propriedades foi conectada ao filtro, mas a página de propriedades ainda não foi exibida.
O parâmetro fornecido na chamada para OnConnect é a interface para o proxy KS, a partir do qual pode-se obter um ponteiro para IKsPropertySet. Em seguida, você pode chamar IKsPropertySet::Get e IKsPropertySet::set para manipular as propriedades expostas do driver.
Você também deve fornecer um método CreateInstance . O sistema invoca o método de uma página de propriedades para criar uma instância da página de propriedades. Esse método deve chamar o construtor de sua classe para instanciá-lo.
O construtor recebe um ponteiro para a interface externa desconhecida, que neste caso é o proxy KS.
O método OnDisconnect da página de propriedades é chamado quando a página de propriedades deve liberar o objeto associado. Essa função de retorno deve diminuir a contagem de referência do ponteiro para a interface do proxy KS ao chamar seu método Release.