共用方式為


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 。 可能的錯誤碼為:

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

備註

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

  • 觸發 HCE Activated 事件之後,這個 IOCTL 會在現有的連線上傳送。
  • 驅動程式必須在此手寫筆 IOCTL 上支援 CancelIo。
  • 驅動程式必須針對目前連線維護所接收APDU的「已接收」佇列。
  • 在驅動程式中收到此 IOCTL 時:
    • 如果 「Received」 佇列是空的,則驅動程序必須畫上 IOCTL 以供稍後完成。
    • 如果“Received” 佇列不是空的,則驅動程式必須取消佇列一個 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