Partager via


Exemple d’utilisation des indicateurs et des catégories d’éléments WIA

Cette rubrique s’applique à Windows Vista et versions ultérieures.

Cette section décrit les arborescences d’éléments du scanneur et de l’appareil photo dans Windows Vista, ainsi que les indicateurs d’éléments WIA et les catégories WIA. Les diagrammes montrent à quoi ressembleraient une arborescence d’éléments d’appareil photo et une arborescence d’éléments de scanneur dans Windows Vista et versions ultérieures. Il existe deux diagrammes pour l’arborescence d’éléments d’appareil photo et l’arborescence d’éléments du scanneur. Dans les deux cas, le premier diagramme montre quels indicateurs d’éléments WIA sont nécessaires, tandis que le deuxième diagramme illustre les catégories WIA utilisées. L’exemple de code est un exemple de ce qu’une application ferait pour utiliser la combinaison des indicateurs et des catégories.

La figure suivante montre une arborescence d’éléments de caméra et les indicateurs dans la propriété WIA_ITEM_FLAGS qui doivent être définis.

diagramme illustrant une arborescence de caméra avec des indicateurs d’élément wia.

Dans la figure précédente, l’arborescence à gauche représente l’arborescence d’éléments de caméra. Les bulles situées à droite contiennent les indicateurs d’élément WIA qu’un tel appareil doit utiliser.

Le diagramme suivant montre une arborescence d’éléments de caméra et la catégorie dans la propriété WIA_IPA_ITEM_CATEGORY qui doit être définie.

diagramme illustrant une arborescence de caméra montrant une catégorie.

Dans la figure précédente, l’arborescence à gauche représente l’arborescence d’éléments de caméra. La bulle à droite contient la catégorie qu’un tel appareil doit utiliser.

Le diagramme suivant montre l’arborescence d’éléments d’un scanneur avec un chargeur de documents et un scanneur de films, ainsi que les indicateurs de la propriété WIA_ITEM_FLAGS qui doivent être définis.

diagramme illustrant l’arborescence d’éléments d’un scanneur avec un chargeur de documents et un scanneur de film, ainsi que les indicateurs d’élément wia.

Dans la figure précédente, l’arborescence à gauche représente l’arborescence d’éléments du scanneur. Les bulles situées à droite contiennent les indicateurs d’élément WIA qu’un tel appareil doit utiliser.

L’illustration suivante montre l’arborescence d’éléments d’un scanneur et les catégories dans la propriété WIA_IPA_ITEM_CATEGORY qui doit être définie.

diagramme illustrant l’arborescence d’éléments d’un scanneur et les catégories qui doivent être définies.

Dans la figure précédente, l’arborescence à gauche représente l’arborescence d’éléments du scanneur. Les bulles à droite contiennent les catégories de la propriété WIA_IPA_ITEM_CATEGORY qu’un tel appareil doit définir.

Pour obtenir la liste complète de toutes les catégories définies par WIA et des informations sur les indicateurs d’élément WIA valides pour chaque catégorie, consultez WIA_IPA_ITEM_CATEGORY.

Pour obtenir la liste complète de tous les indicateurs d’élément WIA, consultez WIA_IPA_ITEM_FLAGS.

L’exemple de code suivant montre comment une application peut utiliser la combinaison des propriétés WIA_IPA_ITEM_FLAGS et WIA_IPA_ITEM_CATEGORY pour classifier un élément WIA trouvé dans l’arborescence d’éléments 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;
    }
    ...
}
...