Функция UcmTcpciPortControllerStart (ucmtcpciportcontroller.h)
Указывает расширению класса UcmTcpciCx, что драйвер клиента теперь готов к обслуживанию аппаратных запросов для контроллера порта.
Синтаксис
NTSTATUS UcmTcpciPortControllerStart(
UCMTCPCIPORTCONTROLLER PortControllerObject
);
Параметры
PortControllerObject
Обработка объекта контроллера порта, полученного драйвером клиента при предыдущем вызове UcmTcpciPortControllerCreate.
Возвращаемое значение
(NTSTATUS) Метод возвращает STATUS_SUCCESS, если операция выполнена успешно. В противном случае этот метод может вернуть соответствующий код ошибки NTSTATUS .
Код возврата | Описание |
---|---|
|
Контроллер порта уже находится в состоянии запуска. |
|
Очередь запросов оборудования не была задана путем вызова UcmTcpciPortControllerSetHardwareRequestQueue. |
Комментарии
После того как драйвер клиента получит дескриптор UCMPORTCONTROLLER для объекта контроллера порта, драйвер вызывает этот метод, чтобы уведомить расширение класса о том, что драйвер может начать получать аппаратные запросы. Этот вызов метода позволяет драйверу клиента выполнить инициализацию контекстного пространства платформы в объекте контроллера порта, прежде чем расширение класса сможет вызвать функции обратного вызова драйвера или запросы для объекта контроллера порта. Драйвер не может вызывать UcmTcpciPortControllerAlert или UcmTcpciPortControllerStop , пока не будет запущен контроллер порта.
Драйвер клиента вызывает этот метод сразу после вызова UcmTcpciPortControllerCreate и инициализации структуры контекста, если он был указан в структуре WDF_OBJECT_ATTRIBUTES в качестве значения параметра Attributes . Драйвер должен предполагать, что расширение класса может отправлять запросы еще до возврата UcmTcpciPortControllerStart , т. е. из этого вызова DDI. Если драйвер удерживает блокировку при вызове UcmTcpciPortControllerStart , а также пытается получить блокировку при обработке аппаратного запроса (в обратном вызове очереди запросов оборудования), это может привести к взаимоблокировке.
Вызов UcmTcpciPortControllerStart для запуска объекта контроллера порта, который уже в состоянии "Пуск" приводит к ошибке.
При загрузке, если BIOS уже согласовал контракт PD, UcmTcpciCx запускается из неподключаемого состояния.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 10 |
Минимальная версия сервера | Windows Server 2016 |
Целевая платформа | Windows |
Header | ucmtcpciportcontroller.h |
Библиотека | Ucmtcpcicxstub.lib |
IRQL | PASSIVE_LEVEL |