IUnknown::QueryInterface
9/8/2008
Esse método retorna um ponteiro para uma interface especificada em um objeto ao qual um cliente mantém um ponteiro interface no momento. Esse método deve chamar o IUnknown::AddRef método sobre o ponteiro retornará.
Syntax
HRESULT QueryInterface(
REFIID iid,
void** ppvObject
);
Parameters
- IID
[no] Identificador da interface requisitada.
ppvObject
[out] Endereço da variável de ponteiro que recebe o ponteiro interface solicitado no riid.Após bem-sucedido retornar *ppvObject Contém o ponteiro interface solicitada para o objeto.
Se o objeto não suporte a interface especificado em IID, *ppvObject é definido como NULL.
Return Value
S_OK indica que a interface é com suporte. E_NOINTERFACE indica que a interface não é com suporte.
Remarks
O Falha de QueryInterface método fornece um cliente acessar a outras interfaces em um objeto.
Para qualquer um objeto, uma consulta específica para o IUnknown interface em qualquer uma das interfaces do objeto sempre deve retornar o mesmo valor ponteiro. Isso permite que um cliente para determinar se dois ponteiros apontar para o mesmo componente por chamado Falha de QueryInterface Em ambos e comparar os resultados.
Ele é especificamente não a maiúsculas e minúsculas que consultas para interfaces (até mesmo a interface mesmo por meio de ponteiro mesmo) devem retornar o mesmo valor ponteiro.
Há quatro requisitos para implementações de Falha de QueryInterface (Nesses casos, "deve ter êxito" significa "deve ter êxito bloqueio falha catastrófica."):
- O conjunto de interfaces acessível em um objeto através IUnknown::QueryInterface deve ser estático, não dinâmico. Isso significa que se um chamar para Falha de QueryInterface Para um ponteiro para uma interface especificada for bem-sucedida de tempo primeiro, ele deve ter êxito novamente e se ele falhar o tempo primeiro, ele deve falhar em todas as consultas subseqüentes.
- Ele deve ser simétrico — se um cliente contém um ponteiro para uma interface em um objeto e consultas para essa interface, o chamar deve ter êxito.
- Ele deve ser reflexivo — se um cliente mantendo um ponteiro para uma interface consultas com êxito para outro, uma consulta por meio de ponteiro obtido para a primeira interface deve ter êxito.
- Ele deve ser transitivo se um cliente mantendo um ponteiro para uma interface consultas com êxito para um segundo, e através de consultas que ponteiro com êxito para uma interface Terceiro, uma consulta para a primeira interface através de ponteiro para a interface terceiro deve ter êxito.
Para determinar se a plataforma oferece suporte a esta interface, consulte Determinando suporte COM APIs.
Requirements
Header | unknwn.h, unknwn.idl |
Library | ole32.lib, uuid.lib |
Windows Embedded CE | Windows CE 1.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |