스마트 카드 드라이버 라이브러리 콜백 루틴

스마트 카드 아키텍처는 표준 콜백 루틴 형식 집합을 정의합니다. 이러한 루틴에 대한 자세한 내용은 스마트 카드 드라이버 콜백을 참조하세요.

판독기 드라이버는 드라이버 라이브러리 루틴인 SmartcardDeviceControl(WDM)에서 이러한 콜백 루틴을 사용할 수 있도록 해야 하며, SMARTCARD_EXTENSION 형식인 스마트 카드 디바이스 확장에 포인터를 저장하여 호출해야 합니다. 이러한 포인터는 SMARTCARD_EXTENSION 구조체의 ReaderFunction 멤버에 있는 배열에 저장됩니다. 개별 콜백 루틴은 ReaderFunction 배열의 인덱스로 사용해야 하는 일련의 상수 값으로 식별할 수 있습니다.

instance 경우 SmartcardDeviceControlIOCTL_SMARTCARD_POWER 요청 처리를 완료할 때마다 DriverCardPower라는 판독기 드라이버에서 콜백 루틴을 호출하려면 RDF_CARD_POWER 상수를 사용하여 다음과 같은 방식으로 디바이스 확장을 초기화해야 합니다.

SmartcardExtension->ReaderFunction[RDF_CARD_POWER] = 
DriverCardPower;

RDF_CARD_POWER 항상 IOCTL_SMARTCARD_POWER 요청을 서비스하는 콜백 루틴에 해당하는 고정된 시스템 정의 상수입니다.

처리 중인 IOCTL에 해당하는 ReaderFunction 배열의 멤버가 NULL인 경우 SmartcardDeviceControl은 판독기 드라이버에 STATUS_NOT_SUPPORTED 상태 반환합니다. 경우에 따라 이 동작이 유용합니다. 예를 들어 드라이버가 카드 꺼내거나 삼키는 카드 지원하지 않는 경우 ReaderFunction 배열의 적절한 멤버를 NULL로 할당하면 SmartcardDeviceControl은 해당 멤버 루틴이 호출될 때마다 STATUS_NOT_SUPPORTED 반환합니다.

다음 표에서는 다양한 유형의 콜백 루틴을 식별하는 상수를 나열합니다. ReaderFunction 배열의 인덱스로 사용해야 하는 상수입니다. 또한 테이블은 각 루틴 형식에 대한 간략한 설명을 제공하고 판독기 드라이버가 루틴을 구현하는 것이 필수인지 선택 사항인지 여부를 나타냅니다.

인덱스 해당 콜백 루틴에 대한 설명 판독기 드라이버의 구현

RDF_CARD_POWER

삽입된 스마트 카드 다시 설정하거나 해제합니다.

필수

RDF_CARD_EJECT

삽입된 스마트 카드 꺼내기

선택 사항

RDF_CARD_TRACKING

카드 삽입 및 제거를 추적하는 이벤트 처리기를 설치합니다.

필수

RDF_IOCTL_VENDOR

공급업체별 IOCTL 작업 수행

선택 사항

RDF_READER_SWALLOW

기계적 제비 수행

선택 사항

RDF_SET_PROTOCOL

카드 판독기에서 카드 대한 전송 프로토콜을 선택합니다.

필수

RDF_TRANSMIT

데이터 전송 수행

필수

판독기 드라이버가 이러한 루틴을 호출할 때 스마트 카드 드라이버 콜백에 설명된 대로 입력 버퍼에서 호출 매개 변수를 검색해야 합니다. 판독기 드라이버는 동일한 섹션에 설명된 대로 출력 데이터를 적절한 버퍼 영역에 저장해야 합니다.

카드 추적 콜백 루틴 이외의 콜백 루틴이 STATUS_PENDING 반환되면 스마트 카드 라이브러리는 판독기 드라이버의 추가 호출 서비스를 중지합니다. (카드 추적 콜백 루틴에 대한 자세한 내용은 RDF_CARD_TRACKING 참조하세요. 라이브러리가 이 상태에 있는 동안 판독기 드라이버가 드라이버 라이브러리 루틴을 사용하려고 하면 라이브러리 루틴은 STATUS_DEVICE_BUSY 상태 반환합니다. 이렇게 하면 판독기 드라이버가 SmartcardDeviceControl을 호출할 수 없는 경우 IOCTL 요청을 처리할 수 없으므로 판독기 드라이버가 리소스 관리자의 IOCTL 요청을 효과적으로 처리할 수 없습니다.