Функция 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.

Драйвер клиента должен вызывать UcmTcpciPortControllerAlert, который ранее был запущен путем вызова UcmTcpciPortControllerStart.

При возникновении аппаратного оповещения драйвер клиента должен определить тип оповещений, получить все вспомогательные сведения, связанные с этим оповещением, например сообщение PD, заполнить массив, а затем вызвать UcmTcpciPortControllerAlert.

Драйвер клиента должен сообщать оповещения последовательно. Драйвер не должен вызывать этот метод в потоках, работающих одновременно, так как это может привести к условиям гонки. Несмотря на то что расширение класса гарантирует правильность защиты всех внутренних данных, если драйвер вызывает UcmTcpciPortControllerAlert из нескольких потоков без внешней синхронизации, то не гарантируется, что набор полученных оповещений является текущим. Чтобы избежать этого сценария, драйвер должен вызвать этот метод в подпрограмме прерываний (ISR) или объект DPC DPC,, который помещается в очередь для ISR. IsR следует синхронизировать правильно, чтобы в любое время выполнялось только один экземпляр.

Драйвер клиента должен предположить, что расширение класса может отправлять запросы перед возвратом UcmTcpciPortControllerAlert из этого вызова.

При обработке оповещений UcmTcpciCx может отправлять аппаратные запросы драйверу клиента до возврата вызова UcmTcpciPortControllerAlert. Если драйвер держит блокировку при вызове UcmTcpciPortControllerAlert, а также пытается получить ту же блокировку при обработке аппаратного запроса, взаимоблокировка может произойти.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 10
минимальный поддерживаемый сервер Windows Server 2016
целевая платформа Виндоус
заголовка ucmtcpciportcontroller.h
IRQL <=DISPATCH_LEVEL

См. также