EVT_SERCX_WAITMASK回调函数 (sercx.h)
EvtSerCxWaitmask 事件回调函数配置串行控制器以监视等待掩码中的事件,这是指定一组硬件事件的位掩码值。
语法
EVT_SERCX_WAITMASK EvtSercxWaitmask;
NTSTATUS EvtSercxWaitmask(
[in] WDFDEVICE Device
)
{...}
参数
[in] Device
表示串行控制器的框架设备对象的 WDFDEVICE 句柄。
返回值
如果调用成功,EvtSerCxWaitmask 函数将返回STATUS_SUCCESS。 否则,它将返回适当的错误状态代码。
言论
串行控制器驱动程序实现此回调函数。 串行框架扩展 (SerCx) 调用此函数,以在等待掩码更改时通知驱动程序。 在此调用期间,EvtSerCxWaitmask 函数调用 SerCxGetWaitMask 方法以获取新的等待掩码。 驱动程序会立即开始监视新等待掩码中的事件,并放弃先前 EvtSerCxWaitmask 调用中可能提供的任何旧等待掩码。 如果新的等待掩码为零,驱动程序只会放弃旧的等待掩码,并停止监视任何等待掩码事件。
当 SerCx 从客户端收到 IOCTL_SERIAL_SET_WAIT_MASK 请求时,SerCx 中的请求处理程序调用 EvtSerCxWaitmask 函数来设置新的等待掩码。 有关可由等待掩码指定的事件类型的详细信息,请参阅 SERIAL_EV_XXX。
EvtSerCxWaitmask 函数将串行控制器硬件配置为监视新等待掩码中的事件。 通常,该函数为这些事件启用中断。 配置硬件后,函数应立即返回,而无需等待等待掩码中的事件发生。
稍后,当等待掩码中的事件导致中断发生时,串行控制器驱动程序中的 ISR 将计划运行 DPC 函数。 此 DPC 函数调用 SerCxCompleteWait 方法来通知 SerCx 事件。
最初,在客户端打开与串行端口的连接以及第一个 EvtSerCxWaitmask 调用之前,等待掩码有效为零,串行控制器驱动程序不会监视任何 SERIAL_EV_XXX 事件。
若要注册 EvtSerCxWaitmask 回调函数,控制器驱动程序在 EvtDriverDeviceAdd 回调期间调用 SerCxInitialize 方法。
例子
此回调的函数类型在 Sercx.h 中声明,如下所示。
typedef NTSTATUS
EVT_SERCX_WAITMASK(
__in WDFDEVICE Device
);
若要定义 EvtSerCxWaitmask 名为 MyEvtSerCxWaitmask
的回调函数,必须先提供 静态驱动程序验证程序(SDV)和其他验证工具所需的函数声明,如下所示。
EVT_SERCX_WAITMASK MyEvtSerCxWaitmask;
然后,按如下所示实现回调函数。
NTSTATUS
MyEvtSerCxWaitmask(
__in WDFDEVICE Device
)
{ ... }
有关函数声明的 SDV 要求的详细信息,请参阅 使用 KMDF 驱动程序的函数角色类型声明函数。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 从 Windows 8 开始可用。 |
目标平台 | 桌面 |
标头 | sercx.h |
IRQL | 在 IRQL <调用 = DISPATCH_LEVEL |