次の方法で共有


WIA 項目のフラグおよびカテゴリの使用例

このトピックは、Windows Vista以降に該当します。

このセクションでは、Windows Vista のスキャナーとカメラの項目ツリーを、WIA 項目フラグと WIA カテゴリと共に示します。 図は、Windows Vista 以降のカメラ項目ツリーとスキャナー項目ツリーの外観を示しています。 カメラ項目ツリーとスキャナー項目ツリーの両方の図が 2 つあります。 いずれも、最初の図は必要な WIA 項目フラグを示し、2 番目の図は、どの WIA カテゴリが使用されているかを示しています。 このコード例は、フラグとカテゴリの組み合わせを使用するためにアプリケーションが実行する操作の例です。

次の図は、カメラ項目ツリー、および設定する必要がある WIA_ITEM_FLAGS プロパティのフラグを示しています。

diagram illustrating a camera tree with wia item flags.

前の図では、左側のツリーはカメラ項目ツリーを表しています。 右側の吹き出しには、該当のデバイスで必要となる WIA 項目フラグを示しています。

次の図は、カメラ項目ツリー、および設定する必要がある WIA_IPA_ITEM_CATEGORY プロパティのカテゴリを示しています。

diagram illustrating a camera tree showing a category.

前の図では、左側のツリーはカメラ項目ツリーを表しています。 右側の吹き出しには、該当のデバイスで使用する必要があるカテゴリを示しています。

次の図は、ドキュメント フィーダーおよびフィルム スキャナーを備えたスキャナーの項目ツリー、および設定する必要がある WIA_ITEM_FLAGS プロパティのフラグを示しています。

diagram illustrating the item tree for a scanner with a document feeder and a film scanner, and the wia item flags.

前の図では、左側のツリーはスキャナー項目ツリーを表しています。 右側の吹き出しには、該当のデバイスで必要となる WIA 項目フラグを示しています。

次の図は、スキャナーの項目ツリー、および設定する必要がある WIA_IPA_ITEM_CATEGORY プロパティのカテゴリを示しています。

diagram illustrating the item tree for a scanner, and the categories that must be set.

前の図では、左側のツリーはスキャナー項目ツリーを表しています。 右側の吹き出しには、該当のデバイスで設定する必要がある WIA_IPA_ITEM_CATEGORY プロパティのカテゴリが含まれています。

WIA で定義されているすべてのカテゴリの全一覧、および各カテゴリの有効な WIA 項目フラグに関する情報は、WIA_IPA_ITEM_CATEGORY を参照してください。

WIA 項目フラグの全一覧は、WIA_IPA_ITEM_FLAGS を参照してください。

次のコード例は、アプリケーションが WIA 項目ツリーで見つかった WIA 項目を分類するに当たり、WIA_IPA_ITEM_FLAGSプロパティとWIA_IPA_ITEM_CATEGORY プロパティの組み合わせを使用する方法を示しています。

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