Interacción con la biblioteca de controladores de tarjeta inteligente
En la ilustración siguiente se muestra cómo interactúa un controlador de lector con la biblioteca de controladores de tarjeta inteligente para procesar las solicitudes IOCTL que recibe del administrador de recursos:
Los números siguientes corresponden a los números de la ilustración anterior. A partir del número 1, la ilustración muestra los pasos que debe completar un controlador de lector (junto con la biblioteca de controladores proporcionada por el sistema) para procesar una solicitud IOCTL:
El controlador de lector pasa todas las solicitudes IOCTL a la rutina de biblioteca de controladores SmartcardDeviceControl (WDM ).
Si los parámetros que el controlador de lector pasa a SmartcardDeviceControl son incorrectos, SmartcardDeviceControl devuelve con un mensaje de error. SmartcardDeviceControl devuelve sin completar la solicitud IOCTL. En esta situación, el controlador del lector debe completar la solicitud IOCTL.
Si los parámetros son válidos, SmartcardDeviceControl procesa la solicitud IOCTL si es posible.
SmartcardDeviceControl comprueba si el controlador del lector tiene definida una rutina de devolución de llamada para la solicitud IOCTL que está procesando. Si la devolución de llamada existe, SmartcardDeviceControl la llama.
La rutina de devolución de llamada llama a todas las rutinas de la biblioteca de controladores necesarias para completar el procesamiento de la solicitud IOCTL.
Después de procesar la solicitud IOCTL, la rutina de devolución de llamada vuelve a SmartcardDeviceControl.
SmartcardDeviceControl completa el IRP que llevó el IOCTL.
SmartcardDeviceControl devuelve el control a la rutina de distribución del controlador de lector.
La biblioteca de tarjetas inteligentes sincroniza el acceso al controlador de lector. No se llamará a dos funciones de devolución de llamada al mismo tiempo. Sin embargo, el control de eventos para la inserción y eliminación de tarjetas debe procesarse de forma asincrónica.