macro IID_PPV_ARGS (combaseapi.h)

Se usa para recuperar un puntero de interfaz, proporcionando el valor IID de la interfaz solicitada automáticamente en función del tipo del puntero de interfaz usado. Esto evita un error de codificación común comprobando el tipo del valor pasado en tiempo de compilación.

Sintaxis

void IID_PPV_ARGS(
   ppType
);

Parámetros

ppType

Dirección de un puntero de interfaz cuyo tipo T se usa para determinar el tipo de objeto que se solicita. La macro devuelve el puntero de interfaz a través de este parámetro.

Valor devuelto

None

Observaciones

Una sintaxis común en los métodos que recuperan un puntero de interfaz (en particular QueryInterface y CoCreateInstance) incluyen dos parámetros:

  • Parámetro [in], normalmente de tipo REFIID, para especificar el IID de la interfaz que se va a recuperar.
  • Parámetro [out], normalmente de tipo void**, para recibir el puntero de interfaz.
Esta macro calcula el IID en función del tipo de puntero de interfaz, lo que evita errores de codificación en los que el tipo de puntero de interfaz y IID no coinciden. Los desarrolladores de Windows siempre deben usar esta macro con cualquier método que requiera parámetros de puntero de interfaz e IID independientes.

Aunque Windows 7 es la primera inclusión de esta macro en un encabezado público, se puede usar en sistemas más antiguos definiendola manualmente en los encabezados del proyecto o en el código fuente.

En el ejemplo siguiente se muestra el uso de IID_PPV_ARGS para crear el objeto de almacén de propiedades de memoria mediante IPropertyStore.

IPropertyStore *pPropertyStore;

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

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado combaseapi.h