WDM 판독기 드라이버
필수 루틴
WDM 판독기 드라이버에는 다음 루틴이 필요합니다.
DriverEntry
드라이버 개체와 디스패치 테이블을 초기화합니다.
AddDevice
스마트 카드 판독기용 디바이스 개체를 만듭니다. 또한 AddDevice는 다음 드라이버 라이브러리 루틴을 호출할 수 있습니다.
- 드라이버 초기화를 완료하기 위한 SmartcardInitialize(WDM) AddDevice에서 이 루틴을 호출하는 것은 필수입니다.
- 오류를 기록하기 위한 SmartcardLogError(WDM) WDM(SmartcardInitialize)이 실패하면 드라이버는 AddDevice에서 이 루틴을 호출해야 합니다.
- WDM(SmartcardCreateLink) 을 사용하여 레지스트리에서 판독기 디바이스에 대한 기호 링크를 만듭니다.
언로드
시스템에서 드라이버를 제거합니다.
DispatchCreate
및
DispatchClose
각각 IRP_MJ_CREATE 및 IRP_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 -> DeviceExtension;
return SmartcardDeviceControl(
&(deviceExtension->SmartcardExtension),
Irp
);
호출에 표시된 특정 IOCTL을 처리할 수 없는 경우 SmartcardDeviceControl 은 알 수 없는 IOCTL 요청에 대해 드라이버의 콜백을 호출합니다.