IOCTL_NFP_GET_NEXT_TRANSMITTED_MESSAGE IOCTL (nfpdev.h)
メッセージが送信されたことを示す通知の受信に関心があるクライアントは、 IOCTL_NFP_GET_NEXT_TRANSMITTED_MESSAGE 要求を近接ドライバーに送信します。
メジャー コード
[入力バッファー]
なし
出力バッファー
なし
ステータス ブロック
要求が成功した場合、Irp-IoStatus.Status> はSTATUS_SUCCESSに設定されます。
それ以外の場合は、NTSTATUS コードとして適切なエラー条件の状態。
詳細については、「 NTSTATUS 値」を参照してください。
注釈
- クライアント アプリケーションは、コントロール ループ内のこの IOCTL をパブリケーション ハンドルに送信します。 同じメッセージを 2 回送信すると、2 つのイベントがトリガーされます。
- クライアントは、ペンドされた IOCTL が完了するたびに別の IOCTL を送信する必要があります。 ドライバーは、この IOCTL が正常に完了した回数がパブリケーションが送信された回数と同じであることを保証するために、適切なロックを使用する必要があります。
-
この IOCTL を使用する場合は、次のアクションが必要です。
- 以前にIOCTL_NFP_SET_PAYLOADに成功していないハンドルでこの IOCTL を受け取った場合、ドライバーは STATUS_INVALID_DEVICE_STATEで完了する必要があります。
- ドライバーは、パブリケーション ファイル ハンドル内の "CompleteEventImmediately" カウンター (ULONG 以上) に相当するものを維持する必要があります。
-
この IOCTL がドライバーで受信された場合:
- カウンターが 0 の場合、ドライバーは後で完了するために IOCTL をペンで実行する必要があります。
- カウンターが 0 より大きい場合、ドライバーはカウンターを 1 ずつデクリメントし、すぐにSTATUS_SUCCESSを使用して IOCTL を完了する必要があります。
- パブリケーションが送信され、現在 IOCTL が実行されていない場合、ドライバーは "CompleteEventImmediately" カウンターを 1 ずつインクリメントする必要があります。
- 使用可能なペン付き IOCTL がある間にパブリケーションが送信される場合、ドライバーは、ペン付きの IRP をSTATUS_SUCCESSで完了し、"CompleteEventImmediately" カウンターをインクリメントしないようにする必要があります。
- IOCTL に入力バッファーまたは出力バッファーが含まれている場合、ドライバーは、STATUS_INVALID_PARAMETERを使用して IOCTL を完了する必要があります。
- パブリケーション ハンドルに別の IOCTL が現在ペンされている間にこの IOCTL を受信した場合は、2 番目の IOCTL (またはそれ以降) をSTATUS_INVALID_DEVICE_STATEで完了する必要があります。
- ドライバーは、ペンドされた IOCTL の CancelIo をサポートする必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 8 |
Header | nfpdev.h |