WDM 판독기 드라이버

필수 루틴

WDM 판독기 드라이버에는 다음 루틴이 필요합니다.

DriverEntry

드라이버 개체와 디스패치 테이블을 초기화합니다.

AddDevice

스마트 카드 판독기용 디바이스 개체를 만듭니다. 또한 AddDevice는 다음 드라이버 라이브러리 루틴을 호출할 수 있습니다.

언로드

시스템에서 드라이버를 제거합니다.

DispatchCreate

DispatchClose

각각 IRP_MJ_CREATEIRP_MJ_CLOSE<를 지원합니다. 판독기 연결을 설정하기 위해 리소스 관리자는 판독기 드라이버에 IRP_MJ_CREATE 보냅니다. 연결을 끊기 위해 리소스 관리자는 IRP_MJ_CLOSE 보냅니다.

DispatchCleanup

리소스 관리자가 보류 중인 I/O 요청을 취소하기 위해 판독기 드라이버에 보내는 IRP_MJ_CLEANUP 지원합니다.

DispatchPnP

IRP_MJ_PNP 지원

DispatchPower

IRP_MJ_POWER 지원합니다.

DispatchDeviceControl

IRP_MJ_DEVICE_CONTROL 지원하며 스마트 카드 요청에 대한 기본 진입점입니다. IRP_MJ_DEVICE_CONTROL 받으면 DispatchDeviceControl은 디바이스 제어 요청을 처리하는 스마트 카드 드라이버 라이브러리 루틴인 SmartcardDeviceControl(WDM)을 즉시 호출해야 합니다. 다음 코드 예제에서는 WDM 드라이버에서 이 라이브러리 루틴을 호출하는 방법을 보여줍니다.

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

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

호출에 표시된 특정 IOCTL을 처리할 수 없는 경우 SmartcardDeviceControl 은 알 수 없는 IOCTL 요청에 대해 드라이버의 콜백을 호출합니다.