다음을 통해 공유


DSS를 사용하여 MB 모뎀 로깅

참고 항목

모뎀이 지원 MBIM_CID_MODEM_LOGGING_CONFIG되도록 계획 중인 경우 이 페이지에서 피드백을 제공하여 가장 잘 지원할 수 있도록 하세요. 이 CID는 현재 실험적이며 모뎀을 지원하지 않으므로 아직 모뎀으로 테스트되지 않았습니다.

이 항목에서는 Windows 10 버전 1903 이상에서 사용할 수 있는 USB MBIM 1.0 사양에 대한 Microsoft 확장을 통해 새로운 표준 Windows MBB(모바일 광대역) 로깅 인터페이스에 대해 설명합니다.

이 새로운 로깅 인터페이스를 사용하면 OS가 MBIM CID 명령을 통해 로그를 시작, 중지 및 OS 파일 시스템에 플러시하도록 MBB 디바이스에 알릴 수 있습니다. 모뎀 로깅 페이로드의 비 IP 특성을 감안할 때 MBB 서비스에서 로깅 페이로드를 OS로 전송하는 데 사용하는 데이터 채널은 MBB DSS(데이터 서비스 스트림)를 사용합니다. DSS는 MBIM(모바일 광대역 인터페이스 모델) 1.0 사양에 정의되어 있습니다.

OS는 Windows 관련 MBB 로깅 구성 집합을 사용하여 전체 MBB 에코시스템에서 모뎀의 진단 기능 및 구성을 추상화합니다. 이러한 MBB 로깅 구성을 사용하면 모뎀 공급업체가 OS MBB 로깅 요구 사항을 적절한 내부 로깅 구성에 매핑할 수 있습니다. OS에서 추상화 및 정의한 로깅 구성에는 MBB 로깅 세부 정보 표시 수준 및 최대 플러시 시간이 포함됩니다.

모뎀은 세그먼트가 채워지고 MBIM 프레임워크가 세그먼트를 OS로 전송하거나 최대 플러시 시간에 도달할 때(세그먼트가 채워지지 않은 경우에도) 버퍼의 콘텐츠를 플러시할 때까지 최대 버퍼 크기까지 로깅 버퍼를 계속 채웁니다. OS는 이 항목의 뒷부분에서 설명하는 표준 Windows MBB 로깅 구성 수준 집합을 정의합니다. 각 구성 수준은 MBB 로깅 세부 정보 및 세부 정보의 OS 추상화를 지정합니다.

MBB 구성 수준의 OS 추상화는 모뎀에 의해 적절한 내부 모뎀 구성에 매핑됩니다. OS는 OS MBB 구성 수준이 아닌 모뎀에 로깅 필터 또는 마스크와 같은 추가 구성 페이로드를 제공하지 않습니다.

MBB 로깅을 지원하는 모뎀의 경우 MBIMLoggingLevelOem을 제외한 모든 MBB 로깅 구성 수준이 모든 BSP 변형에 있어야 합니다. 즉, IHV 또는 OEM은 프로덕션 및 R&D 버전의 BSP 모두에서 PROD 또는 LAB 수준의 MBB 로깅을 지원해야 합니다. MBB 로깅의 LAB 수준은 OS에서만 사용하지 않도록 설정할 수 있습니다.

이 새로운 로깅 인터페이스의 디자인에서는 컨트롤 채널을 사용하여 로깅 매개 변수를 설정하고 데이터 채널을 사용하여 모뎀 로그를 수신합니다. 데이터 채널이 대량 모뎀 데이터를 전송하도록 설계되었기 때문입니다. 이 디자인의 장점은 대량 데이터를 제어 채널을 통해 전송할 필요가 없으므로 디바이스 성능이 일관되게 유지된다는 것입니다. 또한 더 높은 처리량을 위해 잘 확장됩니다. 데이터 채널은 DSS 명령에 의해 작동합니다. 모뎀에 대한 예제 흐름은 다음과 같습니다.

  1. OS는 MBIM_CID_MODEM_LOGGING_CONFIG CID를 모뎀으로 보내 MaxSegmentSize, MaxFlushTime 및 LoggingLevel과 같은 로깅 매개 변수를 구성합니다.
  2. OS가 모뎀에서 성공적인 응답을 받으면 모뎀 로깅에 대한 특정 GUID, MBIMDssLinkActivate 상태 및 고유한 DSS 세션 ID를 사용하여 모뎀에 MBIM_CID_DSS_CONNECT DSS 명령을 보냅니다.
  3. 성공 상태 코드를 받으면 OS는 모뎀에서 조각을 받을 준비를 합니다. 이러한 조각을 DataServiceSessionRead 패킷이라고 합니다.
  4. DATAServiceSessionRead 패킷은 OS가 동일한 DSS 세션 ID 및 MBIMDSSLinkDeactivate 상태의 다른 MBIM_CID_DSS_CONNECT 명령을 발급할 때까지 계속 도착합니다.

모뎀이 새로 만든 데이터 채널에 로그를 쓰면 모뎀은 WinRT 계층인 MobileBroadbandDeviceService를 통해 앱에서 사용할 수 있는 데이터인 MbbDeviceReceiveDeviceServiceSessionData를 호출합니다. 모뎀 로그는 ETW 세션으로 리디렉션할 수 있는 인쇄 가능한 문자열 데이터로 포맷되어야 합니다.

모뎀 로깅 데이터 경로

모뎀 로깅은 MBIM DSS(데이터 서비스 스트림)를 사용하여 페이로드 로깅을 위해 데이터를 전송합니다. DSS에 대한 자세한 내용은 MBIM 1.0 사양섹션 10.5.38을 참조하세요.

DSS에서 연결하거나 연결을 끊을 때 모뎀 로깅에 다음 GUID가 사용됩니다.

GUID
ModemFileTransfer GUID 0EBB1CEB-AF2D-484D-8DF3-53BC51FD162C

다음 흐름 다이어그램은 DSS 설정 및 분해 프로세스를 보여 줍니다.

DSS 모뎀 로깅 설정 및 흐름 다이어그램 분해

NDIS 인터페이스 확장

모뎀 로깅을 지원하기 위해 Windows 10 버전 1903에서 다음 OID가 정의되었습니다.

MBIM 서비스 및 CID 값

서비스 이름 범용 고유 식별자 (UUID) UUID 값
Microsoft Basic IP 커넥트ivity Extensions UUID_BASIC_CONNECT_EXTENSIONS 3d01dcc5-fef5-4d05-9d3a-bef7058e9aaf

다음 표에서는 각 CID에 대한 UUID 및 명령 코드와 CID가 Set, Query 또는 Event(알림) 요청을 지원하는지 여부를 지정합니다. 매개 변수, 데이터 구조 및 알림에 대한 자세한 내용은 이 항목 내의 각 CID 개별 섹션을 참조하세요.

CID 범용 고유 식별자 (UUID) 명령 코드 설정 쿼리 알림
MBIM_CID_MODEM_LOGGING_CONFIG UUID_BASIC_CONNECT_EXTENSIONS 미정 Y Y Y

MBIM_CID_MODEM_LOGGING_CONFIG

이 CID는 모뎀에 의해 수집되는 로그와 DSS를 통해 모뎀에서 호스트로 전송되는 빈도를 구성하는 데 사용됩니다. 로깅 세션이 시작되기 전에 로깅을 구성해야 합니다. 이 CID는 연결 확장의 일부이므로 IHV에서 이 CID를 지원하는 것은 선택 사항입니다. IHV가 DSS 데이터 채널을 통해 모뎀 로깅을 지원하는 경우 이를 기능으로 지정해야 합니다. 이 기능은 MBIM_BASIC_CID_DEVICE_SERVICES CID를 사용하여 보급할 수 있습니다.

매개 변수

연산 설정 쿼리 알림
명령 MBIM_MODEM_LOGGING_CONFIG 해당 없음 해당 없음
응답 MBIM_MODEM_LOGGING_CONFIG MBIM_MODEM_LOGGING_CONFIG MBIM_MODEM_LOGGING_CONFIG

쿼리

현재 모뎀 로깅 구성을 쿼리합니다. MBIM_COMMAND_MSG InformationBuffer는 사용되지 않습니다. 다음 MBIM_MODEM_LOGGING_CONFIG 구조체는 MBIM_COMMAND_DONE InformationBuffer에 사용됩니다.

MBIM_MODEM_LOGGING_CONFIG

Offset 크기 필드 형식 설명
0 4 버전 UINT32 이 구조체의 버전 번호입니다. 이 구조체의 버전 1에서는 이 필드를 1로 설정해야 합니다.
4 4 MaxSegmentSize UINT32 모뎀에서 보낸 각 조각에 대한 세그먼트 크기(킬로바이트)를 지정합니다. Device Service Command의 모뎀에서 지원하는 최대 조각 크기가 값 집합을 초과하면 이 값은 지원되는 최대 세그먼트 크기로 설정됩니다.
8 4 MaxFlushTime UINT32 모뎀이 로그 조각을 보내기 전에 대기하는 최대 시간을 나타내는 시간(밀리초)입니다. 수집된 로그가 마지막 로그 조각이 전송된 이후 MaxFlushTime 기간 내에 MaxSegmentSize에 도달하지 않으면 해당 크기에 관계없이 로그 조각이 전송됩니다. 로깅 데이터가 없으면 알림이 전송되지 않습니다. 디바이스가 더 작은 플러시 시간을 처리할 수 없는 경우 디바이스는 응답에서 처리할 수 있는 시간을 반환합니다. 쿼리 또는 집합에 대한 응답에는 현재 구성된 MaxFlushTime이 포함됩니다.
12 4 LevelConfig MBIM_LOGGING_LEVEL_CONFIG 로그가 수집되는 수준을 구성합니다. 쿼리 또는 집합에 대한 응답에는 현재 구성된 LevelConfig가 포함됩니다.

참고 항목

모뎀이 요청된 MaxSegmentSizeMaxFlushTimer에서 OS에 로그 데이터를 제공할 수 없는 경우 이러한 매개 변수에 대한 자체 값을 선택하고 OS를 집합 응답 또는 원치 않는 이벤트로 업데이트할 수 있습니다. MaxSegmentSize 또는 MaxFlushTimer가 변경될 경우 OS 동작은 데이터 패킷을 수신하고 파일에 덤프하므로 변경되지 않습니다.

다음 MBIM_LOGGING_LEVEL_CONFIG 열거형은 이전 MBIM_MODEM_LOGGING_CONFIG 구조체에서 사용됩니다.

Type 설명
MBIMLoggingLevelProd 0 소매 또는 프로덕션 모집단의 원격 분석 수집을 위한 것입니다. 결과 로그는 캡슐 크기여야 하며 키 모뎀 또는 MBB 상태 또는 실패 정보만 포함해야 합니다.
MBIMLoggingLevelLabVerbose 1 성숙도가 낮은 MBB 제품 개발을 위한 것입니다. 모뎀의 자세한 전체 스택 캡처 결과 모뎀 캡처를 사용하면 IHV가 로그 중에 캡처를 재생하고 완전히 복구할 수 있습니다.
MBIMLoggingLevelLabMedium 2 상대적 완성도와 안정성을 갖춘 MBB 제품의 검증 및 현장 테스트를 위한 것입니다. 세부 정보 및 세부 정보 표시 수준은 IHV 엔지니어가 대부분의 MBB 오류를 심사할 수 있는 충분한 데이터 요소를 제공합니다.
MBIMLoggingLevelLabLow 3 자체 호스트 수준 로깅을 위한 것입니다. 전체 스택 캡처 모뎀의 요약 수준 캡처입니다. 모뎀의 상태 및 OS 상호 작용을 강조 표시 수준 이해하도록 설정합니다.
MBIMLoggingLevelOem 4 OEM 및 IHV 내부 사용을 위해 예약됩니다.

설정

set 명령은 모뎀 로깅에 대한 수준, 세그먼트 크기 및 최대 플러시 시간을 구성하는 데 사용됩니다. MBIM_MODEM_LOGGING_CONFIG 구조체는 InformationBuffer에 사용됩니다.

응답

MBIM_COMMAND_DONE InformationBuffer에는 MBIM_MODEM_LOGGING_CONFIG 구조체가 포함되어 있습니다.

원치 않는 이벤트

모뎀이 OS에 내부 변경 내용을 알려야 하는 시나리오에서는 원치 않는 이벤트가 지원됩니다. 현재 Windows 10 버전 1903에서는 이러한 시나리오가 발생하지 않습니다.

상태 코드

이 CID는 MBIM 사양 수정 버전 1.0섹션 9.4.5에 정의된 제네릭 상태 코드만 사용합니다.

비활성 중 DSS 세션 동작

다음 표에서는 비활성 상태의 다양한 단계에서 DSS 세션이 작동하는 방식을 설명합니다.

시나리오 DSS 세션 상태
시스템 절전 모드, 모뎀 전용 절전 모드, 재설정 및 복구 DSS 세션이 계속 열려 있습니다.
시스템 종료, 다시 시작, 최대 절전 모드 DSS 세션이 닫혔습니다.