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

Возвращаемое значение

None

Remarks

UcmTcpciPortControllerAlert возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае эта встроенная функция может вернуть соответствующий код ошибки NTSTATUS .

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

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

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

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

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

Требования

   
Минимальная версия клиента Windows 10
Минимальная версия сервера Windows Server 2016
Целевая платформа Windows
Header ucmtcpciportcontroller.h
IRQL <=DISPATCH_LEVEL

См. также раздел