Partilhar via


QueryInterface

Embora existam mecanismos pelos quais um objeto pode expressar a funcionalidade fornece estaticamente (antes que ela é instanciada), o mecanismo COM fundamental é usar o IUnknown chamada de método QueryInterface.

Cada interface é derivado de IUnknown, portanto, cada interface tem uma implementação de QueryInterface. Independentemente da implementação, esse método consulta um objeto usando o IID da interface à qual o chamador deseja que um ponteiro.Se o objeto oferecer suporte a essa interface, QueryInterface recupera um ponteiro para a interface, enquanto também chama AddRef. Caso contrário, retornará o E_NOINTERFACE código de erro.

Observe que você deve obedecer Contagem de referência regras em qualquer ocasião.Se você chamar Versão em um ponteiro de interface decrementar a contagem de referência como zero, você não deve usar esse ponteiro novamente.Ocasionalmente, talvez você precise obter uma referência fraca para um objeto (ou seja, você poderá obter um ponteiro para uma de suas interfaces sem incrementar a contagem de referência), mas não é aceitável para fazer isso chamando QueryInterface seguido por Versão.O ponteiro obtido de modo é inválido e não deve ser usado.Se isso mais prontamente torna aparente quando _ATL_DEBUG_INTERFACES é definida, portanto, definir esta macro é uma maneira útil de encontrar bugs de contagem de referência.

Consulte também

Referência

Introdução ao com.

QueryInterface: Navigating in an Object