IOCTL_NFCSE_SET_ROUTING_TABLE IOCTL (nfcsedev.h)

NFC コントローラーのリッスン モード ルーティング テーブルを構成します。 呼び出し元は、1 回の呼び出しで完全なリッスン モードのルーティング情報を送信する必要があることに注意してください。 呼び出し元は、ルーティング テーブルが 4.2.5.1 で定義されている cbMaxRoutingTableSize 値より小さいことを確認する必要があります。 合計サイズは NFC NCI 標準秒 6.3.2 に従って計算され、AID ベースのルートの数 x 4 + cbAid の合計 + テクノロジ ベースのルートの数 x 5 + プロトコル ベースのルートの数 x 5 に等しくなります。 呼び出し元は、テクノロジベースおよびプロトコルベースのルートの値が NCI NFC 仕様 6.3.2 に準拠していることを確認する必要があります。

メジャー コード

IRP_MJ_DEVICE_CONTROL

入力バッファー

現在構成されているすべてのルーティング エントリを含む SECURE_ELEMENT_ROUTING_TABLE

出力バッファー

何一つ

状態ブロック

Irp->IoStatus.Status は、要求が成功した場合に STATUS_SUCCESS に設定されます。 考えられるエラー コードは次のとおりです。

リターン コード 形容
STATUS_INVALID_BUFFER_SIZE 指定されたバッファーが NFC コントローラーのMAX_ROUTING_TABLE_SIZEより大きかった。
STATUS_FEATURE_NOT_SUPPORTED NFCC では、リッスン モードのルーティング構成はサポートされていません。
STATUS_INVALID_PARAMETER この状態は、出力バッファーが 0 以外の場合、またはテクノロジまたはプロトコルに使用される値が NFC NCI 仕様 6.3.2 に準拠している場合、または重複する AID が使用されている場合、または現在の NFC コントローラー機能でサポートされていないルーティング モードを使用している場合に返されます。
STATUS_INVALID_DEVICE_STATE このコードは、相対名 'SEManage' 以外のハンドルで IOCTL が送信された場合に返されます。

備考

ドライバーが準拠する必要がある要件を次に示します。

  • この IOCTL は、"SEManage" 相対ファイル名を持つハンドルで送信されます。それ以外の場合、ドライバーは STATUS_INVALID_DEVICE_STATE で完了する必要があります。
  • ドライバーには、RF テクノロジ A、B、F、または UICC SE にルーティングされる ISO-DEP プロトコル (存在する場合) をルーティングする初期の既定のリッスン モード ルーティング テーブル エントリが含まれている必要があります。 これらのルーティング エントリは、後でデバイス ホストによって開始される新しいリッスン モード ルーティング テーブル構成によってオーバーライドされる可能性があります。
  • ドライバーは、プロトコル NFC-DEP が常にデバイス ホストにマップされていることを確認する必要があります。 呼び出し元がこれを指定しない場合でも、ドライバーは暗黙的にこの規則を追加する必要があります。
  • NFCC が RF 検出状態のときにこの IOCTL が発行された場合、ドライバーは NFCC を RF アイドル状態にし、ルーティング テーブルを構成して、RF 検出を再起動する必要があります。

必要条件

要件 価値
ヘッダー nfcsedev.h