共用方式為


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