IOCTL_SMARTCARD_SET_PROTOCOL IOCTL(winsmcrd.h)
IOCTL_SMARTCARD_SET_PROTOCOL 요청은 카드 검색(삽입)된 후 드라이버가 스마트 카드 통신하는 데 사용할 프로토콜을 설정합니다.
주 코드
입력 버퍼
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 |