Поделиться через


макрос IID_PPV_ARGS (combaseapi.h)

Используется для получения указателя интерфейса, автоматически предоставляющего значение IID запрошенного интерфейса в зависимости от типа используемого указателя интерфейса. Это позволяет избежать распространенных ошибок кода, проверяя тип значения, передаваемого во время компиляции.

Синтаксис

void IID_PPV_ARGS(
   ppType
);

Параметры

ppType

Адрес указателя интерфейса, тип T которого используется для определения типа запрашиваемого объекта. Макрос возвращает указатель интерфейса через этот параметр.

Возвращаемое значение

None

Remarks

Распространенный синтаксис в методах, которые извлекают указатель интерфейса (в первую очередь QueryInterface и CoCreateInstance), включает два параметра:

  • Параметр [in], обычно имеющий тип REFIID, чтобы указать IID извлекаемого интерфейса.
  • Параметр [out], как правило, типа void**, для получения указателя интерфейса.
Этот макрос вычисляет IID на основе типа указателя интерфейса, что предотвращает ошибки кодирования, при которых не совпадают типы IID и указателя интерфейса. Разработчики Windows всегда должны использовать этот макрос с любым методом, требующим отдельных параметров IID и указателя интерфейса.

Хотя Windows 7 является первым включением этого макроса в общедоступный заголовок, его можно использовать в старых системах, определив его вручную в заголовках проекта или исходном коде.

В следующем примере показано использование IID_PPV_ARGS для создания объекта хранилища свойств памяти с помощью IPropertyStore.

IPropertyStore *pPropertyStore;

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

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header combaseapi.h