Compartir a través de


Inicialización del minidriver WIA

El primer paso para implementar la interfaz IWiaMiniDrv es inicializar el minidriver y crear un árbol jerárquico de elementos de controlador. Para ello, el servicio WIA llama al método IWiaMiniDrv::d rvInitializeWia cada vez que una aplicación cliente pretende usar el dispositivo. Si dos o más aplicaciones usan simultáneamente el dispositivo, el servicio WIA llama a este método para cada aplicación. En este método, el minidriver normalmente hace lo siguiente:

  1. Inicializa los parámetros pasados desde el servicio WIA.

  2. Guarda la interfaz del dispositivo STI a la que apunta pStiDevice. Esto se hace para que los métodos IStiDevice::LockDevice e IStiDevice::UnLockDevice se puedan usar para bloquear o desbloquear el dispositivo WIA.

  3. Almacena en caché bstrDeviceID y bstrRootFullItemName en variables miembro para que otros métodos puedan usarlos.

  4. Abre un identificador para el dispositivo. (Este paso se recomienda para puertos no compartidos, como USB, SCSI y 1394).

  5. Compila el árbol de elementos, tal y como se describe en Crear el árbol de elementos del controlador WIA.

El método IWiaMiniDrv::d rvInitializeWia también se puede usar para crear e inicializar matrices y estructuras dinámicas que usa el controlador. Por ejemplo, el método IWiaMiniDrv::d rvGetCapabilities puede crear una matriz de comandos y eventos que admite el controlador.

Nota Es posible que se llame al método IWiaMiniDrv::d rvGetCapabilities antes de llamar a IWiaMiniDrv::d rvInitializeWia . Esto puede ocurrir cuando el servicio WIA necesita consultar la información de eventos antes de que exista una aplicación para usar el dispositivo. Solo se llama al método IWiaMiniDrv::d rvInitializeWia cuando una aplicación señala su intención de usar el dispositivo.

Realizar un seguimiento de las conexiones de aplicación

Como se indicó anteriormente, cuando una aplicación pretende comunicarse con un dispositivo WIA, el servicio WIA llama al método IWiaMiniDrv::d rvInitializeWia del controlador adecuado. Cuando la aplicación finaliza con el dispositivo y libera todas las referencias de WIA a él, el servicio WIA llama al método IWiaMiniDrv::d rvUnInitializeWia del controlador adecuado. Tenga en cuenta que WIA admite varias conexiones de aplicaciones simultáneas. Esto significa que dos o más aplicaciones pueden solicitar una interfaz WIA asociada al mismo dispositivo. Sin embargo, no significa que el controlador deba controlar las solicitudes simultáneas; El servicio WIA garantiza que solo se envíe una solicitud al controlador a la vez. Sin embargo, el servicio WIA puede llamar al método IWiaMiniDrv::d rvInitializeWia varias veces antes de llamar al método IWiaMiniDrv::d rvUnInitializeWia .

¿Por qué esta información es útil? A menudo hay recursos que los controladores pueden necesitar cuando las aplicaciones los usan, como el árbol de elementos del controlador WIA, las bibliotecas de filtrado de imágenes y otros. Dado que estos recursos pueden ocupar una gran cantidad de memoria, es mejor descargarlos cuando no son necesarios.

Nota Los métodos IWiaMiniDrv::d rvInitializeWia e IWiaMiniDrv::d rvUnInitializeWia se usan para informar solo a los controladores de las conexiones de aplicación. El servicio WIA puede llamar a otros métodos de controlador sin llamar primero a IWiaMiniDrv::d rvInitializeWia, lo que significa que el servicio WIA no llama necesariamente a IWiaMiniDrv::d rvUnInitializeWia cuando se realiza. Los métodos llamados son métodos informativos que no requieren elementos WIA, como IWiaMiniDrv::d rvGetCapabilities e IWiaMiniDrv::d rvGetWiaFormatInfo.

Esta sección contiene los siguientes temas:

Orden de llamada para funciones de Minidriver

Carga y descarga de un minidriver WIA

Conexión y desconexión de una aplicación WIA

Notificación del estado del minidriver wia