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


Метод IWiaItem2::GetExtension

Возвращает интерфейсы расширений, которые могут поставляются с драйвером устройства windows Image Acquisition (WIA) 2.0.

Синтаксис

HRESULT GetExtension(
  [in]  LONG   lFlags,
  [in]  BSTR   bstrName,
  [in]  REFIID riidExtensionInterface,
  [out] VOID   **ppOut
);

Параметры

lFlags [in]

Тип: LONG

В настоящее время не используется. Значение должно быть равно нулю.

bstrName [in]

Тип: BSTR

Указывает имя расширения, на которое вызывающее приложение требуется указатель.

SegmentationFilter

Расширение фильтра сегментации. В настоящее время это единственное допустимое значение для этого параметра.

riidExtensionInterface [in]

Тип: REFIID

Указывает идентификатор интерфейса расширения.

ppOut [out]

Тип: VOID**

Получает адрес указателя на интерфейс расширения.

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

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Приложение вызывает этот метод для создания объекта расширения, реализующего один из интерфейсов расширения драйвера WIA 2.0. IWiaItem2::GetExtension сохраняет адрес интерфейса расширения объекта расширения в параметре riidExtensionInterface . Затем приложение использует указатель интерфейса для вызова своих методов.

Приложения должны вызывать метод IUnknown::Release для указателей интерфейса, которые они получают через параметр riidExtensionInterface .

Примеры

CreateSegmentationFilter создает экземпляр фильтра сегментации драйвера (IWiaSegmentationFilter), вызывая метод IWiaItem2::GetExtension для переданного интерфейса IWiaItem2 .

HRESULT
CreateSegmentationFilter(
   IWiaItem2               *pWiaItem2,
   IWiaSegmentationFilter  **ppSegmentationFilter)
{
   HRESULT                 hr         = S_OK;
   IWiaSegmentationFilter *pSegFilter = NULL;
    
   if (!pWiaItem2 || !ppSegmentationFilter)
   {
      hr = E_INVALIDARG;
   }

   if (SUCCEEDED(hr))
   {
      BSTR    bstrFilterString = SysAllocString(WIA_SEGMENTATION_FILTER_STR);

      if (bstrFilterString)
      {
         hr = pWiaItem2->GetExtension(0,
                                      bstrFilterString,
                                      IID_IWiaSegmentationFilter,
                                      (void**)&pSegFilter);
         SysFreeString(bstrFilterString);
         bstrFilterString = NULL;
      }
      else
      {
         hr = E_OUTOFMEMORY;
      }
   }

   if (SUCCEEDED(hr))
   {
     *ppSegmentationFilter = pSegFilter;
      pSegFilter = NULL;
   }
   return hr;
}

Требования

Требование Значение
Минимальная версия клиента
Windows Vista [только классические приложения]
Минимальная версия сервера
Windows Server 2008 [только классические приложения]
Заголовок
Wia.h
IDL
Wia.idl