IOCTL_SMARTCARD_SET_PROTOCOL IOCTL(winsmcrd.h)

IOCTL_SMARTCARD_SET_PROTOCOL 요청은 카드 검색(삽입)된 후 드라이버가 스마트 카드 통신하는 데 사용할 프로토콜을 설정합니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

  • Irp->ASSOCIATedIrp.SystemBuffer 다음 전송에 허용되는 프로토콜 마스크를 포함합니다. 마스크는 다음 값의 비트 OR일 수 있습니다.

    • SCARD_PROTOCOL_RAW
    • SCARD_PROTOCOL_T0
    • SCARD_PROTOCOL_T1
    • SCARD_PROTOCOL_DEFAULT
    • SCARD_PROTOCOL_OPTIMAL

    마지막 두 값은 드라이버가 최상의 통신 매개 변수(SCARD_PROTOCOL_OPTIMAL)를 사용하여 PTS(프로토콜 형식 선택)를 명시적으로 수행하거나 표준 매개 변수(SCARD_PROTOCOL_DEFAULT)와 함께 카드 암시적 프로토콜을 사용해야 함을 나타내는 추가 비트 정의입니다. 카드 하나의 통신 매개 변수 집합이 있는 하나의 프로토콜만 지원하는 경우 비트는 무시됩니다.

  • Parameters.DeviceIoControl.InputBufferLength 는 sizeof(ULONG)로 설정해야 합니다. 드라이버는 삽입된 카드 사용할 프로토콜을 마스크에서 결정합니다.

출력 버퍼

  • Irp->AssociatedIrp.SystemBuffer 드라이버는 선택한 프로토콜을 여기에 저장합니다(예: SCARD_PROTOCOL_T1). 마스크에서 한 비트만 설정할 수 있습니다.

출력 버퍼 길이

  • Parameters.DeviceIoControl.OutputBufferLength 는 sizeof(ULONG)여야 합니다.

상태 블록

Irp->IoStatus.Information 은 sizeof(ULONG)로 설정해야 합니다.

Irp->IoStatus.Status 는 다음 값 중 하나로 설정됩니다.

의미
STATUS_SUCCESS 프로토콜이 성공적으로 선택되었습니다.
STATUS_NO_MEDIA 판독기에서 스마트 카드 검색되지 않습니다.
STATUS_IO_TIMEOUT 작업 시간이 초과되었습니다.
STATUS_NOT_SUPPORTED 스마트 카드 요청된 프로토콜을 지원하지 않습니다.
STATUS_INVALID_DEVICE_REQUEST 마스크에 알려진 프로토콜이 없습니다.

자세한 내용은 NTSTATUS 값을 참조하세요.

요구 사항

요구 사항
헤더 winsmcrd.h

추가 정보

NFC(근거리 통신) 디자인 가이드

스마트 카드 디자인 가이드