다음을 통해 공유


스마트 카드 드라이버 라이브러리와의 상호 작용

다음 그림에서는 판독기 드라이버가 리소스 관리자로부터 받은 IOCTL 요청을 처리하기 위해 스마트 카드 드라이버 라이브러리와 상호 작용하는 방법을 보여 줍니다.

판독기 드라이버가 스마트 카드 드라이버 라이브러리와 상호 작용하여 ioctl 요청을 처리하는 방법을 보여 주는 다이어그램

다음 숫자는 이전 그림의 숫자와 일치합니다. 숫자 1부터 이 그림은 IOCTL 요청을 처리하기 위해 판독기 드라이버가 완료해야 하는 단계(시스템 제공 드라이버 라이브러리와 함께)를 보여 줍니다.

  1. 판독기 드라이버는 모든 IOCTL 요청을 SmartcardDeviceControl(WDM) 드라이버 라이브러리 루틴에 전달합니다.

  2. 판독기 드라이버가 SmartcardDeviceControl 에 전달하는 매개 변수가 올바르지 않으면 SmartcardDeviceControl 은 오류 메시지와 함께 를 반환합니다. SmartcardDeviceControl 은 IOCTL 요청을 완료하지 않고 반환됩니다. 이 경우 판독기 드라이버는 IOCTL 요청을 완료해야 합니다.

  3. 매개 변수가 유효한 경우 SmartcardDeviceControl 은 가능하면 IOCTL 요청을 처리합니다.

  4. SmartcardDeviceControl 은 판독기 드라이버에 처리 중인 IOCTL 요청에 대해 정의된 콜백 루틴이 있는지 확인합니다. 콜백이 있는 경우 SmartcardDeviceControl이 호출합니다.

  5. 콜백 루틴은 IOCTL 요청 처리를 완료하는 데 필요한 모든 드라이버 라이브러리 루틴을 호출합니다.

  6. IOCTL 요청을 처리한 후 콜백 루틴은 SmartcardDeviceControl로 돌아갑니다.

  7. SmartcardDeviceControl 은 IOCTL을 탑재한 IRP를 완료합니다.

  8. SmartcardDeviceControl 은 컨트롤을 판독기-드라이버 디스패치 루틴으로 반환합니다.

스마트 카드 라이브러리는 판독기 드라이버에 대한 액세스를 동기화합니다. 두 개의 콜백 함수가 동시에 호출되지 않습니다. 그러나 카드 삽입 및 제거에 대한 이벤트 처리는 비동기적으로 처리되어야 합니다.