Функция UcmTcpciPortControllerStart (ucmtcpciportcontroller.h)

Указывает расширению класса UcmTcpciCx, что драйвер клиента теперь готов к обслуживанию аппаратных запросов для контроллера порта.

Синтаксис

NTSTATUS UcmTcpciPortControllerStart(
  UCMTCPCIPORTCONTROLLER PortControllerObject
);

Параметры

PortControllerObject

Обработка объекта контроллера порта, полученного драйвером клиента при предыдущем вызове UcmTcpciPortControllerCreate.

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

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

Код возврата Описание
STATUS_INVALID_DEVICE_REQUEST
Контроллер порта уже находится в состоянии запуска.
STATUS_INVALID_HANDLE
Очередь запросов оборудования не была задана путем вызова 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

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

UcmTcpciPortControllerStop