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

另请参阅

EvtDriverDeviceAdd

IOCTL_SERIAL_SET_WAIT_MASK

IOCTL_SERIAL_WAIT_ON_MASK

SERIAL_EV_XXX

SerCxGetWaitMask

SerCxInitialize