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
最後兩個值是額外的位定義,指出驅動程式必須明確執行通訊協定類型選取 (PTS) , (SCARD_PROTOCOL_OPTIMAL) 最佳通訊參數,或使用卡片的隱含通訊協定搭配標準參數 (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 |