SerCxGetRingBufferUtilization 函数 (sercx.h)

SerCxGetRingBufferUtilization 方法使串行控制器驱动程序能够确定当前通过串行端口接收的数据填充了预键入环缓冲区的数量。

语法

void SerCxGetRingBufferUtilization(
  [in]            WDFDEVICE Device,
  [out, optional] PULONG    BytesUsed,
  [out, optional] PULONG    BufferSize
);

参数

[in] Device

表示串行控制器的框架设备对象的 WDFDEVICE 句柄。

[out, optional] BytesUsed

当前包含在用于存储已接收数据的预键入环形缓冲区中的未读数据的字节数。

[out, optional] BufferSize

用于存储已接收数据的预键入环缓冲区的大小(以字节为单位)。

返回值

没有

言论

串行控制器驱动程序调用此函数来确定在预键入环缓冲区中可用的存储空间量。 串行控制器扩展 (SerCx) 维护此缓冲区,以包含串行控制器驱动程序当前未处理来自客户端的读取请求时从串行端口接收的数据。 此函数提供驱动程序准确执行软件流控制(XON/XOFF)所需的信息。

为了实现软件流控制,串行控制器驱动程序监视预输入环缓冲区中可用的空间量。 可用空间(以字节为单位)等于 BufferSize - BytesUsed。 当可用空间低于客户端指定的阈值时,XoffLimit,串行控制器驱动程序将传输 XOFF 字符,告知传输端口暂停传输。 稍后,当可用空间高于客户端指定的阈值时,XonLimit,驱动程序会传输 XON 字符,以告知传输端口恢复传输。 通常,客户端在以前的 IOCTL_SERIAL_SET_HANDFLOW I/O 控制请求中指定了这两个阈值。

SerCx 在当前流控制和握手设置的上下文中评估类型前排环形缓冲区中的可用空间。 在键入前环缓冲区完全清空后,SerCx 调用驱动程序的 EvtSerCxReceive 回调函数,以便驱动程序可以发送 XON 并恢复接收数据。 EvtSerCxReceive 函数可以调用 SerCxGetRingBufferUtilization 以确定是否发送 XON。

要求

要求 价值
最低支持的客户端 从 Windows 8 开始可用。
目标平台 普遍
标头 sercx.h
IRQL <= DISPATCH_LEVEL

另请参阅

EvtSerCxReceive

IOCTL_SERIAL_SET_HANDFLOW