次の方法で共有


IOCTL_NFCSE_SET_CARD_EMULATION_MODE IOCTL (nfcsedev.h)

IOCTL_NFCSE_SET_CARD_EMULATION_MODE制御コードは、指定した secure 要素がエミュレーション モードで公開されるかどうかをカード設定します。 セキュリティで保護された要素がエミュレーション カードとして "公開" されている場合は、デバイスが外部リーダーに持ち込まれるときに、セキュリティで保護された要素にリーダーがアクセスできることを意味します。 IOCTL は、相対ファイル名 'SEManage' で開かれたファイル ハンドルに対して発行されます。 ドライバーは、エミュレーション モードカード管理するためにクライアントに排他アクセス権を付与する必要があります。つまり、後続の呼び出しで相対ファイル名 'SEManage' を使用してファイル ハンドルを開くと、排他的アクセス権を持つクライアントがそのファイル ハンドルを閉じるまで、STATUS_ACCESS_DENIEDで失敗します。

メジャー コード

IRP_MJ_DEVICE_CONTROL

[入力バッファー]

SECURE_ELEMENT_SET_CARD_EMULATION_MODE_INFO 構造体。

出力バッファー

なし

ステータス ブロック

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

リターン コード 説明
STATUS_INVALID_PARAMETER セキュリティで保護された要素の GUID が無効な場合、または出力バッファーが 0 以外の場合。
STATUS_INVALID_DEVICE_STATE 相対名 'SEManage' 以外のハンドルで IOCTL が送信される場合。

注釈

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

  • この IOCTL は、SEEvents 相対ファイル名を持つハンドルで呼び出す必要があります。それ以外の場合、ドライバーはSTATUS_INVALID_DEVICE_STATEを返します。
  • カードエミュレーション モードが NFC コントローラーに接続されているすべてのセキュリティで保護された要素に対してエミュレーション オフに設定されている場合は、ポーリング ループのエミュレーション モードを無効にする必要があります。 近接機能も無効になっている場合、ドライバーは低電力モードに移行する必要があります。
  • エミュレーション モードカードエミュレーション オフ以外の値に設定されている場合、ドライバーは引き続き D0 状態であり、ポーリング ループのエミュレーション モードを有効にする必要があります (外部リーダーが検出可能)。
  • SEManage で開かれたファイル ハンドルを閉じると、ドライバーは、エミュレーション モードの最後の設定カード状態がエミュレーションOnPowerIndependentである場合を除き、すべてのセキュリティで保護された要素のカード エミュレーション モード設定をエミュレーションオフに設定する必要があります。 エミュレーション モードの状態カード最後に設定されたがエミュレーションOnPowerIndependent の場合、ドライバーは、特定のセキュリティで保護された要素の PbF オプションを使用して、カード エミュレーション モードの設定をオンのままにする必要があります。
  • ドライバーは、エミュレーション モードを管理するために、クライアントへの排他的アクセスカード付与する必要があります。 相対ファイル名 SEManage を使用してファイル ハンドルを開く後続の呼び出しは、排他的アクセス権を持つクライアントがそのファイル ハンドルを閉じるまで、STATUS_ACCESS_DENIEDで失敗します。

要件

要件
Header nfcsedev.h