IOCTL_SMARTCARD_TRANSMIT IOCTL (winsmcrd.h)

IOCTL_SMARTCARD_TRANSMIT要求會將數據傳送至插入的智慧卡,並從中接收數據。

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

  • Irp->AssociatedIrp.SystemBuffer指向SCARD_IO_REQUEST 結構的指標,後面接著要傳送至插入智慧卡的數據。

輸入緩衝區長度

  • Parameters.DeviceIoControl.InputBufferLength 如果有任何) ,則包含結構的大小加上尾端數據位元組的長度 (。 dwProtocol 成員必須設定為先前選取的通訊協定,而 cbPciLength 成員必須設定為SCARD_IO_REQUEST結構本身的大小 (通常是八個字節) 。 結構用於未來的通訊協定。 將傳輸至卡片的數據必須緊接在此結構之後。

輸出緩衝區

位元組緩衝區包含傳輸的結果。 緩衝區會指向SCARD_IO_REQUEST結構,緊接在收到的數據之後。

  • Irp->AssociatedIrp.SystemBuffer 接收傳輸的結果。 這個緩衝區也必須以 SCARD_IO_REQUEST 結構開頭。 從卡片接收的任何數據都必須緊接在 結構之後儲存。

輸出緩衝區長度

  • Parameters.DeviceIoControl.OutputBufferLength 包含輸出緩衝區的長度。

狀態區塊

Irp->IoStatus.Status 設定為下列其中一個值。

意義
STATUS_SUCCESS 傳輸成功。
STATUS_NO_MEDIA 讀取器中未偵測到任何智慧卡。
STATUS_IO_TIMEOUT 作業逾時。
STATUS_INVALID_DEVICE_STATE 標頭檔中的通訊協定與先前選取的智慧卡通訊協定不符。
STATUS_BUFFER_TOO_SMALL 輸出緩衝區對於傳回數據而言太小。
STATUS_DEVICE_POWERED_OFF 鄰近無線電控制已關閉。

備註

IOCTL_SMARTCARD_TRANSMIT 會將數據從用戶端傳輸到符合 ISO7816-4 規範的APDU中偵測到的智慧卡。 這些APTU會解譯為PC/SC規格 (第4.3.7節有更詳細的支援不同NFC無聯繫人捲標格式) 需求。 因為 NFP 功能與智慧卡共用相同的驅動程式,所以應該在探索之後立即連線該卡片,因此不需要 『Transmit』 的明確連線。

因為輸入緩衝區和輸出緩衝區指向相同的記憶體區域,所以驅動程式必須避免覆寫輸入數據。 使用智慧卡驅動程序連結庫,確定不會覆寫輸入數據。

規格需求

需求
標頭 winsmcrd.h

另請參閱

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

智慧卡設計指南