Partilhar via


IServiceProviderImpl::QueryService

Cria ou acessa o serviço especificado e retorna um ponteiro de interface à interface especificada para o serviço.

STDMETHOD(QueryService)(
   REFGUID guidService,
   REFIID riid,
   void** ppvObject 
);

Parâmetros

  • [IN] guidService
    Ponteiro para um identificador de serviço (SID).

  • [IN] riid
    Identificador de interface para a qual o chamador deve obter acesso.

  • [OUT] ppvObj
    Ponteiro indireto para a interface solicitada.

Valor de retorno

O retornadoHRESULT valor é uma das seguintes opções:

Valor de Retorno

Significado

S_OK

O serviço foi criado com êxito ou recuperado.

E_INVALIDARG

Um ou mais argumentos são inválidos.

E_OUTOFMEMORY

Memória insuficiente criar o serviço.

E_UNEXPECTED

Ocorreu um erro desconhecido.

E_NOINTERFACE

A interface solicitada não é parte do serviço ou o serviço é desconhecido.

Comentários

QueryService Retorna um ponteiro indireto para a interface solicitada no serviço especificado. O chamador é responsável por liberando esse ponteiro quando ele não é mais necessário.

Quando você chama QueryService, você passa ambos os uma (identificador de serviçoguidService) e um (identificador de interfaceriid). The guidService Especifica o serviço para a qual você deseja acessar, e o riid identifica uma interface que é parte do serviço. Em retorno, você recebe um ponteiro indireto à interface.

O objeto que implementa a interface também pode implementar interfaces que fazem parte de outros serviços.Considere o seguinte:

  • Algumas dessas interfaces podem estar opcionais.Nem todas as interfaces definidas na descrição do serviço estão presentes necessariamente em cada implementação do serviço ou em cada objeto retornado.

  • Diferentemente de chamadas para QueryInterface, passar um identificador de serviço diferentes não significa necessariamente que será retornado um objeto COM (componente Object Model) diferentes.

  • O objeto retornado pode ter interfaces adicionais que não fazem parte da definição do serviço.

Dois serviços diferentes, tais sistema autônomo SID_SMyService e SID_SYourService, podem ambos especificar o uso da mesma interface, mesmo que a implementação da interface talvez tenham nada em comum entre sistema autônomo dois serviços.Isso funciona, porque uma telefonar para QueryService (SID_SMyService, IID_IDispatch) pode retornar um objeto diferente de QueryService (SID_SYourService, IID_IDispatch). Identidade do objeto não será usada quando você especifica um identificador de serviço diferentes.

Requisitos

Cabeçalho: atlcom.h

Consulte também

Referência

Classe IServiceProviderImpl

BEGIN_SERVICE_MAP

Outros recursos

IServiceProviderImpl membros