Usar QueryService para recuperar uma interface nativa para um objeto IAccessible
Os desenvolvedores de servidores podem usar essa técnica para expor um ponteiro a um nó de documento personalizado para um objeto IAccessible . Isso pressupõe que você já exponha objetos IAccessible . Essa técnica permite que os clientes obtenham um objeto personalizado de um objeto IAccessible .
Para expor um modelo de objeto nativo para um IAccessible (servidores)
- Adicione suporte para a interface IServiceProvider em seu objeto IAccessible .
- Defina um GUID que representa a funcionalidade de obter a interface personalizada de um objeto IAccessible . Isso é chamado de ID de serviço. Você pode usar GUIDGEN.EXE para gerar uma ID de serviço ou reutilizar a ID da interface se tiver uma interface personalizada.
- Implemente o método IServiceProvider::QueryService para que ele retorne um ponteiro para a interface personalizada quando chamado com a ID de serviço definida anteriormente neste procedimento. QueryService deve retornar NULL para todos os outros valores de ID de serviço.
- Publique a ID do serviço para que os clientes possam usá-la.
Os clientes podem usar essa funcionalidade para obter um ponteiro para o objeto personalizado de um objeto IAccessible .
Para obter um ponteiro para um objeto personalizado de um IAccessible (clientes)
- Chame QueryInterface(IID_IServiceProvider) em um ponteiro de interface IAccessible para obter um ponteiro de interface IServiceProvider .
- Chame IServiceProvider::QueryService com a ID de serviço publicada para obter um ponteiro para o objeto personalizado para o IAccessible.
- Libere a interface IServiceProvider se ela não for mais necessária.
Para serem utilizáveis entre processos, os servidores podem precisar registrar a interface retornada com o COM (Component Object Model).
Essa técnica é usada pelo Microsoft Internet Explorer 4.0 e posterior. Ele permite que os clientes obtenham um ponteiro de interface IHTMLElement2 que corresponde a um objeto IAccessible .