UcmTcpciPortControllerAlert 函数 (ucmtcpciportcontroller.h)
将端口控制器上收到的硬件警报的相关信息发送到 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 |
目标平台 | Windows |
标头 | ucmtcpciportcontroller.h |
IRQL | <=DISPATCH_LEVEL |