다음은 스마트 카드 리소스 관리자의 IOCTL 예제 시퀀스입니다.
시작 시퀀스
스마트 카드 액세스 디바이스 인터페이스 GUID와 함께 DevObj 또는 CfgMgr API를 사용하여 NFC 디바이스 드라이버의 이름을 검색하고 CreateFile과 함께 사용하여 디바이스 핸들을 엽니다.
스레드 풀을 초기화합니다.
판독기 이름을 확인합니다.
- IOCTL_SMARTCARD_GET_ATTRIBUTE의 SCARD_ATTR_VENDOR_NAME, SCARD_ATTR_VENDOR_IFD_TYPE 및 SCARD_ATTR_DEVICE_UNIT
판독기 특성을 확인합니다.
- IOCTL_SMARTCARD_GET_ATTRIBUTE 명령어에서 SCARD_ATTR_CHARACTERISTICS 사용하기
카드 상태 모니터를 시작합니다.
IOCTL_SMARTCARD_IS_PRESENT – 스마트 카드 도착을 기다립니다.
IOCTL_SMARTCARD_IS_ABSENT – 스마트 카드가 제거될 때까지 기다립니다.
전원 재설정은 SCARD_SWALLOWED SCARD_POWERED 상태를 지원하지 않으므로 관련이 없습니다.
연결 시퀀스
루프의 시작입니다.
IOCTL_SMARTCARD_GET_STATE
사례 SCARD_UNKNOWN 및 SCARD_ABSENT 아무 것도 수행하지 않습니다.
케이스 SCARD_PRESENT, 제비 카드
사례 SCARD_SWALLOWED, 강제 재설정
케이스 SCARD_POWERED, 온도 리셋
사례 SCARD_NEGOTIABLE의 경우에, 카드 ATR 판별
사례 SCARD_SPECIFIC 카드 ATR 및 프로토콜 확인
IOCTL_SMARTCARD_SET_PROTOCOL
연결 해제 절차
전원 차단 타임아웃이 시작됩니다.
루프의 시작입니다.
IOCTL_SMARTCARD_GET_STATE
경우 SCARD_SPECIFIC, SCARD_NEGOTIABLE, SCARD_POWERED 및 전원 끄기 설정
실행 조건 SCARD_SWALLOWED, SCARD_PRESENT, 아무 작업도 하지 않음
사례 SCARD_ABSENT, SCARD_UNKNOWN, 아무 것도 하지 않음