WIA 项标志和类别的示例用法

本主题适用于 Windows Vista 及更高版本。

本部分描述 Windows Vista 中的扫描仪和相机项树,以及 WIA 项标志和 WIA 类别。 这些关系图描绘了相机项树和扫描仪项树在 Windows Vista 及更高版本中的外观。 相机项树和扫描仪项树有两个关系图。 在这两种情况下,第一个关系图说明了需要哪些 WIA 项标志,而第二个关系图演示了使用哪些 WIA 类别。 代码示例是一个示例,说明应用程序将如何利用标志和类别的组合。

下图显示了相机项树和必须设置的 WIA_ITEM_FLAGS 属性中的标志。

说明具有 wia 项标志的相机树的示意图。

在上图中,左侧的树表示相机项树。 右侧的气球包含此类设备需要使用的 WIA 项标志。

下图显示了相机项树和必须设置的 WIA_IPA_ITEM_CATEGORY 属性中的类别。

说明显示类别的相机树的示意图。

在上图中,左侧的树表示相机项树。 右侧的气球包含此类设备需要使用的类别。

下图显示了具有文档馈送器和胶片扫描仪的扫描仪的项树,以及必须设置的 WIA_ITEM_FLAGS 属性中的标志。

说明具有文档馈送器和胶片扫描仪的扫描仪的项树以及 wia 项标志的示意图。

在上图中,左侧的树表示扫描程序项树。 右侧的气球包含此类设备需要使用的 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;
    }
    ...
}
...