EVT_SERCX_PURGE回调函数 (sercx.h)

EvtSerCxPurge 事件回调函数由串行框架扩展 (SerCx) 调用,以清除串行控制器的硬件缓冲区。

语法

EVT_SERCX_PURGE EvtSercxPurge;

NTSTATUS EvtSercxPurge(
  [in] WDFDEVICE Device,
  [in] ULONG PurgeMask
)
{...}

参数

[in] Device

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

[in] PurgeMask

描述要清除的硬件缓冲区的一组标志。 目前,没有为串行控制器执行的清除操作定义任何标志。 有关详细信息,请参阅“备注”。

返回值

如果调用成功,则 EvtSerCxPurge 函数返回STATUS_SUCCESS。 否则,它将返回适当的错误状态代码。

言论

串行控制器驱动程序实现此回调函数。 当客户端(应用程序或外围设备驱动程序)发送需要清除串行控制器管理的硬件缓冲区的 IOCTL_SERIAL_PURGE 控制请求时,SerCx 将调用此函数。

SerCx 执行由下表中列出的标志指定的清除操作。

标志位 意义
SERIAL_PURGE_RXABORT 清除所有读取请求。
SERIAL_PURGE_RXCLEAR 清除输入缓冲区(如果存在)。 丢弃此缓冲区中的任何接收数据。
SERIAL_PURGE_TXABORT 清除所有写入请求。
SERIAL_PURGE_TXCLEAR 清除输出缓冲区(如果存在)。 丢弃此缓冲区中的任何传输数据。
 

EvtSerCxPurge 函数永远不会收到包含此表中任何标志的清除请求。 SERIAL_PURGE_XXX 标志在 Ntddser.h 头文件中定义。

目前,未定义SERIAL_PURGE_XXX 标志来指定串行控制器驱动程序执行的清除操作,串行控制器驱动程序在响应 EvtSerCxPurge 调用时,不应执行清除操作。

如果 IOCTL_SERIAL_PURGE 控制请求要求取消挂起的读取或写入请求,则 SerCx 会在调用 EvtSerCxPurge 函数之前取消这些请求。

若要注册 EvtSerCxPurge 回调函数,控制器驱动程序在 EvtDriverDeviceAdd 回调期间调用 SerCxInitialize 方法。

例子

此回调的函数类型在 Sercx.h 中声明,如下所示。

typedef NTSTATUS
  EVT_SERCX_PURGE(
    __in WDFDEVICE Device,
    __in ULONG PurgeMask
    );

若要定义 EvtSerCxPurge 名为 MyEvtSerCxPurge的回调函数,必须先提供 静态驱动程序验证程序(SDV)和其他验证工具所需的函数声明,如下所示。

EVT_SERCX_PURGE MyEvtSerCxPurge;

然后,按如下所示实现回调函数。

NTSTATUS
  MyEvtSerCxPurge(
    __in WDFDEVICE Device,
    __in ULONG PurgeMask
    )
{ ... }

有关函数声明的 SDV 要求的详细信息,请参阅 使用 KMDF 驱动程序的函数角色类型声明函数

要求

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

另请参阅

EvtDriverDeviceAdd

IOCTL_SERIAL_PURGE

SerCxInitialize