NDIS_STATUS_WWAN_REGISTER_STATE
ミニポート ドライバーは、NDIS_STATUS_WWAN_REGISTER_STATE 通知を使用して、MB デバイスの登録状態への変更を MB サービスに伝達します。
ミニポート ドライバーは、この通知を使用して、要求されていないイベントを送信することもできます。
この通知には、NDIS_WWAN_REGISTRATION_STATE 構造が使用されます。
解説
デバイスの登録状態が変更されると、ミニポート ドライバーは、MB サービスがユーザーに正しい状態を反映できるように、適切な表示を送信する必要があります。
登録状態は、さまざまな理由で変更されます。 これは、MB サービスからの OID_WWAN_REGISTER_STATE に対するセット要求から直接発生する可能性があります。たとえば、WwanRegisterStateSearching から WwanRegisterStateHome への一時的な状態遷移などです。 また、プロバイダーの自動選択の場合は、ミニポート ドライバーによる自動操作が原因で発生する可能性があります。 最後に、ネットワークの可用性の変更が原因の可能性があります。たとえば、ネットワーク カバレッジが失われると、WwanRegisterStateHome が WwanRegisterStateDeregistered に遷移する可能性があります。
MB サービスの OID_WWAN_REGISTER_STATE 要求によって発生する変更を除き、ミニポート ドライバーは、基になる原因に関係なく、登録状態が変更されるたびに MB サービスに通知する必要があります。
CDMA デバイスは、MB サービスによって開始された登録と登録解除をサポートしていません。 ただし、通信事業者ネットワークの可用性または非可用性に基づいて、デバイスが開始したレジスタ状態の変更通知は、MB サービスに送信する必要があります。 CDMA デバイスは自動登録を行う必要があります。
現在の登録モード (自動または手動) に関係なく、電源投入時に自動登録を行うデバイスの場合、ミニポート ドライバーは登録成功時にレジスタ状態通知を送信する必要があります。
手動登録の場合、MB サービスは、ReadyState が WwanReadyStateInitialized であることをミニポート ドライバーが示した後にのみ登録を開始します。
ミニポート ドライバーは、セット要求に応答するときに、次のガイドラインを使用する必要があります。
ドライバーは、一時的な状態でセット要求に応答することはできません。 登録の一時的な状態とは、WwanRegisterStateSearching です。
RegisterAction が WwanRegisterActionManual に設定され、ミニポート ドライバーが要求を受信したときにプロバイダーが表示されていない場合、ミニポート ドライバーはエラーコード「WWAN_STATUS_PROVIDER_NOT_VISIBLE」を返します。 手動モードの設定に失敗したことを理由に、デバイスを自動登録に切り替えることはできません。 デバイスが以前に別のネットワークに手動で登録するように設定されていた場合、この要求では、要求で指定されたネットワークに登録するようにデバイスを変更する必要があります。 要求に応答する RegisterState の値は、WwanRegisterStateDeregistered に設定する必要があります。
RegisterAction が WwanRegisterActionManual に設定され、ミニポート ドライバーが要求されたのと同じネットワークに既に登録されている場合は、WWAN_STATUS_SUCCESS で応答する必要があります。
ドライバーは、セット OID_WWAN_REGISTER 要求で、要求されたデータ クラスへの登録を試みる必要があります。 要求されたデータ クラスに登録できない場合、ミニポート ドライバーは、可能な限り最高のデータ クラスに登録する必要があります。 これは、デバイスが既に他のデータ クラスを使用してプロバイダー (自動および手動登録モード) に登録されている場合にも適用されます。 データ クラスを変更しても、NDIS_STATUS_WWAN_PACKET_SERVICE 通知が発生します。
RegisterAction が WwanRegisterActionManual に設定されていて、無線が OFF の場合、ミニポート ドライバーはデバイスを手動登録モードにプログラムし、トランザクション通知で要求を完了する必要があります。 RegisterState は WwanRegisterStateDeregistered に設定する必要があります。 無線が ON 状態に変わり、イベント通知を送信する必要がある場合、デバイスは手動登録を試みる必要があります。
RegisterAction が WwanRegisterActionAutomatic に設定されていて、無線が OFF の場合、ミニポート ドライバーはデバイスを自動登録モードにプログラムし、トランザクション通知で要求を完了する必要があります。 RegisterState は WwanRegisterStateDeregistered に設定する必要があります。 無線が ON 状態になり、イベント通知を送信する必要がある場合、デバイスは自動登録を行う必要があります。
緊急の状態登録の場合 (WwanRegisterStateDenied)、uStatus を WWAN_STATUS_SUCCESS に設定し、EmergencyMode を WwanEmergencyModeOn に設定した状態で NDIS_STATUS_WWAN_READY_INFO 通知を送信する必要があります。
WwanRegisterStateDeregistered 状態を使用するには、ミニポート ドライバーは次のガイドラインを使用する必要があります。
WwanRegisterStateDeregistered は、無線が OFF になっているが、RegisterAction の要求は完了したことを MB サービスに通知するために、ミニポート ドライバーによって使用されます。
WwanRegisterStateDeregistered は、ネットワークが登録解除を開始したことを MB サービスに通知するために、ミニポート ドライバーによって使用されます。
WwanRegisterStateDeregistered は、ネットワーク カバレッジがないためにネットワークへの接続が失われたことを MB サービスに通知するために、ミニポート ドライバーによって使用されます。
GSM および CDMA デバイスは、PS 接続の通信事業者の可用性または非可用性を通知するために、レジスタ状態通知を送信する必要があります。 MB デバイスは、通信事業者の可用性を検出したら、適切なレジスタ状態 (WwanRegisterStateHome、WwanRegisterStateRoaming、または WwanRegisterStatePartner) のいずれかを使用したイベント通知を送信する必要があります。 通信事業者信号を失った場合、WwanRegisterStateDeregistered を使用したイベント通知を MB サービスに示す必要があります。
ミニポート ドライバーは、次の規則に従ってクエリ結果を返します。
登録中にデバイスがプロバイダーにロックしようとする場合、ミニポート ドライバーは、RegisterState を WwanRegisterStateSearching として設定する必要があります。 ProviderName および RoamingText の両方のメンバーを NULL に設定する必要があります。 手動登録モードの場合、ProviderId を最後の手動登録セット要求からの ProviderId に入力する必要があります。 自動登録モードの場合は、ProviderId を NULL に設定できます。
ミニポート ドライバーは、登録が終了すると最終的に安定した状態に移行するため、これは一時的な状態です。たとえば、WwanRegisterStateHome、WwanRegisterStatePartner、または WwanRegisterStateRoaming は登録の成功、WwanRegisterStateDenied は緊急の状態登録を示します。
デバイスがプロバイダーに登録されていない場合、ミニポート ドライバーは WwanRegisterStateDeregistered を返す必要があります。 ProviderName および RoamingText の両方のメンバーを NULL に設定する必要があります。 手動登録モードの場合、ProviderId を最後の手動登録セット要求からの ProviderId に入力する必要があります。 自動登録モードの場合は、ProviderId を NULL に設定できます。
デバイスがホーム プロバイダーに登録されている場合、ミニポート ドライバーは、RegisterState を WwanRegisterStateHome として設定する必要があります。 ProviderId メンバーは、ホーム プロバイダー ID に設定する必要があります。 ProviderName は、ホーム プロバイダー ネットワークの名前に設定する必要があります。 RoamingText メンバーは、NULL に設定する必要があります。
デバイスがローミング プロバイダーに登録されている場合、ミニポート ドライバーは、プロバイダーが優先ローミング パートナーの場合は RegisterState を WwanRegisterStatePartner に、ローミング パートナーの場合は WwanRegisterStateRoaming に、それぞれ設定します。 ミニポート ドライバーが 2 つを区別しない場合は、WwanRegisterStateRoaming に値を設定する必要があります。 ProviderId メンバーは、デバイスが登録されている現在のプロバイダーのプロバイダー ID に設定する必要があります。ProviderName には、現在登録されているプロバイダー名を入力する必要があります。 RoamingText メンバーは、存在する場合はプロバイダー固有の文字列値に設定し、それ以外は NULL に設定する必要があります。
要件
バージョン |
Windows 7 以降のバージョンの Windows で使用できます。 |
ヘッダー |
Ndis.h |