Идентификаторы подключений для последовательно подключенных периферийных устройств
SerCx2 управляет последовательные порты, к которым периферийные устройства подключены постоянно. Так как эти физические подключения являются фиксированными, их можно описать в встроенном ПО ACPI для аппаратной платформы. При написании драйвера для периферийного устройства, подключенного к последовательному порту, управляемому SerCx2, список аппаратных ресурсов, получаемых драйвером, содержит идентификатор подключения , который инкапсулирует сведения о подключении устройства из встроенного ПО платформы.
При запуске системы диспетчер Plug and Play (PnP) перечисляет как устройства PnP, так и устройства, отличные от PnP. Для периферийного устройства, отличного от PnP, которое имеет фиксированное подключение к последовательному порту, диспетчер PnP запрашивает встроенное ПО ACPI аппаратной платформы, чтобы получить набор параметров подключения, описывающих способ доступа к устройству. Эти параметры подключения определяют последовательный контроллер для порта, к которому подключено устройство, и включают другие сведения, такие как скорость передачи данных и параметры управления потоком, необходимые последовательному контроллеру для взаимодействия с устройством.
Диспетчер PnP назначает идентификатор подключения для представления параметров подключения для этого периферийного устройства. Диспетчер PnP хранит этот идентификатор и параметры подключения вместе в системном хранилище данных, называемом концентратором ресурсов. (Концентратор ресурсов — это внутреннее хранилище данных, в котором диспетчер PnP хранит сведения о конфигурации последовательно подключенного периферийного устройства.) Идентификатор подключения инкапсулирует эти параметры, чтобы периферийный драйвер смог рассматривать их как непрозрачные.
Драйвер периферийных устройств получает идентификатор подключения для последовательно подключенного периферийного устройства в составе назначенных драйвером аппаратных ресурсов. Когда драйвер периферийных устройств вызывает системную функцию для открытия подключения к периферийным устройствам, драйвер предоставляет идентификатор подключения, который системная функция использует для получения параметров подключения устройства из концентратора ресурсов.
Примеры кода драйверов UMDF и KMDF, использующих идентификаторы подключений для открытия логических подключений к последовательно подключенным периферийным устройствам, см. в следующих разделах:
Подключение драйвера периферийных устройств UMDF к последовательному порту
Подключение драйвера периферийного устройства KMDF к последовательному порту
Клиент, открывающий подключение к периферийным устройствам через последовательный порт, имеет монопольный доступ к порту, пока подключение не будет закрыто. Попытка другого клиента открыть второе подключение к тому же порту завершается ошибкой.
Сразу после открытия последовательного порта клиент должен предположить, что порт находится в неизвестном или неопределенном состоянии. Клиент отвечает за настройку порта, чтобы он был готов к использованию.
Чтобы настроить последовательный порт для операции, клиент отправляет запросы на управление вводом-выводом (IOCTL) на последовательный контроллер. Как правило, клиент отправляет IOCTL_SERIAL_APPLY_DEFAULT_CONFIGURATION запрос контроллеру, чтобы задать для порта конфигурацию по умолчанию. При необходимости клиент может отправить дополнительные последовательные ioCTL для переопределения одного или нескольких параметров конфигурации по умолчанию. Например, Windows определяет последовательные ioCTL для изменения скорости передачи данных, параметров управления потоком, параметров управления строкой и значений времени ожидания для запросов на чтение и запись. Список последовательных ioCTL, поддерживаемых SerCx2, см. в разделе Интерфейс запроса последовательного ввода-вывода.