EVT_SERCX2_SET_WAIT_MASK回调函数 (sercx.h)
EvtSerCx2SetWaitMask 事件回调函数由串行框架扩展版本 2 (SerCx2) 调用,以配置串行控制器以监视等待掩码指定的一组硬件事件。
语法
EVT_SERCX2_SET_WAIT_MASK EvtSercx2SetWaitMask;
void EvtSercx2SetWaitMask(
[in] WDFDEVICE Device,
[in] WDFREQUEST Request,
[in] ULONG WaitMask
)
{...}
参数
[in] Device
表示串行控制器的框架设备对象的 WDFDEVICE 句柄。 串行控制器驱动程序在其 EvtDriverDeviceAdd 回调函数中创建此对象。 有关详细信息,请参阅 SerCx2InitializeDevice。
[in] Request
表示 IOCTL_SERIAL_SET_WAIT_MASK 请求的框架请求对象的 WDFREQUEST 句柄。
[in] WaitMask
新的等待掩码。 有关详细信息,请参阅“备注”。
返回值
没有
言论
串行控制器驱动程序可以根据需要实现此函数。 如果实现,驱动程序会在调用 SerCx2InitializeDevice 方法中注册函数,该方法完成串行控制器框架设备对象的初始化。
当 SerCx 从客户端收到 IOCTL_SERIAL_SET_WAIT_MASK 请求时,SerCx2 中的请求处理程序将调用 EvtSerCx2SetWaitMask 函数(如果已实现)以通知驱动程序等待掩码已更改。 如果等待掩码为非零,驱动程序会立即开始监视新等待掩码中的事件,并放弃先前 EvtSerCx2SetWaitMask 调用中可能提供的任何旧等待掩码。 如果新的等待掩码为零,驱动程序只会放弃旧的等待掩码,并停止监视任何等待掩码事件。 有关可由等待掩码指定的事件类型的详细信息,请参阅 SERIAL_EV_XXX。
如果驱动程序未实现此函数,则 SerCx2 会失败所有 IOCTL_SERIAL_SET_WAIT_MASK 请求,并STATUS_NOT_SUPPORTED错误代码。
若要监视等待掩码中的事件,EvtSerCx2SetWaitMask 函数通常为这些事件启用中断。 稍后,当检测到等待掩码中的事件时,串行控制器驱动程序调用 SerCx2CompleteWait 方法以通知 SerCx2 事件。
EvtSerCx2SetWaitMask 函数负责完成 Request 参数指向的 IOCTL_SERIAL_SET_WAIT_MASK 请求。 串行控制器驱动程序启用必要的中断后,它将调用 WdfRequestComplete 方法并提供输入参数、Request 参数值和状态值来指示请求是否成功。
在串行控制器驱动程序调用 WdfRequestComplete 以完成请求之前,驱动程序必须完成对 SerCx2CompleteWait 的任何调用,这些调用可能因旧等待掩码中的事件而挂起。
最初,在客户端打开与串行端口的逻辑连接,并在第一个 EvtSerCx2SetWaitMask 调用之前,等待掩码有效为零,串行控制器驱动程序不会监视任何 SERIAL_EV_XXX 事件。
SerCx2 失败 IOCTL_SERIAL_SET_WAIT_MASK 请求,该请求包含以下任何 SERIAL_EV_XXX 事件标志的等待掩码:
- SERIAL_EV_PERR
- SERIAL_EV_RING
- SERIAL_EV_RXFLAG
如果实现,EvtSerCx2SetWaitMask 函数应支持以下事件标志:
- SERIAL_EV_CTS
- SERIAL_EV_BREAK
- SERIAL_EV_ERR
例子
若要定义 EvtSerCx2SetWaitMask 回调函数,必须首先提供一个函数声明来标识要定义的回调函数的类型。 Windows 为驱动程序提供一组回调函数类型。 使用回调函数类型声明函数有助于 驱动程序代码分析、静态驱动程序验证程序(SDV)和其他验证工具查找错误,这是为 Windows 操作系统编写驱动程序的要求。
例如,若要定义 EvtSerCx2SetWaitMask 名为 MySetWaitmask
的回调函数,请使用 EVT_SERCX2_SET_WAIT_MASK 函数类型,如以下代码示例所示:
EVT_SERCX2_SET_WAIT_MASK MySetWaitmask;
然后,按如下所示实现回调函数:
_Use_decl_annotations_
VOID
MySetWaitmask(
WDFDEVICE Device,
WDFREQUEST Request,
ULONG WaitMask
)
{...}
EVT_SERCX2_SET_WAIT_MASK 函数类型在 Sercx.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 Use_decl_annotations 注释添加到函数定义。 Use_decl_annotations 批注可确保使用应用于头文件中 EVT_SERCX2_SET_WAIT_MASK 函数类型的批注。 有关函数声明要求的详细信息,请参阅 使用 KMDF 驱动程序的函数角色类型声明函数。 有关 Use_decl_annotations的详细信息,请参阅 批注函数行为。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从Windows 8.1开始可用。 |
目标平台 | 桌面 |
标头 | sercx.h |
IRQL | 在 IRQL <调用 = DISPATCH_LEVEL。 |