IOCTL_NFCSE_HCE_REMOTE_RECV IOCTL (nfcsedev.h)
傳回可用的下一個數據緩衝區,如果沒有其他緩衝的數據,要求應該會保持擱置中,直到 APDU 緩衝區可供讀取為止。 接著,數據緩衝區應該會傳回給呼叫端。 請注意,呼叫端必須配置夠大的輸出緩衝區,以保存已收到的最大 APDU + 4 個字節額外負荷。
主要程序代碼
輸入緩衝區
無
輸入緩衝區長度
無
輸出緩衝區
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 |