Ведение журналирования модема с МБ с помощью DSS
Заметка
Если вы планируете использовать модем для поддержки MBIM_CID_MODEM_LOGGING_CONFIG
, предоставьте отзыв на этой странице, чтобы мы могли лучше поддерживать вас. Этот CID в настоящее время экспериментальный и еще не был протестирован с модемом, так как ни один из них не поддерживает его.
В этом разделе описывается новый стандартный интерфейс ведения журнала широкополосной связи Windows (MBB) с помощью расширений Майкрософт для спецификации USB MBIM 1.0, доступной в Windows 10 версии 1903 и более поздних версий.
С использованием этого нового интерфейса ведения журнала ОС может информировать устройство MBB о начале, остановке и сбросе журналов в файловую систему ОС через команды MBIM CID. Учитывая не IP-характер данных журнала модема, канал данных, который служба MBB использует для передачи этих данных в ОС, использует поток службы данных MBB (DSS). DSS определяется в спецификации модели мобильного широкополосного интерфейса (MBIM) 1.0.
ОС абстрагирует диагностические функции и конфигурации модема во всей экосистеме MBB с набором конфигураций ведения журналов MBB для Windows. Эти конфигурации ведения журнала MBB позволяют поставщику модема сопоставить требования к ведению журнала OS MBB с соответствующими внутренними конфигурациями ведения журнала. Конфигурации ведения журнала абстрагированы и определены операционной системой, включают уровни детализации журнала MBB и максимальное время очистки.
Модем продолжает заполнять буфер ведения журнала до максимального размера буфера, пока сегмент не будет заполнен, а платформа MBIM передает сегмент операционной системе или сбрасывает содержимое буфера при достижении максимального времени очистки (даже если сегмент не заполнен). ОС определяет набор стандартных уровней конфигурации ведения журнала Windows MBB, описанных далее в этом разделе. Каждый уровень конфигурации определяет абстракцию операционной системы для ведения журнала MBB, включая подробности и полноту записей.
Уровни конфигурации MBB в ОС абстрагируются и сопоставляются с соответствующими внутренними настройками модема. ОС не предоставляет никаких дополнительных конфигурационных полезных нагрузок, таких как фильтры ведения журнала или маски, для модемов, помимо уровня конфигурации ОС MBB.
Для модемов, поддерживающих ведение журнала MBB, все уровни конфигурации ведения журнала MBB, кроме MBIMLoggingLevelOem, должны присутствовать во всех вариантах BSP. Другими словами, IHV или OEM должны поддерживать уровни ведения журнала PROD или LAB в рабочей и R&D версии BSP. Уровни LAB ведения логов MBB могут быть отключены только из ОС.
Этот новый интерфейс ведения журнала использует канал управления для задания параметров ведения журнала и использует канал данных для получения журналов модема, так как канал данных предназначен для передачи массовых данных модема. Преимущество этой структуры заключается в том, что массовые данные не нужно передавать через канал управления, что позволяет обеспечить согласованность производительности устройства. Он также хорошо масштабируется для повышения пропускной способности. Канал данных управляется командами DSS. Пример потока для модема может выглядеть следующим образом:
- ОС отправляет MBIM_CID_MODEM_LOGGING_CONFIG CID на модем для настройки параметров ведения журнала, таких как MaxSegmentSize, MaxFlushTime и LoggingLevel.
- После того как ОС получит успешный ответ от модема, он отправляет команду MBIM_CID_DSS_CONNECT DSS на модем с определенным GUID для ведения журнала модема, состояние MBIMDssLinkActivate и уникальный идентификатор сеанса DSS.
- После получения кода состояния успешного выполнения ОС подготавливается к получению фрагментов из модема. Эти фрагменты называются пакетами DataServiceSessionRead.
- Пакеты DataServiceSessionRead продолжают поступать, пока ОС не выдает другую команду MBIM_CID_DSS_CONNECT с тем же идентификатором сеанса DSS и состоянием MBIMDSSLinkDeactivate.
После записи всех журналов в созданный канал данных модем вызывает MbbDeviceReceiveDeviceServiceSessionData, данные из которых доступны для приложений с помощью слоя WinRT: MobileBroadbandDeviceService. Журналы модема должны быть отформатированы как печатные строковые данные, которые можно перенаправить в сеанс ETW.
Путь журналирования данных модема
Ведение журнала модема использует поток службы данных MBIM (DSS) для передачи данных нагрузок. Дополнительные сведения о DSS см. в разделе 10.5.38 спецификации MBIM 1.0.
При подключении или отключении от DSS для ведения журнала модема используется следующий GUID:
GUID | Ценность |
---|---|
GUID МодемПередачаФайлов | 0EBB1CEB-AF2D-484D-8DF3-53BC51FD162C |
На следующей блок-схеме показан процесс настройки и демонтажа DSS.
Расширение интерфейса NDIS
Следующий OID был определен в Windows 10 версии 1903 для поддержки ведения журнала модема.
Значения сервиса MBIM и CID
Имя службы | UUID (Уникальный Универсальный Идентификатор) | Значение UUID |
---|---|---|
Расширения базовой IP-связанности Microsoft | UUID_BASIC_CONNECT_EXTENSIONS | 3d01dcc5-fef5-4d05-9d3a-bef7058e9aaf |
В следующей таблице указывается код UUID и команд для каждого CID, а также поддерживает ли CID запросы Set, Query или Event (notification). См. индивидуальный раздел каждого CID в этой теме для получения дополнительной информации о его параметрах, структурах данных и уведомлениях.
CID | UUID (универсальный уникальный идентификатор) | Код команды | Набор | Запрос | Уведомлять |
---|---|---|---|---|---|
MBIM_CID_MODEM_LOGGING_CONFIG | UUID_ОСНОВНЫЕ_ПОДКЛЮЧЕНИЯ_РАСШИРЕНИЯ | будет определено | Y | Y | Y |
MBIM_CID_MODEM_LOGGING_CONFIG
Этот идентификатор CID используется для настройки журналов, собираемых модемом, и настройки частоты отправки из модема на хост через DSS. Перед началом сеанса ведения журнала необходимо настроить ведение журнала. Поскольку этот CID является частью расширений подключения, производителям оборудования необязательно поддерживать этот CID. Если IHV поддерживает ведение журнала модемов через канал данных DSS, он должен указать это в качестве возможности. Возможность можно объявить с помощью MBIM_BASIC_CID_DEVICE_SERVICES CID.
Параметры
Операция | Набор | Запрос | Уведомление |
---|---|---|---|
Команда | MBIM_MODEM_LOGGING_CONFIG | Неприменимо | Неприменимо |
Ответ | Конфигурация_регистрации_модема_MBIM | MBIM_MODEM_LOGGING_CONFIG | MBIM_КОНФИГУРАЦИЯ_ЖУРНАЛИРОВАНИЯ_МОДЕМА |
Запрос
Запрашивает текущую конфигурацию ведения журнала модема. InformationBuffer MBIM_COMMAND_MSG не используется. Следующая структура MBIM_MODEM_LOGGING_CONFIG используется в MBIM_COMMAND_DONE InformationBuffer.
MBIM_MODEM_LOGGING_CONFIG
Смещение | Размер | Поле | Тип | Описание |
---|---|---|---|---|
0 | 4 | Версия | UINT32 | Номер версии этой структуры. Это поле должно иметь значение 1 для версии 1 этой структуры. |
4 | 4 | MaxSegmentSize | UINT32 | Задает размер сегмента в килобайтах для каждого фрагмента, отправляемого модемом. Если максимальный размер фрагмента, поддерживаемый модемом для команды службы устройств, превышает набор значений, то это значение имеет максимальный поддерживаемый размер сегмента. |
8 | 4 | MaxFlushTime | UINT32 | Время в миллисекундах, указывающее максимальное время ожидания модема перед отправкой фрагмента журнала. Если собранные журналы не достигают MaxSegmentSize в течение времени MaxFlushTime с момента отправки последнего фрагмента журнала, то фрагмент журнала отправляется независимо от его размера. Если нет данных ведения журнала, уведомление не отправляется. Если устройство не может обрабатывать более короткое время очистки, то в ответе оно возвращает время, которое оно может обрабатывать. Ответ на запрос или набор содержит в данный момент настроенное значение MaxFlushTime. |
12 | 4 | LevelConfig | MBIM_LOGGING_LEVEL_CONFIG | Настраивает уровень сбора журналов. Ответ на запрос или набор содержит текущие настройки LevelConfig. |
Заметка
Если модем не может предоставлять данные журнала операционной системе с запрошенными параметрами MaxSegmentSize и MaxFlushTimer, он может выбрать собственные значения для этих параметров и обновить ОС при помощи предустановленного ответа или неполученного запроса. Поведение ОС не изменяется, если MaxSegmentSize или MaxFlushTimer изменяются, так как оно получает пакеты данных независимо от этого, сбрасывая их в файл.
В предыдущей MBIM_MODEM_LOGGING_CONFIG структуре используется следующее перечисление MBIM_LOGGING_LEVEL_CONFIG.
Тип | Ценность | Описание |
---|---|---|
MBIMLoggingLevelProd | 0 | Предназначено для сбора данных телеметрии из розничной или производственной совокупности. Результирующий журнал должен быть размером с капсулу и содержать только важную информацию о состоянии модема или MBB либо о сбоях. |
MBIMLoggingLevelLabVerbose | 1 | Предназначено для разработки продуктов MBB с низким уровнем зрелости. Подробный полный захват модемов. Полученная запись модема должна позволить IHV произвести реплей и полностью восстановить захват в ходе ведения журнала. |
MBIMLoggingLevelLabMedium | 2 | Предназначено для проверки и полевого тестирования продуктов MBB с относительными зрелостью и стабильностью. Уровень детализации и многословности предоставляет достаточно данных для инженеров IHV с целью расследования большинства сбоев MBB. |
MBIMLoggingLevelLabLow | 3 | Предназначено для ведения журнала на уровне самостоятельного хостинга. Захват модемов с полным стеком на сводном уровне. Обеспечивает обзорное понимание состояния модема и взаимодействия с ОС. |
MBIMLoggingLevelOem | 4 | Зарезервировано для внутреннего использования OEM и IHV. |
Набор
Команда set используется для настройки уровня, размера сегмента и максимального времени сброса для ведения журнала модема. Структура MBIM_MODEM_LOGGING_CONFIG используется в InformationBuffer.
Ответ
InformationBuffer в MBIM_COMMAND_DONE содержит структуру MBIM_MODEM_LOGGING_CONFIG.
Незапрошенные события
Незапрошенные события поддерживаются в сценариях, когда модему необходимо сообщить ОС о внутренних изменениях. В настоящее время в Windows 10 версии 1903 эти сценарии не происходят.
Коды состояния
Этот идентификатор CID использует только универсальные коды состояния, определенные в разделе 9.4.5 спецификации MBIM версии 1.0.
Поведение сеанса DSS во время бездействия
В следующей таблице описывается поведение сеанса DSS во время различных этапов бездействия:
Сценарий | Состояние сеанса DSS |
---|---|
Режим сна системы, режим сна только для модема, сброс и восстановление | Сеанс DSS сохранялся открытым |
Завершение работы системы, перезапуск, гибернация | Сеанс DSS завершён |