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