想要接收已传输消息的通知的客户端会将 IOCTL_NFP_GET_NEXT_TRANSMITTED_MESSAGE 请求发送到邻近驱动程序。
主要代码
输入缓冲区
没有
输出缓冲区
没有
状态块
Irp->IoStatus.Status 设置为STATUS_SUCCESS(如果请求成功)。
否则,状态为相应的错误条件作为 NTSTATUS 代码。
有关详细信息,请参阅 NTSTATUS 值。
言论
- 客户端应用程序将在控制循环中将此 IOCTL 发送到发布句柄。 同一消息的两个单独的传输将导致触发两个事件。
- 客户端应在每次完成笔触 IOCTL 时发送另一个 IOCTL。 驱动程序必须使用适当的锁,以确保此 IOCTL 成功完成次数等同于发布传输的次数。
-
使用此 IOCTL 时,需要执行以下作:
- 如果在以前未成功 IOCTL_NFP_SET_PAYLOAD的句柄上收到此 IOCTL,驱动程序必须用STATUS_INVALID_DEVICE_STATE完成它。
- 驱动程序必须在发布文件句柄中维护“CompleteEventImmediately”计数器(ULONG 或更大)。
-
在驱动程序中收到此 IOCTL 时:
- 如果计数器为零,则驱动程序必须笔下 IOCTL 以供以后完成。
- 如果计数器大于零,则驱动程序必须一个递减计数器,并立即完成 IOCTL STATUS_SUCCESS。
- 如果发布已传输且当前未插入任何 IOCTL,则驱动程序必须逐个递增“CompleteEventImmediately”计数器。
- 如果发布在有可用的笔形 IOCTL 时传输,驱动程序必须用 STATUS_SUCCESS 完成已插入的 IRP,并且不会递增“CompleteEventImmediately”计数器。
- 如果 IOCTL 包含输入或输出缓冲区,驱动程序必须使用 STATUS_INVALID_PARAMETER 完成 IOCTL。
- 如果在出版物句柄中当前插入另一个 IOCTL 时收到此 IOCTL,则必须使用STATUS_INVALID_DEVICE_STATE完成第二个 IOCTL(或更高版本)。
- 驱动程序必须支持触控 IOCTL 的 CancelIo。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | Windows 8 |
| 标头 | nfpdev.h |