将端口控制器上收到的硬件警报的信息发送到 UcmTcpciCx。
语法
VOID UcmTcpciPortControllerAlert(
[in] UCMTCPCIPORTCONTROLLER PortControllerObject,
PUCMTCPCI_PORT_CONTROLLER_ALERT_DATA AlertData,
size_t NumberOfAlerts
);
参数
[in] PortControllerObject
处理客户端驱动程序在上一次调用中接收的端口控制器对象,UcmTcpciPortControllerCreate。
AlertData
指向 UCMTCPCI_PORT_CONTROLLER_ALERT_DATA 数组的指针,其中包含尚未发送到 UcmTcpciCx 的所有当前警报。 此值不能为 NULL。
NumberOfAlerts
AlertData指向的数组中的项数。 此值不能为 0。
返回值
没有
言论
UcmTcpciPortControllerAlert 如果作成功,则返回STATUS_SUCCESS。 否则,此内联函数可能会返回相应的 NTSTATUS 错误代码。
客户端驱动程序必须调用以前通过调用 UcmTcpciPortControllerStart启动 UcmTcpciPortControllerAlert。
发生硬件警报时,客户端驱动程序必须确定警报类型,提取与该警报关联的任何辅助信息,例如 PD 消息、填充数组,然后调用 UcmTcpciPortControllerAlert。
客户端驱动程序必须按顺序报告警报。 驱动程序不得在同时运行的线程上调用此方法,因为可能导致争用条件。 尽管类扩展可确保所有内部数据都受到正确锁定保护,但如果驱动程序同时从多个线程调用 UcmTcpciPortControllerAlert 而不进行任何外部同步,则不能保证接收的警报集是最新的。 为了避免这种情况,驱动程序必须在 中断服务例程(ISR)或排队为 ISR 排队的 DPC 对象 中调用此方法。 ISR 应正确同步,以便在任何给定时间只运行一个实例。
客户端驱动程序必须假定类扩展可以在 UcmTcpciPortControllerAlert 从此调用中返回之前提交请求。
处理警报时,UcmTcpciCx 可能会在 UcmTcpciPortControllerAlert 调用返回之前向客户端驱动程序发送硬件请求。 如果在调用 UcmTcpciPortControllerAlert 时驱动程序持有锁,并在处理硬件请求时尝试获取同一锁,可能会发生死锁。
要求
| 要求 | 价值 |
|---|---|
| 最低支持的客户端 | Windows 10 |
| 支持的最低服务器 | Windows Server 2016 |
| 目标平台 | 窗户 |
| 标头 | ucmtcpciportcontroller.h |
| IRQL | <=DISPATCH_LEVEL |