IOCTL_NFCSE_HCE_REMOTE_RECV IOCTL (nfcsedev.h)
使用可能な次のデータ バッファーを返すか、バッファーに格納されたデータがない場合は、APDU バッファーが読み取り可能になるまで、要求は保留中の状態を維持します。 その後、データ バッファーは呼び出し元に返されます。 呼び出し元は、受信した最大の APDU と 4 バイトのオーバーヘッドを保持するのに十分な大きさの出力バッファーを割り当てる必要があることに注意してください。
メジャー コード
[入力バッファー]
なし
入力バッファーの長さ
なし
出力バッファー
SECURE_ELEMENT_HCE_DATA_PACKET構造体のサイズとそのペイロードを示す DWORD。その直後にSECURE_ELEMENT_HCE_DATA_PACKET構造体自体が続きます。
ステータス ブロック
Irp->要求が成功した場合、IoStatus.Status は STATUS_SUCCESS に設定されます。 考えられるエラー コードは次のとおりです。
リターン コード | 説明 |
---|---|
STATUS_BUFFER_OVERFLOW | 指定されたバッファーが小さすぎて通知を受信できませんでした。最初の DWORD には、予期されるバッファー サイズが含まれます。 |
STATUS_INVALID_PARAMETER | 入力バッファーが 0 以外の場合。 |
STATUS_INVALID_DEVICE_STATE | 相対名 'SEManage' 以外のハンドルで IOCTL が送信される場合。 |
注釈
ドライバーが準拠する必要がある要件を次に示します。
- この IOCTL は、HCE アクティブ化イベントがトリガーされた後、既存の接続で送信されます。
- ドライバーは、このペン付き IOCTL で CancelIo をサポートする必要があります。
- ドライバーは、現在の接続に対して、受信した APDU の "Received" キューを維持する必要があります。
- ドライバーでこの IOCTL を受信した場合:
- "Received" キューが空の場合、ドライバーは後で完了するために IOCTL をペンする必要があります。
- "Received" キューが空でない場合、ドライバーは 1 つの APDU のキューを解除し、APDU バッファーを IOCTL の出力バッファーにコピーし、STATUS_SUCCESSすぐに IOCTL を完了する必要があります。
- ドライバーがSTATUS_SUCCESSでこの IOCTL を完了した場合、出力バッファーの最初の DWORD [4 バイト] には、SECURE_ELEMENT_HCE_DATA_PACKET構造体のサイズとそのペイロードが含まれている必要があります。
- 受信した APDU データが大きすぎてこの IOCTL の出力バッファーにコピーできない場合、ドライバーは必要なバッファー サイズを出力バッファーの最初の 4 バイトにコピーし、IOCTL の情報フィールドを sizeof(DWORD) に設定し、ioCTL を STATUS_BUFFER_OVERFLOWで完了する必要があります。 APDU データは、"Received" キューに残しておく必要があります。
要件
要件 | 値 |
---|---|
Header | nfcsedev.h |