Freigeben über


Beispielverwendung von WIA-Elementflags und -Kategorien

Dieses Thema gilt für Windows Vista und höher.

In diesem Abschnitt werden Scanner- und Kameraelementstrukturen in Windows Vista sowie die WIA-Elementflags und WIA-Kategorien dargestellt. Die Diagramme zeigen, wie eine Kameraelementstruktur und eine Scannerelementstruktur in Windows Vista und höher aussehen würden. Es gibt zwei Diagramme für die Kameraelementstruktur und die Scannerelementstruktur. In beiden Fällen veranschaulicht das erste Diagramm, welche WIA-Elementflags benötigt werden, während das zweite Diagramm veranschaulicht, welche WIA-Kategorien verwendet werden. Das Codebeispiel ist ein Beispiel dafür, was eine Anwendung tun würde, um die Kombination der Flags und Kategorien zu verwenden.

Die folgende Abbildung zeigt eine Kameraelementstruktur und die Flags in der WIA_ITEM_FLAGS-Eigenschaft, die festgelegt werden müssen.

Diagramm, das eine Kamerastruktur mit wia-Elementflags veranschaulicht.

In der vorherigen Abbildung stellt die Struktur auf der linken Seite die Kameraelementstruktur dar. Die Ballons auf der rechten Seite enthalten die WIA-Elementflags, die ein solches Gerät verwenden müsste.

Das folgende Diagramm zeigt eine Kameraelementstruktur und die Kategorie in der WIA_IPA_ITEM_CATEGORY-Eigenschaft, die festgelegt werden müssen.

Diagramm, das eine Kamerastruktur mit einer Kategorie zeigt.

In der vorherigen Abbildung stellt die Struktur auf der linken Seite die Kameraelementstruktur dar. Der Ballon auf der rechten Seite enthält die Kategorie, die ein solches Gerät verwenden müsste.

Das folgende Diagramm zeigt die Elementstruktur für einen Scanner mit einem Dokumenteinzug und einem Filmscanner sowie die Flags in der WIA_ITEM_FLAGS-Eigenschaft, die festgelegt werden müssen.

Diagramm zur Veranschaulichung der Elementstruktur für einen Scanner mit einem Dokumenteinzug und einem Filmscanner sowie den Wia-Elementflags.

In der obigen Abbildung stellt die Struktur auf der linken Seite die Struktur des Scannerelements dar. Die Ballons auf der rechten Seite enthalten die WIA-Elementflags, die ein solches Gerät verwenden müsste.

Die folgende Abbildung zeigt die Elementstruktur für einen Scanner und die Kategorien in der WIA_IPA_ITEM_CATEGORY Eigenschaft, die festgelegt werden müssen.

Diagramm, das die Elementstruktur für einen Scanner und die kategorien veranschaulicht, die festgelegt werden müssen.

In der obigen Abbildung stellt die Struktur auf der linken Seite die Struktur des Scannerelements dar. Die Ballons auf der rechten Seite enthalten die Kategorien in der WIA_IPA_ITEM_CATEGORY-Eigenschaft, die ein solches Gerät festlegen muss.

Eine vollständige Liste aller von WIA definierten Kategorien und Informationen zu gültigen WIA-Elementflags für jede Kategorie finden Sie unter WIA_IPA_ITEM_CATEGORY.

Eine vollständige Liste aller WIA-Elementflags finden Sie unter WIA_IPA_ITEM_FLAGS.

Im folgenden Codebeispiel wird veranschaulicht, wie eine Anwendung die Kombination der Eigenschaften WIA_IPA_ITEM_FLAGS und WIA_IPA_ITEM_CATEGORY zum Klassifizieren eines in der WIA-Elementstruktur gefundenen WIA-Elements verwenden kann.

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