共用方式為


IOCTL_NFCSE_HCE_REMOTE_RECV IOCTL (nfcsedev.h)

傳回可用的下一個數據緩衝區,或如果沒有其他緩衝的數據,要求應該會保持擱置,直到 APDU 緩衝區可供讀取為止。 然後,數據緩衝區應傳回給呼叫端。 請注意,呼叫端必須配置足夠大的輸出緩衝區,以保存已接收的最大 APDU + 4 個字節額外負荷。

主要程序代碼

IRP_MJ_DEVICE_CONTROL

輸入緩衝區

沒有

輸入緩衝區長度

沒有

輸出緩衝區

DWORD,指出 SECURE_ELEMENT_HCE_DATA_PACKET 結構的大小加上其承載,緊接著 SECURE_ELEMENT_HCE_DATA_PACKET 結構本身。

狀態區塊

如果要求成功,Irp->IoStatus.Status 會設定為 STATUS_SUCCESS。 可能的錯誤碼如下:

傳回碼 描述
STATUS_BUFFER_OVERFLOW 提供的緩衝區太小而無法接收通知,第一個 DWORD 將包含預期的緩衝區大小。
STATUS_INVALID_PARAMETER 如果輸入緩衝區不是零。
STATUS_INVALID_DEVICE_STATE 如果 IOCTL 是以相對名稱 『SEManage』 以外的句柄傳送。

言論

以下是驅動程序必須遵循的需求。

  • 觸發 HCE Activated 事件之後,此 IOCTL 會在現有連線上傳送。
  • 此附加IOCTL上的驅動程序必須支援 CancelIo。
  • 驅動程式必須維護目前連線所接收APDU的「已接收」佇列。
  • 當驅動程式中收到此 IOCTL 時:
    • 如果 「Received」 佇列是空的,則驅動程序必須將 IOCTL 畫上筆,以供稍後完成。
    • 如果「已接收」佇列非空白,則驅動程式必須取消排入一個 APDU 佇列,將 APDU 緩衝區複製到 IOCTL 的輸出緩衝區,然後立即完成 IOCTL 並STATUS_SUCCESS。
  • 如果驅動程式使用 STATUS_SUCCESS 完成此 IOCTL,輸出緩衝區的第一個 DWORD [4 個字節] 必須包含SECURE_ELEMENT_HCE_DATA_PACKET結構的大小加上其承載。
  • 如果收到的 APDU 資料太大而無法複製到此 IOCTL 的輸出緩衝區,驅動程式必須將所需的緩衝區大小複製到輸出緩衝區的前 4 個字節,將 IOCTL 的資訊欄位設定為 sizeof(DWORD),並使用 STATUS_BUFFER_OVERFLOW完成 IOCTL。 APDU 數據必須留在「已接收」佇列中。

要求

要求 價值
標頭 nfcsedev.h