次の方法で共有


IOCTL_NFCSE_GET_NEXT_EVENT IOCTL (nfcsedev.h)

IOCTL_NFCSE_GET_NEXT_EVENTコントロール コードは、バッファーで使用可能な次のイベントを返します。または、セキュリティで保護された要素イベントが使用可能になるまで、バッファー内のイベントがこれ以上保留状態のままでない場合はを返します。 その後、イベントの詳細を呼び出し元に返す必要があります。

メジャー コード

IRP_MJ_DEVICE_CONTROL

[入力バッファー]

なし

入力バッファーの長さ

なし

出力バッファー

SECURE_ELEMENT_EVENT_INFO構造体のサイズとそのペイロードを示す DWORD。その直後にSECURE_ELEMENT_EVENT_INFO構造体自体が続きます。

ステータス ブロック

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

リターン コード 説明
STATUS_INVALID_DEVICE_STATE このコードは、SEEvents 以外のファイル名を持つデバイス ハンドルでこの IOCTL が呼び出された場合、またはまだ完了していない保留中の要求が既に存在する場合に返されます。
STATUS_INVALID_PARAMETER このコードは、出力バッファーが 0 以外の場合、または secure 要素の GUID が列挙された ID のいずれにも一致しない場合に返されます。

注釈

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

  • この IOCTL は、 SEEvents 相対ファイル名を持つハンドルで呼び出す必要があります。それ以外の場合、ドライバーはSTATUS_INVALID_DEVICE_STATEを返します
  • このドライバーは、この保留中の IOCTL に対して CancelIO をサポートする必要があります。
  • このドライバーは、サブスクリプションの種類に一致する、受信したセキュリティで保護された要素イベントの受信キューを維持する必要があります。
  • ドライバーでこの IOCTL を受信する場合は、次の条件を満たす必要があります。
    • 受信したキューが空の場合、ドライバーは後で完了するために IOCTL をペンする必要があります。
    • 受信したキューが空でない場合、ドライバーは 1 つのイベントのキューを解除し、メッセージ バッファーを IOCTL の出力バッファーにコピーし、 ioCTL をすぐにSTATUS_SUCCESS 完了する必要があります。
  • ドライバーがSTATUS_SUCCESSでこの IOCTL を完了する場合、出力バッファーの最初の DWORD [4 バイト] には、SECURE_ELEMENT_EVENT_INFO構造体のサイズとそのペイロードが含まれている必要があります。
  • 受信したセキュリティで保護された要素のイベント情報が大きすぎてこの IOCTL のバッファーにコピーできない場合、ドライバーは必要なバッファー サイズを出力バッファーの最初の 4 バイトにコピーし、IOCTL の情報フィールドを sizeof(DWORD) に設定し、 STATUS_BUFFER_OVERFLOWを使用して IOCTL を完了する必要があります。 イベントは、受信したキューに残しておく必要があります。

要件

要件
Header nfcsedev.h