Метод 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 [только классические приложения] |
Заголовок |
|
IDL |
|