다음을 통해 공유


예제 시퀀스

다음은 스마트 카드 리소스 관리자의 IOCTL 예제 시퀀스입니다.

시작 시퀀스

  1. 스마트 카드 액세스 디바이스 인터페이스 GUID와 함께 DevObj 또는 CfgMgr API를 사용하여 NFC 디바이스 드라이버의 이름을 검색하고 CreateFile과 함께 사용하여 디바이스 핸들을 엽니다.

  2. 스레드 풀을 초기화합니다.

  3. 판독기 이름을 확인합니다.

    • SCARD_ATTR_VENDOR_NAME, SCARD_ATTR_VENDOR_IFD_TYPE 및 SCARD_ATTR_DEVICE_UNIT 대한 IOCTL_SMARTCARD_GET_ATTRIBUTE
  4. 판독기 특성을 확인합니다.

    • IOCTL_SMARTCARD_GET_ATTRIBUTE on SCARD_ATTR_CHARACTERISTICS
  5. 카드 상태 모니터를 시작합니다.

    • IOCTL_SMARTCARD_IS_PRESENT – 스마트 카드 도착을 기다립니다.

    • IOCTL_SMARTCARD_IS_ABSENT – 스마트 카드 출발을 기다립니다.

전원 재설정은 SCARD_SWALLOWED SCARD_POWERED 상태를 지원하지 않으므로 관련이 없습니다.

연결 시퀀스

  1. 루프의 시작입니다.

  2. IOCTL_SMARTCARD_GET_STATE

    • 사례 SCARD_UNKNOWN 및 SCARD_ABSENT 아무 것도 수행하지 않습니다.

    • 케이스 SCARD_PRESENT, 제비 카드

    • 사례 SCARD_SWALLOWED, 콜드 재설정

    • 케이스 SCARD_POWERED, 웜 리셋

    • 사례 SCARD_NEGOTIABLE, 카드 ATR 확인

    • 사례 SCARD_SPECIFIC, 카드 ATR 및 프로토콜 확인

  3. IOCTL_SMARTCARD_SET_PROTOCOL

연결 끊기 시퀀스

  1. 전원 중지 시간 제한이 시작됩니다.

  2. 루프의 시작입니다.

  3. IOCTL_SMARTCARD_GET_STATE

    • 대/소문자 SCARD_SPECIFIC, SCARD_NEGOTIABLE, SCARD_POWERED 전원을 낮추기

    • 사례 SCARD_SWALLOWED, SCARD_PRESENT, 아무 것도 수행하지 않음

    • 사례 SCARD_ABSENT SCARD_UNKNOWN 아무 것도 수행하지 않습니다.