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。 可能的錯誤碼如下:
傳回碼 | 描述 |
---|---|
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 |