WDM 판독기 드라이버
WDM 판독기 드라이버에는 다음 루틴이 필요합니다.
드라이버 개체와 디스패치 테이블을 초기화합니다.
스마트 카드 판독기용 디바이스 개체를 만듭니다. 또한 AddDevice는 다음 드라이버 라이브러리 루틴을 호출할 수 있습니다.
- 드라이버 초기화를 완료하기 위한 SmartcardInitialize(WDM) AddDevice에서 이 루틴을 호출하는 것은 필수입니다.
- 오류를 기록하기 위한 SmartcardLogError(WDM) WDM(SmartcardInitialize)이 실패하면 드라이버는 AddDevice에서 이 루틴을 호출해야 합니다.
- WDM(SmartcardCreateLink) 을 사용하여 레지스트리에서 판독기 디바이스에 대한 기호 링크를 만듭니다.
시스템에서 드라이버를 제거합니다.
및
각각 IRP_MJ_CREATE 및 IRP_MJ_CLOSE<를 지원합니다. 판독기 연결을 설정하기 위해 리소스 관리자는 판독기 드라이버에 IRP_MJ_CREATE 보냅니다. 연결을 끊기 위해 리소스 관리자는 IRP_MJ_CLOSE 보냅니다.
리소스 관리자가 보류 중인 I/O 요청을 취소하기 위해 판독기 드라이버에 보내는 IRP_MJ_CLEANUP 지원합니다.
IRP_MJ_PNP 지원
IRP_MJ_POWER 지원합니다.
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 요청에 대해 드라이버의 콜백을 호출합니다.