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;
}
...
}
...