macro IID_PPV_ARGS (combaseapi.h)

Usado para recuperar um ponteiro de interface, fornecendo o valor IID da interface solicitada automaticamente com base no tipo do ponteiro de interface usado. Isso evita um erro de codificação comum verificando o tipo do valor passado no tempo de compilação.

Sintaxe

void IID_PPV_ARGS(
   ppType
);

Parâmetros

ppType

Um endereço de um ponteiro de interface cujo tipo T é usado para determinar o tipo de objeto que está sendo solicitado. A macro retorna o ponteiro da interface por meio desse parâmetro.

Retornar valor

Nenhum

Comentários

Uma sintaxe comum em métodos que recuperam um ponteiro de interface (mais notavelmente QueryInterface e CoCreateInstance) inclui dois parâmetros:

  • Um parâmetro [in], normalmente do tipo REFIID, para especificar o IID da interface a ser recuperada.
  • Um parâmetro [out], normalmente do tipo void**, para receber o ponteiro da interface.
Essa macro calcula o IID com base no tipo de ponteiro de interface, o que impede erros de codificação nos quais o IID e o tipo de ponteiro de interface não correspondem. Os desenvolvedores do Windows sempre devem usar essa macro com qualquer método que exija parâmetros separados de IID e ponteiro de interface.

Embora o Windows 7 seja a primeira inclusão dessa macro em um cabeçalho público, ela pode ser usada em sistemas mais antigos definindo-a manualmente nos cabeçalhos do projeto ou no código-fonte.

O exemplo a seguir mostra o uso de IID_PPV_ARGS para criar o objeto de repositório de propriedades de memória usando IPropertyStore.

IPropertyStore *pPropertyStore;

CoCreateInstance(CLSID_PropertyStore, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pPropertyStore));

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 7 [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho combaseapi.h