Compartilhar via


IUnknown::QueryInterface

Windows Mobile SupportedWindows Embedded CE Supported

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

See Also

Reference

IUnknown
IUnknown::AddRef