Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Asynchrone Transaktionen
Das MB-Treibermodell setzt voraus, dass die operative Semantik zwischen den MB-Dienst- und Miniporttreibern nicht blockiert wird, indem der asynchrone Benachrichtigungsmechanismus verwendet wird, der in NDIS 6.x bereitgestellt wird. Mit diesem Mechanismus kann der MB-Dienst weiterhin OID-Anforderungen zur Verarbeitung an den Miniporttreiber senden, ohne auf den Abschluss des aktuellen Vorgangs zu warten.
Eine asynchrone Transaktion ist ein dreiseitiger Handshake, der mit der anfänglichen Anforderung beginnt, gefolgt von einer Anforderungsstatusantwort und dann durch eine endgültige Transaktionsanzeige abgeschlossen wird. Die Anforderungsstatusantwort ist vorläufig, da nur bestätigt wird, dass der Miniporttreiber die Anforderung erhalten hat. Die asynchrone Nachverfolgungsanzeige ist transaktionsbereit, da sie den Abschluss der Transaktion signalisiert. Der Miniporttreiber gibt den Statuscode sowie die resultierenden Daten in der Transaktionsanzeige zurück.
Asynchrone Set- und Query-Anfragen
Viele der vom MB-Dienst verwendeten Set- und Abfrage-OID-Anforderungen werden asynchron verarbeitet. Weitere Informationen zu Set- und Abfrage-OID-Anforderungen finden Sie unter NDIS_OID_REQUEST. Die Tabelle "WWAN-spezifische OIDs" im Thema "MB-Datenmodell " identifiziert, welche OIDs asynchron verarbeitet werden.
Das folgende Diagramm stellt die Interaktionssequenz für eine asynchrone Abfragetransaktion zwischen dem MB-Dienst und dem Miniporttreiber dar. Die Bezeichnungen in Fettformat stellen OID-Bezeichner oder Transaktionsflusssteuerung dar, und die Beschriftungen im regulären Text stellen die wichtigen Flags innerhalb der OID-Struktur dar.
Der Drei-Wege-Handshake ist für Abfrage - und Satzanforderungen identisch.
Mit Ausnahme von OID_WWAN_DRIVER_CAPS folgen alle anderen MB-spezifischen OID-Anforderungen dem asynchronen Transaktionsmechanismus für den Informationsaustausch zwischen Miniporttreibern und dem MB-Dienst mit den folgenden zusätzlichen Hinweisen:
Miniport-Treiber sollten sofort eine OID-Anforderung bei einer Fehlerbedingung fehlschlagen, z. B. eine ungültige OID-Anforderung.
Miniport-Treiber müssen alle WWAN-spezifischen Fehlerbedingungen mit dem richtigen Fehlercode (z. B. WWAN_STATUS_XXX) zurückgeben, der im uStatus-Element der Ereignisbenachrichtigungsstruktur angegeben ist. Miniport-Treiber sollten bei Bedarf auch die Mitglieder ausfüllen, die dem uStatus-Mitglied folgen. Miniporttreiber sollten z. B. den ContextState.uNwError-Member der NDIS_WWAN_CONTEXT_STATE Struktur ausfüllen, sofern verfügbar. Im Falle eines Fehlers bei der Verarbeitung von OIDs im Zusammenhang mit PINs verfügen Miniporttreiber möglicherweise nicht unbedingt über die aktuellen PIN-Statusinformationen, die im PinInfo.PinState-Mitglied von NDIS_WWAN_PIN_INFO angegeben werden sollen.
Miniport-Treiber sollten NDIS_STATUS_INDICATION_REQUIRED als vorläufige Antwort für alle asynchronen OID-Anforderungen zurückgeben.
Miniport-Treiber sollten Gerätestatusänderungen unterscheiden können, die durch eine OID-Anforderung verursacht werden, von anderen Ursachen. Miniport-Treiber sollten Transaktionsbenachrichtigungen für Zustandsänderungen senden, die sich aus OID-Anforderungen ergeben, und sie sollten unerwünschte Ereignisbenachrichtigungen für Zustandsänderungen aus anderen Ursachen senden.
Miniporttreiber sind für die Verwaltung des Kernelmodusspeichers verantwortlich, obwohl der MB-Dienst zunächst den Speicher für Anforderungen zuweist. Nachdem der MB-Dienst eine Antwort von einem Miniporttreiber empfängt, kann der Dienst den Für die OID-Anforderung zugewiesenen Benutzermodusspeicher freigeben.
Das folgende Diagramm stellt die Interaktionssequenz für eine asynchrone Satztransaktion zwischen dem MB-Dienst und dem Miniporttreiber dar. Die Bezeichnungen in Fettformat stellen OID-Bezeichner oder Transaktionsflusssteuerung dar, und die Beschriftungen im regulären Text stellen die wichtigen Flags innerhalb der OID-Struktur dar.
Asynchrone Antwort
Mit der NDIS 6.0-Spezifikation (veröffentlicht mit Windows Vista) wurde ein neuer Statuscode eingeführt, NDIS_STATUS_INDICATION_REQUIRED für Miniporttreiber, um die asynchrone Art einer Transaktion an den MB-Dienst in der vorläufigen Antwort eines Miniporttreibers auf eine OID-Anforderung zu übermitteln.
Wie in der MB Interface Overview erwähnt, verfügt der MB-Dienst nicht über direkten Zugriff auf den Kernelmodusspeicher, der von einem MB-Miniporttreiber zugewiesen wird. Das im Kernelmodus gespeicherte Ausführungsergebnis wird davon ausgegangen, dass es von einem Vermittler, z. B. WMI oder einem NDIS-Filtertreiber, dem MB-Dienst zur Verfügung gestellt wird. Daher können Miniporttreiber den zugewiesenen Kernelmodusspeicher freigeben, nachdem der NdisMIndicateStatusEx-Funktionsaufruf in der Transaktionsanzeige zurückgegeben wurde.
Die Handshake-Verfahren, denen Miniporttreiber und der MB-Dienst folgen müssen, werden im Folgenden beschrieben.
MB Miniport-Treiberprozedur
Bei Erhalt einer OID-Anforderung sollten Miniporttreiber die folgenden Schritte ausführen:
Weisen Sie Speicher im Kernelmodus zu, um den Inhalt der NDIS_OID_REQUEST Datenstruktur zu kopieren, die der OID-Anforderung zugeordnet ist.
Stellen Sie unter den Parametern der Anforderung sicher, dass auch die Mitglieder "RequestId" und "RequestHandle" der OID-Anforderungsstruktur kopiert werden. Diese Mitglieder werden später in der Transaktionsanzeige verwendet.
Gibt eine vorläufige NDIS_STATUS_INDICATION_REQUIRED-Status-Antwort zurück, um den MB-Dienst darüber zu informieren, dass der Miniporttreiber die Anforderung asynchron abschließen wird.
Speichern Sie nach Abschluss des Vorgangs das Ergebnis nach Bedarf im lokalen oder vom Treiber zugewiesenen Speicher.
Rufen Sie die NdisMIndicateStatusEx-Funktion auf, um den MB-Dienst zu benachrichtigen, dass der ausstehende Vorgang abgeschlossen wurde. Miniporttreiber sollten die Elemente der NDIS_STATUS_INDICATION Struktur wie folgt ausfüllen:
- Legen Sie das StatusCode-Element auf den Typ der Statusbenachrichtigung fest. Beispiel: NDIS_STATUS_WWAN_XXX.
- Legen Sie das DestinationHandle-Element auf das RequestHandle-Element fest, das in der NDIS_OID_REQUEST Datenstruktur empfangen wurde, als der Miniporttreiber die entsprechende OID-Anforderung empfangen hat.
- Legen Sie das RequestId-Element so fest, dass es mit dem RequestId-Element der NDIS_OID_REQUEST Statusstruktur übereinstimmt, wenn der Miniporttreiber die entsprechende OID-Anforderung empfangen hat.
- Legen Sie die Mitglieder StatusBuffer und StatusBufferSize so fest, dass sie auf den vom Miniport-Treiber zugewiesenen Speicher und die Größe des Speicherpuffers verweisen. Dieser Speicherpuffer enthält das Ergebnis des abgeschlossenen Vorgangs.
- Wenn der Vorgang erfolgreich abgeschlossen ist, legen Sie das uStatus-Element auf WWAN_STATUS_SUCCESS fest. Legen Sie andernfalls das uStatus-Element auf den entsprechenden WWAN_STATUS_XXX Wert fest, um den Typ des Fehlers anzugeben.
Wenn der Funktionsaufruf zurückgegeben wird, sollte der Miniporttreiber den Speicher freigeben, den er für die OID-Anforderung zugewiesen hat.
MB-Dienstprozedur
Der MB-Dienst verarbeitet asynchrone Transaktionen mithilfe des folgenden Verfahrens:
Weisen Sie den Pufferspeicher für die Anforderung basierend auf der OID-Datenstruktur zu. Füllen Sie die Elemente der Datenstruktur mit den entsprechenden Werten aus.
Rufen Sie die NdisOidRequest-Funktion mit dem InformationBuffer-Element auf, das auf die OID-Datenstruktur für die OID-Anforderung zeigt, und warten Sie, bis der Miniporttreiber reagiert.
Nach Erhalt einer NDIS_STATUS_INDICATION_REQUIRED vorläufige Antwort vom Miniporttreiber speichert der MB-Dienst die RequestId, gibt den zugewiesenen Speicher frei und markiert die Transaktion als geöffnet. Zu diesem Zeitpunkt kann der MB-Dienst nachfolgende OID-Anforderungen und -Benachrichtigungen verarbeiten.
Überprüfen Sie nach Erhalt einer Benachrichtigung mit NDIS_STATUS_WWAN_XXX als StatusCode-Wert , ob die RequestId mit der einer Transaktion übereinstimmt, die als geöffnet gekennzeichnet ist. Wenn eine Übereinstimmung vorhanden ist, schließt der Dienst die Transaktion. Wenn keine Übereinstimmung gefunden wird, behandeln Sie die Benachrichtigung als nicht angeforderte Ereignisbenachrichtigung.
Verarbeiten Sie die im StatusBuffer-Mitglied zurückgegebenen Daten, und nehmen Sie ggf. Statusänderungen am MB-Dienst vor.
Hinweise
Es gibt zwei Arten von WWAN-spezifischen Indikationen , die Miniporttreiber generieren können:
Ereignisbenachrichtigungen, die sich aus einer Änderung des Objektzustands im MB-Gerät ergeben.
Transaktionsbenachrichtigungen, die den Abschluss eines asynchronen Vorgangs signalisieren.
In beiden Fällen sollten Miniporttreiber die NdisMIndicateStatusEx-Funktion aufrufen.
Ereignisbenachrichtigung
Ereignisbenachrichtigungen werden in dem Sinne nicht angefordert, dass der Miniporttreiber proaktiv den Hinweis als Zustandsänderungsereignis an den MB-Dienst sendet. Die Statusänderung wird durch eine Aktion aus einer anderen Entität als dem MB-Dienst verursacht. Der MB-Dienst geht davon aus, dass Miniporttreiber die Ursache der Änderung erkennen können.
Für jede WWAN-spezifische Ereignisbenachrichtigung müssen Miniporttreiber das RequestId-Element der NDIS_STATUS_INDICATION Struktur auf Null festlegen. Das StatusCode-Element gibt an, welches Objekt im MB-Gerät geändert wurde. Der Miniporttreiber kann dieses Objekt auf einen der folgenden Werte festlegen:
NDIS_STATUS_WWAN_HOME_PROVIDER
NDIS_STATUS_WWAN_PREFERRED_PROVIDERS
NDIS_STATUS_WWAN_VISIBLE_PROVIDERS
NDIS_STATUS_WWAN_REGISTER_STATE
NDIS_STATUS_WWAN_PACKET_SERVICE
NDIS_STATUS_WWAN_CONTEXT_STATE
NDIS_STATUS_WWAN_PROVISIONED_CONTEXTS
NDIS_STATUS_WWAN_SERVICE_ACTIVATION
NDIS_STATUS_WWAN_SMS_CONFIGURATION
NDIS_STATUS_WWAN_VENDOR_SPECIFIC
Der MB-Dienst kann auch andere Ereignisbenachrichtigungen von NDIS verarbeiten. Diese Nicht-MB-Ereignisbenachrichtigungen unterliegen nicht unbedingt der Anforderung, dass ihre RequestId-Werte auf Null festgelegt werden.
Transaktionsbenachrichtigungen
Miniport-Treiber verwenden Transaktionsbenachrichtigungen, um den MB-Dienst darüber zu informieren, dass eine asynchrone Transaktion abgeschlossen ist, und der MB-Dienst verwendet Transaktionsbenachrichtigungen, um geöffnete Transaktionen zu schließen und seinen Zustandsautomaten zu aktualisieren.
Der MB-Dienst erwartet Transaktionsbenachrichtigungen, sodass geöffnete Transaktionen geschlossen werden können. Es handelt sich um den abschließenden Austausch des Three-Way-Handshakes zwischen dem MB-Dienst und dem Miniport-Treiber in einer asynchronen Transaktion. Der Wert des RequestId-Mitglieds der NDIS_STATUS_INDICATION in jeder Transaktionsbenachrichtigung muss nicht null sein, die aus der entsprechenden Anforderung in derselben Transaktion kopiert wird.
Sie müssen das RequestId-Element der NDIS_STATUS_INDICATION Struktur korrekt festlegen, damit der asynchrone Mechanismus ordnungsgemäß funktioniert. Der MB-Dienst stellt sicher, dass der RequestId-Wert unter allen ausstehenden Anforderungen eindeutig und nicht null ist. Miniport-Treiber müssen den gleichen RequestId-Wert in der entsprechenden Angabe zurückgeben, damit der MB-Dienst die Angabe mit einer geöffneten Transaktion korreliert.
Statusanzeigestruktur
Sowohl die asynchrone Antwort für eine bestimmte OID-Anforderung als auch die unaufgeforderten Ereignisbenachrichtigungsstrukturen teilen sich die folgenden Strukturmitglieder, auf die durch das StatusBuffer-Element des StatusIndication-Parameters in NdisMIndicateStatusEx verwiesen wird:
typedef struct _NDIS_WWAN_XXX {
NDIS_OBJECT_HEADER Header;
WWAN_STATUS uStatus;
ULONG uNwError;//Optional. Only used for network operations.
WWAN_XXX XxxStruct;
} NDIS_WWAN_XXX, *PNDIS_WWAN_XXX;
Ein Wert von Null im RequestId-Element der NDIS_STATUS_INDICATION-Struktur bedeutet, dass es sich um eine unaufgeforderte Ereignisbenachrichtigung handelt und jederzeit auftreten kann.
Wenn der uStatus-Member in der zurückgegebenen Angabe einer Set- oder Abfrage-OID-Anforderung nicht gleich WWAN_STATUS_SUCCESS ist, müssen die Member der zugeordneten NDIS_WWAN_XXX-Struktur nicht gültig sein.
Bei nicht angeforderten Ereignisbenachrichtigungen basierend auf Netzwerkereignissen müssen Miniporttreiber ggf. das uNwError-Mitglied ausfüllen.
Die folgende Tabelle zeigt Die Registrierung, Paketanfügung und Pakettrennfunktion verursachen Codefehlerwerte, die in der 3GPP TS 24.008-Spezifikation für GSM-basierte Netzwerke definiert sind:
| 3GPP 24.008 Ursachencode | Interpretation des Ursachencodes |
|---|---|
2 – International Mobile Subscriber Identity (IMSI) im HLR unbekannt |
Entweder die SIM-Karte oder das Gerät ist nicht aktiviert, oder das Abonnement ist abgelaufen, was zu einer Netzwerkdeaktivierung führte. |
4 – IMSI unbekannt in VLR |
Das Roamingfeature ist nicht abonniert. |
6 - Illegales ME |
MS durch das Netzwerk blockiert aufgrund eines gestohlenen Berichts. |
7 – GPRS-Dienste sind nicht zulässig |
Der Benutzer verfügt nicht über ein GPRS-Abonnement. Der Benutzer verfügt nur über ein Sprachverbindungsabonnement. |
8 – GPRS- und nicht GPRS-Dienste sind nicht zulässig |
GPRS- und nicht GPRS-Dienste sind nicht zulässig. |
11 - PLMN nicht zulässig |
Der Dienst wird aufgrund eines abgelaufenen Abonnements oder einer anderen Ursache durch das Netzwerk blockiert. |
12 – Standortbereich nicht zulässig |
Das Benutzerabonnement lässt keinen Zugriff im aktuellen Standortbereich zu. |
13 – Roaming in diesem Standortbereich nicht zulässig |
Das Abonnement erlaubt Roaming, aber Roaming ist im aktuellen Standortbereich nicht zulässig. |
14 - GPRS-Dienste in diesem PLMN nicht zulässig |
Der ausgewählte Netzwerkanbieter stellt keinen GPRS-Dienst für die MS bereit. |
15 - Keine geeigneten Zellen im Positionsbereich |
Kein Abonnement für den Dienst. |
17 – Netzwerkfehler |
Fehler bei der Registrierung. |
22 - Stauung |
Fehler bei der Registrierung aufgrund von Netzwerküberlastungen. |
Wenn das Netzwerk z. B. ein Deaktivierungskontextereignis initiiert, da Roaming im Standortbereich nicht zulässig ist, sollten Miniporttreiber das uNwError-Mitglied auf 13 gemäß dem 3GPP TS 24.008 Ursachencodes für GSM-basierte Netzwerke festlegen.
Ähnliche Logik sollte auch auf CDMA-basierte Netzwerke angewendet werden. Es gibt jedoch keinen Standard für CDMA-basierte Netzwerkfehlercodes. CDMA-Geräte sollten das Netzwerk -specific oder gerätespezifische Fehlercodes verwenden.
Bei der asynchronen Antwort eines Miniporttreibers auf OID-Anforderungen ist das RequestId-Element der NDIS_STATUS_INDICATION-Struktur eine Nicht-Null-Nummer, die als Teil einer Satz - oder Abfrageanforderung an den Miniporttreiber übergeben wurde. Der Miniporttreiber muss das uStatus-Element entsprechend ausfüllen. Beispiel: WWAN_STATUS_SUCCESS oder eine der entsprechenden Fehlerwerte, die im folgenden Abschnitt aufgeführt sind. Darüber hinaus muss der Miniporttreiber den uNwError-Member, wo dies angebracht und möglich ist, ausfüllen.
Ereignisbenachrichtigungsstatus
In der folgenden Tabelle sind die WWAN_STATUS Codes aufgeführt, die MB-Miniporttreiber im uStatus-Element der NDIS_WWAN_XXX Ereignisbenachrichtigungsstrukturen angeben können.
| Wert | Bedeutung |
|---|---|
WWAN_STATUS_SUCCESS |
Der Vorgang war erfolgreich. |
WWAN_STATUS_FAILURE |
Fehler beim Vorgang (generischer Fehler). |
WWAN_STATUS_BUSY |
Fehler beim Vorgang, da das Gerät ausgelastet ist. |
WWAN_STATUS_SIM_NICHT_EINGESETZT |
Der Vorgang ist fehlgeschlagen, da die SIM-Karte nicht vollständig in das Gerät eingefügt wurde. |
WWAN_STATUS_BAD_SIM |
Der Vorgang ist fehlgeschlagen, da die SIM-Karte schlecht ist und nicht weiter verwendet werden kann. |
WWAN_STATUS_PIN_ERFORDERLICH |
Fehler beim Vorgang, da eine PIN eingegeben werden muss, um fortzufahren. |
WWAN_STATUS_PIN_DISABLED |
Fehler beim Vorgang, da die PIN deaktiviert ist. |
WWAN_STATUS_NICHT_REGISTRIERT |
Fehler beim Vorgang, da das Gerät nicht bei einem Netzwerk registriert ist. |
WWAN_STATUS_PROVIDERS_NOT_FOUND |
Fehler beim Vorgang, da keine Netzwerkanbieter gefunden werden konnten. |
WWAN_STATUS_NO_DEVICE_SUPPORT |
Fehler beim Vorgang, da das Gerät den Vorgang nicht unterstützt. |
WWAN_STATUS_PROVIDER_NOT_VISIBLE |
Fehler beim Vorgang, da der Dienstanbieter zurzeit nicht sichtbar ist. |
WWAN_STATUS_DATENKLASSE_NICHT_VERFÜGBAR |
Fehler beim Vorgang, da die angeforderte Datenklasse nicht verfügbar war. |
WWAN_STATUS_PACKET_SVC_DETACHED (WWAN-Status: Paketdienst getrennt) |
Fehler beim Vorgang, da der Paketdienst getrennt ist. |
WWAN_STATUS_MAX_ACTIVATED_CONTEXTS |
Fehler beim Vorgang, da die maximale Anzahl aktivierter Kontexte erreicht wurde. |
WWAN_STATUS_NOT_INITIALIZED |
Fehler beim Vorgang, da sich das Gerät im Prozess der Initialisierung befindet. Wiederholen Sie den Vorgang, nachdem sich der Bereitzustand des Geräts in WwanReadyStateInitializedgeändert hat. |
WWAN_STATUS_VOICE_CALL_IN_PROGRESS |
Der Vorgang ist fehlgeschlagen, weil gerade ein Sprachanruf läuft. |
WWAN_STATUS_CONTEXT_NOT_ACTIVATED |
Fehler beim Vorgang, da der Kontext nicht aktiviert ist. |
WWAN_STATUS_DIENST_NICHT_AKTIVIERT |
Fehler beim Vorgang, da der Dienst nicht aktiviert ist. |
WWAN_STATUS_UNGÜLTIGE_ZUGRIFFSZEICHENKETTE |
Fehler beim Vorgang, da die Zugriffszeichenfolge ungültig ist. |
WWAN_STATUS_UNGÜLTIGER_BENUTZERNAME_PASSWORT |
Fehler beim Vorgang, da der angegebene Benutzername und/oder das angegebene Kennwort ungültig sind. |
WWAN_STATUS_FUNKGERÄT_AUSGESCHALTET |
Der Vorgang ist fehlgeschlagen, da das Funkgerät zurzeit ausgeschaltet ist. |
WWAN_STATUS_INVALID_PARAMETERS (Ungültige Parameter) |
Fehler beim Vorgang aufgrund ungültiger Parameter. |
WWAN_STATUS_READ_FAILURE |
Der Vorgang ist fehlgeschlagen aufgrund eines Lesefehlers. |
WWAN_STATUS_SCHREIBFEHLER |
Der Vorgang schlug fehl aufgrund eines Schreibfehlers. |
Die folgende Tabelle zeigt SMS-spezifische Statuswerte.
| Wert | Bedeutung |
|---|---|
WWAN_STATUS_SMS_OPERATION_NOT_ALLOWED (SMS-Operation nicht erlaubt) |
Fehler beim SMS-Vorgang, da der Vorgang nicht zulässig ist. |
WWAN_STATUS_SMS-Speicherfehler |
Fehler beim SMS-Vorgang aufgrund eines Speicherfehlers. |
WWAN_STATUS_SMS_INVALID_MEMORY_INDEX |
Fehler beim SMS-Vorgang aufgrund eines ungültigen Speicherindexes– WwanSmsFlagIndex für OID_WWAN_SMS_READ. |
WWAN_STATUS_SMS_UNKNOWN_SMSC_ADDRESS |
Fehler beim SMS-Vorgang, da die Servicecenternummer entweder ungültig oder unbekannt ist. |
WWAN_STATUS_SMS_NETZWERK_TIMEOUT |
Fehler beim SMS-Vorgang aufgrund eines Netzwerktimeouts. |
WWAN_STATUS_SMS_MEMORY_FULL |
Fehler beim SMS-Vorgang, da der SMS-Nachrichtenspeicher voll ist. |
WWAN_STATUS_SMS_UNKNOWN_ERROR |
Fehler beim SMS-Vorgang aufgrund eines unbekannten Fehlers (generischer Fehler). |
WWAN_STATUS_SMS_FILTER_NICHT_UNTERSTÜTZT |
Fehler beim SMS-Vorgang, da der angeforderte Filtertyp nicht unterstützt wird. |
WWAN_STATUS_SMS_MORE_DATA |
Diese Transaktion ist noch nicht abgeschlossen. Einige Daten wurden zurückgegeben, und es werden weitere Daten zurückgegeben. |
WWAN_STATUS_SMS_SPRACHE_NICHT_UNTERSTÜTZT |
Fehler beim SMS-Vorgang, da die SMS-Sprache nicht unterstützt wird. Dies gilt nur für CDMA-basierte Geräte. |
WWAN_STATUS_SMS_Codierung_nicht_unterstützt |
Fehler beim SMS-Vorgang, da die SMS-Codierung nicht unterstützt wird. Dies gilt nur für CDMA-basierte Geräte. |
WWAN_STATUS_SMS_FORMAT_NICHT_UNTERSTÜTZT |
Fehler beim SMS-Vorgang, da das SMS-Format nicht unterstützt wird. |
Anmerkung Diese WWAN-spezifischen Statuscodes werden nur für asynchrone Transaktionen im uStatus-Element der NDIS_WWAN_XXX-Strukturen verwendet.
Miniport-Treiber verwenden Ereignisbenachrichtigungen, um den MB-Dienst über eine Objektstatusänderung in ihrem MB-Gerät zu informieren, ohne zuerst eine OID-Anforderung erhalten zu haben. Der MB-Dienst verwendet Ereignisbenachrichtigungen, um seinen Zustandscomputer nur zu aktualisieren.
Beachten Sie, dass NDIS zwar alle Anforderungen serialisiert, die an Miniporttreiber gesendet werden, aber miniport-Treiber geben möglicherweise nicht die Antworten in derselben Reihenfolge zurück. Dies liegt daran, dass die in die Warteschlange eingereihten Anforderungen im Miniporttreiber parallel verarbeitet werden können. Daher stellt der MB-Dienst sicher, dass, wenn zwei Anforderungen voneinander abhängig sind, die zweite Anforderung erst gesendet wird, nachdem der Miniporttreiber die erste Anforderung abgeschlossen hat.
Statusänderungsbenachrichtigung
Im Allgemeinen sollten Miniporttreiber den MB-Dienst immer über den aktualisierten Zustand ihres MB-Geräts über Transaktionsbenachrichtigungen oder über nicht angeforderte Ereignisbenachrichtigungen benachrichtigen. Die folgenden Szenarien sind einige Ausnahmen, bei denen Miniporttreiber nicht mit aktualisierten Statusinformationen reagieren sollen. Der MB-Dienst kann den aktualisierten Zustand aus dem Abschlussstatus anderer Vorgänge ermitteln:
Miniporttreiber müssen keine NDIS_STATUS_WWAN_PIN_LIST Ereignisanzeige senden, wenn sich der PIN-Zustand ändert, da der MB-Dienst angefordert hat, die PIN zu aktivieren oder zu deaktivieren.
Miniport-Treiber müssen in Transaktionsantworten auf OID_WWAN_PROVISIONED_CONTEXT Festlegen-Operationen nicht die aktualisierte Liste der bereitgestellten Kontexte zurückgeben.
Miniport-Treiber müssen nicht in den Transaktionsantworten auf OID_WWAN_PREFERRED_PROVIDERS Setzen-Operationen auf die aktualisierte Liste der bevorzugten Anbieter reagieren. Der MB-Dienst kann diese Informationen basierend auf der anfänglichen Liste und dem Erfolgsstatus des Set-Vorgangs ermitteln.
Miniporttreiber müssen nicht mit dem aktuellen WWAN_SMS_CONFIGURATION Wert für OID_WWAN_SMS_CONFIGURATION festgelegte Vorgänge reagieren.