MB Device Readiness
В этом разделе описываются процедуры, позволяющие убедиться, что устройство с МБ доступно и готово к использованию для сетевых действий до того, как служба MB приступит к настройке подключений к данным. Устройство готово к использованию после активации подписки пользователя и сохранения сведений, связанных с подписчиком, на устройстве или в модуле идентификации подписчика (SIM-карта)
Служба MB предполагает, что драйвер мини-порта автоматически инициализирует оборудование своего устройства MB (радиостек, SIM-карта или эквивалентную схему) после загрузки системы, не дожидаясь каких-либо инструкций от службы.
Драйверы мини-порта устанавливают начальное состояние готовности устройства в МБ в WwanReadyStateOff. По мере инициализации драйверы минипорта должны отправлять уведомления о событиях, чтобы сообщить службе MB об изменениях в состоянии готовности устройства.
Драйверы мини-порта должны остановить процесс инициализации в случае возникновения каких-либо ошибок. После устранения ошибки драйверы мини-порта могут возобновить процесс инициализации до тех пор, пока устройство не достигнет состояния готовности WwanReadyStateInitialized .
Ниже приведены примеры некоторых сценариев ошибок.
Если устройству требуется карта SIM-карты и драйвер мини-порта обнаруживает, что карта SIM-карты отсутствуют, драйвер мини-порта должен отправить уведомление о событии готовности WwanReadyStateSimNotInserted, и драйвер мини-порта должен оставаться в этом состоянии, пока пользователь не вставляет карта SIM-карты в устройство.
Если устройству требуется sim-карта карта и драйвер мини-порта не может прочитать SIM-карта, которая была вставлена (например, U-RIM вставляется в устройство на основе GSM или USIM в устройство на основе CDMA), или SIM-карта несовместима с устройством (например, 3G USIM вставляется в устройство 2G, который не может интерпретировать формат USIM), драйвер мини-порта должен отправить уведомление о событии готовности WwanReadyStateBadSim, и драйвер мини-порта должен оставаться в этом состоянии до тех пор, пока пользователь не вставляет в устройство правильную SIM-карта.
Если устройство заблокировано ПИН-кодом (для устройств, использующих SIM-карты) или паролем (для устройств, которые не используют SIM-карты), что препятствует дальнейшему ходу инициализации устройства, драйвер мини-порта должен отправить уведомление о событии готовности WwanReadyStateDeviceLocked , а драйвер минипорта должен оставаться в этом состоянии до тех пор, пока пользователь не введет правильный ПИН-код или пароль.
Если драйвер мини-порта обнаруживает, что для продолжения требуется активация службы, драйвер мини-порта должен отправить уведомление о событии готовности WwanReadyStateNotActivated и оставаться в этом состоянии до активации службы. Это типичное поведение для устройств на основе CDMA в Северная Америка.
Если драйвер минипорта сталкивается с ошибками, отличными от упомянутых ранее, драйвер мини-порта должен отправить уведомление о событии готовности WwanReadyStateFailure и оставаться в этом состоянии до тех пор, пока проблема не будет обнаружена и исправлена.
Имейте в виду, что служба MB не предполагает, что драйверы минипорта могут обнаруживать все эти ошибки. Служба также не предполагает порядок, в котором драйверы минипорта обнаруживают эти ошибки. Однако лучше всего реализовать сценарии ошибок в порядке, указанном ранее.
Пока драйвер мини-порта не отправит уведомление о событии готовности WwanReadyStateInitialized , служба не будет продолжать дальнейшие действия, связанные с сетью, пока проблема не будет обнаружена и исправлена. Однако служба по-прежнему может отправлять идентификаторы OID драйверу мини-порта.
Драйверам мини-порта не нужно ждать готовности подсистемы SMS, прежде чем сообщать о состоянии готовности WwanReadyStateInitialized . Вместо этого водители минипорта должны отправлять отдельное уведомление OID_WWAN_SMS_CONFIGURATION , когда подсистема SMS будет готова к отправке и получению SMS-сообщений.
Поддержка режима экстренного реагирования
Если драйвер минипорта указывает, что он поддерживает службы экстренных вызовов при обработке OID_WWAN_READY_INFO драйвер минипорта должен задать для элемента EmergencyMode структуры WWAN_READY_INFO значение WwanEmergencyModeOn. В этом случае драйвер мини-порта должен продолжать отправлять уведомления о регистрации в службу MB, но служба не будет вызывать функции, связанные с автоматической настройкой.
Водители минипорта могут указать, что они поддерживают службы экстренных вызовов даже в тех случаях, когда они обнаруживают, что SIM-карта больше не действительна, возможно, из-за неоплаченной подписки или службы были отключены из-за кражи устройства.
Инициализация драйвера Miniport в МБ
На следующей схеме представлен процесс определения того, является ли интерфейс квалифицированным интерфейсом МБ, и сбора сведений о возможностях устройства. Эти действия выполняются для каждого перечисленного интерфейса MB при запуске службы MB, а также для каждого нового интерфейса, поступаемого во время работы службы. Метки, выделенные полужирным шрифтом, представляют идентификаторы OID или элемент управления потоком транзакций. Метки в обычном тексте представляют важные флаги в структуре OID.
Чтобы инициализировать драйвер мини-порта в МБ, выполните следующую процедуру:
Служба MB отправляет синхронный (блокирующий) запрос OID_GEN_PHYSICAL_MEDIUM для определения типа устройства с мб. Драйвер мини-порта отвечает с помощью NdisPhysicalMediumWirelessWan , чтобы указать, что устройство в МБ является устройством WWAN.
Служба MB отправляет синхронный (блокирующий) запрос OID_GEN_MEDIA_SUPPORTED драйверу мини-порта, чтобы определить, какой тип среды используется устройством МБ. Драйвер мини-порта отвечает NdisMedium802_3 , чтобы указать, что он использует эмуляцию Ethernet.
Служба MB отправляет синхронный (блокирующий) запрос OID_WWAN_DRIVER_CAPS драйверу мини-порта, чтобы определить, какую версию модели драйвера поддерживает драйвер минипорта. Водитель минипорта отвечает WWAN_VERSION.
Служба MB отправляет асинхронный (неблокирующий) запрос OID_WWAN_DEVICE_CAPS драйверу мини-порта для определения возможностей устройства в МБ. Водитель минипорта отвечает с предварительным подтверждением того, что он получил запрос, и он отправит уведомление с запрошенной информацией в будущем.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_DEVICE_CAPS уведомление в службу MB, которое указывает на возможности устройства с мб, которое поддерживает драйвер мини-порта. Например, если драйвер мини-порта поддерживает устройство на основе СТАНДАРТА GSM, он должен указать значение WwanCellularClassGsm в элементе DeviceCaps.WwanCellularClassструктуры NDIS_WWAN_DEVICE_CAPS . Если драйвер мини-порта поддерживает устройство на основе CDMA, он должен указать WwanCellularClassCdma.
Инициализация устройства SIM-Locked с помощью контекста User-Defined
На следующей схеме показан сценарий, в котором пользователь вводит ПИН-код SIM-карты и вручную настраивает строку имени точки доступа. Метки, выделенные полужирным шрифтом, являются идентификаторами OID или элементом управления потоком транзакций, а метки в обычном тексте являются важными флагами в структуре OID.
Чтобы инициализировать устройство на основе СТАНДАРТА GSM с заблокированным ПИН-кодом 1, выполните следующие действия.
Служба MB отправляет асинхронный (неблокирующий) запрос OID_WWAN_READY_INFO драйверу мини-порта для определения состояния готовности устройства. Водитель минипорта отвечает с предварительным подтверждением (NDIS_STATUS_INDICATION_REQUIRED), что он получил запрос и что он отправит уведомление с запрошенной информацией в будущем.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_FAILURE уведомление службе МБ, чтобы сообщить службе МБ о том, что модуль идентификации подписчика (SIM) заблокирован.
Служба MB отправляет асинхронный (неблокирующий) запрос OID_WWAN_PIN драйверу мини-порта. Водитель минипорта отвечает с предварительным подтверждением (NDIS_STATUS_INDICATION_REQUIRED), что он получил запрос и что он отправит уведомление с запрошенной информацией в будущем.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_SUCCESS уведомление в службу MB.
Служба MB отправляет драйверу мини-порта асинхронный (неблокирующий) запрос на настройку OID_WWAN_PIN. Водитель минипорта отвечает с предварительным подтверждением (NDIS_STATUS_INDICATION_REQUIRED), что он получил запрос и что он отправит уведомление с запрошенной информацией в будущем.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_SUCCESS уведомление в службу MB.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_READY_INFO уведомление службе MB, которое указывает службе МБ, что состояние устройства в МБ — WwanReadyStateInitialized.
Служба MB отправляет асинхронный (неблокирующий) запрос OID_WWAN_REGISTER_STATE к драйверу мини-порта. Водитель минипорта отвечает с предварительным подтверждением (NDIS_STATUS_INDICATION_REQUIRED), что он получил запрос, и он отправит уведомление с запрошенной информацией в будущем.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_SUCCESS уведомление в службу MB.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_REGISTER_STATE уведомление в службу MB.
Служба MB отправляет асинхронный (неблокирующий) запрос OID_WWAN_HOME_PROVIDER к драйверу мини-порта. Водитель минипорта отвечает с предварительным подтверждением (NDIS_STATUS_INDICATION_REQUIRED), что он получил запрос, и он отправит уведомление с запрошенной информацией в будущем.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_SUCCESS уведомление в службу MB.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_REGISTER_STATE уведомление в службу MB.
Служба MB отправляет асинхронный (неблокирующий) запрос OID_WWAN_PACKET_SERVICE драйверу мини-порта. Водитель минипорта отвечает с предварительным подтверждением (NDIS_STATUS_INDICATION_REQUIRED), что он получил запрос и что он отправит уведомление с запрошенной информацией в будущем.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_PACKET_SERVICE уведомление в службу MB.
Служба MB отправляет асинхронный (неблокирующий) запрос OID_WWAN_PROVISIONED_CONTEXTS драйверу мини-порта. Водитель минипорта отвечает с предварительным подтверждением (NDIS_STATUS_INDICATION_REQUIRED), что он получил запрос, и он отправит уведомление с запрошенной информацией в будущем.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_PROVISIONED_CONTEXTS в службу MB.
Служба MB отправляет асинхронный (неблокирующий) запрос на настройку OID_WWAN_PROVISIONED_CONTEXTS службе MB. Водитель минипорта отвечает с предварительным подтверждением (NDIS_STATUS_INDICATION_REQUIRED), что он получил запрос, и он отправит уведомление с запрошенной информацией в будущем.
Драйвер мини-порта отправляет NDIS_STATUS_WWAN_SUCCESS в службу MB.
См. также:
Дополнительные сведения о готовности устройства см. в разделе OID_WWAN_READY_INFO.
Дополнительные сведения об инициализации устройства с подготовленными контекстами см. в разделе Операции с подготовленным контекстом в МБ.