Condividi tramite


Esempio di utilizzo di flag e categorie di elementi WIA

Questo argomento si applica a Windows Vista e versioni successive.

Questa sezione illustra gli alberi degli elementi dello scanner e della fotocamera in Windows Vista, insieme ai flag di elementi WIA e alle categorie WIA. I diagrammi illustrano l'aspetto di un albero degli elementi della fotocamera e di un albero degli elementi dello scanner in Windows Vista e versioni successive. Sono disponibili due diagrammi sia per l'albero degli elementi della fotocamera che per l'albero degli elementi dello scanner. In entrambi i casi, il primo diagramma illustra quali flag di elementi WIA sono necessari, mentre il secondo diagramma illustra le categorie WIA usate. L'esempio di codice è un esempio delle operazioni eseguite da un'applicazione per usare la combinazione dei flag e delle categorie.

La figura seguente mostra un albero degli elementi della fotocamera e i flag nella proprietà WIA_ITEM_FLAGS che devono essere impostati.

diagramma che illustra un albero della fotocamera con flag di elemento wia.

Nella figura precedente l'albero a sinistra rappresenta l'albero degli elementi della fotocamera. Le aree a destra contengono i flag dell'elemento WIA che un dispositivo di questo tipo deve usare.

Il diagramma seguente mostra un albero degli elementi della fotocamera e la categoria nella proprietà WIA_IPA_ITEM_CATEGORY che deve essere impostata.

diagramma che illustra un albero della fotocamera che mostra una categoria.

Nella figura precedente l'albero a sinistra rappresenta l'albero degli elementi della fotocamera. Il fumetto a destra contiene la categoria che un dispositivo di questo tipo deve usare.

Il diagramma seguente mostra l'albero degli elementi per uno scanner con un alimentatore di documenti e uno scanner di film e i flag nella proprietà WIA_ITEM_FLAGS che devono essere impostati.

diagramma che illustra l'albero degli elementi per uno scanner con un alimentatore di documenti e uno scanner di film e i flag dell'elemento wia.

Nella figura precedente l'albero a sinistra rappresenta l'albero degli elementi dello scanner. Le aree a destra contengono i flag dell'elemento WIA che un dispositivo di questo tipo deve usare.

La figura seguente mostra l'albero degli elementi per uno scanner e le categorie nella proprietà WIA_IPA_ITEM_CATEGORY che deve essere impostata.

diagramma che illustra l'albero degli elementi per uno scanner e le categorie che devono essere impostate.

Nella figura precedente l'albero a sinistra rappresenta l'albero degli elementi dello scanner. Le aree a destra contengono le categorie nella proprietà WIA_IPA_ITEM_CATEGORY che un dispositivo di questo tipo deve impostare.

Per un elenco completo di tutte le categorie definite da WIA e informazioni sui flag di elementi WIA validi per ogni categoria, vedi WIA_IPA_ITEM_CATEGORY.

Per un elenco completo di tutti i flag di elementi WIA, vedi WIA_IPA_ITEM_FLAGS.

Nell'esempio di codice seguente viene illustrato come un'applicazione può usare la combinazione delle proprietà WIA_IPA_ITEM_FLAGS e WIA_IPA_ITEM_CATEGORY per classificare un elemento WIA trovato nell'albero degli elementi 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;
    }
    ...
}
...