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

    最後兩個值是額外的位定義,指出驅動程式必須明確執行通訊協定類型選取 (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

另請參閱

近距離現場通訊 (NFC) 設計指南

智慧卡設計指南