Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Отправляет сведения о аппаратных оповещениях, полученных на контроллере портов, в 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 |