Пример использования флагов и категорий элементов WIA
Этот раздел относится к Windows Vista и более поздних версий.
В этом разделе показаны деревья элементов сканера и камеры в Windows Vista, а также флаги элементов WIA и категории WIA. На схемах показано, как будут выглядеть дерево элементов камеры и сканера в Windows Vista и более поздних версиях. Существует две схемы как для дерева элементов камеры, так и для дерева элементов сканера. В обоих случаях на первой схеме показаны необходимые флаги элементов WIA, а на второй — используемые категории WIA. Пример кода является примером того, что приложение будет делать для использования сочетания флагов и категорий.
На следующем рисунке показано дерево элементов камеры и флаги в свойстве WIA_ITEM_FLAGS, которое необходимо задать.
На предыдущем рисунке дерево слева представляет дерево элементов камеры. Выноски справа содержат флаги элементов WIA, которые потребуется использовать такому устройству.
На следующей схеме показано дерево элементов камеры и категория в свойстве WIA_IPA_ITEM_CATEGORY, которое необходимо задать.
На предыдущем рисунке дерево слева представляет дерево элементов камеры. Выноска справа содержит категорию, которую потребуется использовать такому устройству.
На следующей схеме показано дерево элементов для сканера с средством подачи документов и сканером пленки, а также флаги в свойстве WIA_ITEM_FLAGS, которое необходимо задать.
На предыдущем рисунке дерево слева представляет дерево элементов сканера. Выноски справа содержат флаги элементов WIA, которые потребуется использовать такому устройству.
На следующем рисунке показано дерево элементов для средства проверки и категории в свойстве WIA_IPA_ITEM_CATEGORY, которое необходимо задать.
На предыдущем рисунке дерево слева представляет дерево элементов сканера. Выноски справа содержат категории в свойстве WIA_IPA_ITEM_CATEGORY, которое должно задать такое устройство.
Полный список всех категорий, определенных WIA, и сведения о допустимых флагах элементов WIA для каждой категории см. в разделе WIA_IPA_ITEM_CATEGORY.
Полный список всех флагов элементов WIA см. в разделе WIA_IPA_ITEM_FLAGS.
В следующем примере кода показано, как приложение может использовать сочетание свойств WIA_IPA_ITEM_FLAGS и WIA_IPA_ITEM_CATEGORY для классификации элемента WIA, найденного в дереве элементов WIA.
HRESULT hr = S_OK;
PROPSPEC ps[2] = {{PRSPEC_PROPID,WIA_IPA_ITEM_FLAGS},
{PRSPEC_PROPID, WIA_IPA_ITEM_CATEGORY}};
PROPVARIANT pv[2] = {0};
hr = pIWiaPropertyStorage->ReadMultiple(2, ps, pv);
if (hr == S_OK)
{
if (pv[0].lVal & WiaItemTypeProgrammableDataSource)
{
// Item is a programmable data source.
}
else
{
// Item is NOT a programmable data source and there must be
// some data associated with the device, or a folder.
// Use the WIA item flags to further classify the item.
if (pv[0].lVal & WiaItemTypeImage)
{
// Item represents image data.
}
if (pv[0].lVal & WiaItemTypeAudio)
{
// Item represents audio data.
}
if (pv[0].lVal & WiaItemTypeVideo)
{
// Item represents video data.
}
if (pv[0].lVal & WiaItemTypeDocument)
{
// Item represents document data.
}
}
// Read the category to properly use the item.
switch(pv[1].lVal)
{
case WIA_CATEGORY_FINISHED_FILE:
// Item is a finished file item.
break;
case WIA_CATEGORY_FLATBED:
// Item is a flatbed scanner item.
break;
case WIA_CATEGORY_FILM:
// Item is a film scanning item.
break;
case WIA_CATEGORY_FEEDER:
// Item is a document feeder scanner item.
break;
default:
// Item is not a WIA-defined item (possibly vendor specific?).
break;
}
...
}
...