Compartir a través de


Ejemplo de uso de marcas y categorías de elementos wia

Este tema se aplica a Windows Vista y versiones posteriores.

En esta sección se describen los árboles de elementos de escáner y cámara en Windows Vista, junto con las marcas de elementos WIA y las categorías wia. En los diagramas se muestra el aspecto que tendría un árbol de elementos de cámara y un árbol de elementos del escáner en Windows Vista y versiones posteriores. Hay dos diagramas para el árbol de elementos de la cámara y el árbol de elementos del escáner. En ambos casos, el primer diagrama ilustra qué marcas de elementos wia son necesarias, mientras que el segundo diagrama ilustra qué categorías de WIA se usan. El ejemplo de código es un ejemplo de lo que haría una aplicación para usar la combinación de las marcas y categorías.

En la ilustración siguiente se muestra un árbol de elementos de cámara y las marcas de la propiedad WIA_ITEM_FLAGS que se deben establecer.

diagrama que ilustra un árbol de cámara con marcas de elementos wia.

En la ilustración anterior, el árbol de la izquierda representa el árbol de elementos de cámara. Los globos de la derecha contienen las marcas de elemento WIA que un dispositivo de este tipo tendría que usar.

En el diagrama siguiente se muestra un árbol de elementos de cámara y la categoría de la propiedad WIA_IPA_ITEM_CATEGORY que se debe establecer.

diagrama que ilustra un árbol de cámara que muestra una categoría.

En la ilustración anterior, el árbol de la izquierda representa el árbol de elementos de cámara. El globo de la derecha contiene la categoría que un dispositivo de este tipo tendría que usar.

En el diagrama siguiente se muestra el árbol de elementos de un escáner con un alimentador de documentos y un escáner de película, y las marcas de la propiedad WIA_ITEM_FLAGS que se deben establecer.

diagrama que ilustra el árbol de elementos de un escáner con un alimentador de documentos y un escáner de película, y las marcas de elemento wia.

En la ilustración anterior, el árbol de la izquierda representa el árbol de elementos del analizador. Los globos de la derecha contienen las marcas de elemento WIA que un dispositivo de este tipo tendría que usar.

En la ilustración siguiente se muestra el árbol de elementos de un analizador y las categorías de la propiedad WIA_IPA_ITEM_CATEGORY que se deben establecer.

diagrama que ilustra el árbol de elementos de un escáner y las categorías que se deben establecer.

En la ilustración anterior, el árbol de la izquierda representa el árbol de elementos del analizador. Los globos de la derecha contienen las categorías de la propiedad WIA_IPA_ITEM_CATEGORY que debe establecer un dispositivo de este tipo.

Para obtener una lista completa de todas las categorías definidas por WIA e información sobre las marcas de elementos WIA válidas para cada categoría, consulte WIA_IPA_ITEM_CATEGORY.

Para obtener una lista completa de todas las marcas de elementos wia, consulte WIA_IPA_ITEM_FLAGS.

En el ejemplo de código siguiente se muestra cómo una aplicación podría usar la combinación de las propiedades WIA_IPA_ITEM_FLAGS y WIA_IPA_ITEM_CATEGORY para clasificar un elemento WIA que se encuentra en el árbol de elementos de 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;
    }
    ...
}
...