Compartir a través de


Controlador de lector WDM

Required routines

Un controlador de lector WDM requiere las siguientes rutinas.

DriverEntry

Inicializa el objeto de controlador y la tabla de distribución.

AddDevice

Crea un objeto de dispositivo para el lector de tarjetas inteligentes. In addition, AddDevice can call any of the following driver library routines:

Unload

Quita el controlador del sistema.

DispatchCreate

-and-

DispatchClose

Supports IRP_MJ_CREATE and IRP_MJ_CLOSE<, respectively. To establish a connection to the reader, the resource manager sends IRP_MJ_CREATE to the reader driver. To sever the connection, the resource manager sends IRP_MJ_CLOSE.

DispatchCleanup

Supports IRP_MJ_CLEANUP, which the resource manager sends to the reader driver to cancel pending I/O requests.

DispatchPnP

Supports IRP_MJ_PNP

DispatchPower

Supports IRP_MJ_POWER.

DispatchDeviceControl

Supports IRP_MJ_DEVICE_CONTROL and is the main entry point for smart card requests. Upon receiving IRP_MJ_DEVICE_CONTROL, DispatchDeviceControl must immediately call SmartcardDeviceControl (WDM), which is the smart card driver library routine that handles device-control requests. En el ejemplo de código siguiente se muestra cómo llamar a esta rutina de biblioteca desde un controlador WDM:

NTSTATUS
DriverDeviceControl(
    PDEVICE_OBJECT DeviceObject,
    PIRP Irp
    )
{
    PDEVICE_EXTENSION deviceExtension = DeviceObject -&gt; DeviceExtension;

    return SmartcardDeviceControl(
        &(deviceExtension-&gt;SmartcardExtension),
        Irp
        );

If it is unable to handle the particular IOCTL that is indicated in the call, SmartcardDeviceControl will call the driver's callback for unknown IOCTL requests.