GNSS_EVENT Struktur (gnssdriver.h)
Die GNSS_EVENT Struktur definiert die für ein GNSS-Ereignis erforderlichen Informationen.
Syntax
typedef struct {
ULONG Size;
ULONG Version;
GNSS_EVENT_TYPE EventType;
ULONG EventDataSize;
BYTE Unused[512];
union {
GNSS_FIXDATA FixData;
GNSS_AGNSS_REQUEST_PARAM AgnssRequest;
GNSS_NI_REQUEST_PARAM NiRequest;
GNSS_ERRORINFO ErrorInformation;
GNSS_NMEA_DATA NmeaData;
GNSS_GEOFENCE_ALERT_DATA GeofenceAlertData;
GNSS_BREADCRUMBING_ALERT_DATA BreadcrumbAlertData;
GNSS_GEOFENCES_TRACKINGSTATUS_DATA GeofencesTrackingStatus;
GNSS_DRIVER_REQUEST_DATA DriverRequestData;
BYTE CustomData[ANYSIZE_ARRAY];
};
} GNSS_EVENT, *PGNSS_EVENT;
Angehörige
Size
Strukturgröße.
Version
Versionsnummer.
EventType
Ereignistyp.
Je nach Ereignistyp wird ein bestimmtes Datenelement der Union ausgefüllt.
EventDataSize
Die Größe der Ereignisdatenunion, die in diesem Ereignis enthalten ist.
Der GNSS-Treiber muss die entsprechende Größe ausfüllen, um übermäßige Datenkopien zwischen den Ebenen zu vermeiden. Der GNSS-Adapter greift nur auf die anfänglichen Bytes der Ereignisdaten zu, wie durch dieses Element angegeben.
Unused[512]
Abstandspuffer, der für die zukünftige Verwendung reserviert ist.
FixData
Diese Struktur wird ausgefüllt, wenn EventType GNSS_Fix_Available ist.
AgnssRequest
Diese Struktur wird ausgefüllt, wenn EventType GNSS_Require_Agnss ist.
NiRequest
Diese Struktur wird ausgefüllt, wenn EventType GNSS_Event_Ni ist.
ErrorInformation
Diese Struktur wird ausgefüllt, wenn EventType GNSS_Error ist.
NmeaData
Diese Struktur wird ausgefüllt, wenn EventType GNSS_Event_NmeaData ist.
GeofenceAlertData
Diese Struktur wird ausgefüllt, wenn EventType GNSS_Event_GeofenceAlertData ist.
BreadcrumbAlertData
Diese Struktur enthält Warnungsinformationen für den Fall, dass der Breadcrumbpuffer eine Ebene erreicht hat, auf der Betriebssystemlesevorgänge ausgeführt werden sollen.
GeofencesTrackingStatus
Diese Struktur wird ausgefüllt, wenn EventType GNSS_Event_GeofencesTrackingStatus ist.
DriverRequestData
Diese Struktur wird ausgefüllt, wenn EventType GNSS_Event_DriverRequest ist.
CustomData[ANYSIZE_ARRAY]
Benutzerdefiniertes Datenfeld.
Bemerkungen
Der GNSS-Treiber sendet angeforderte und unerwünschte Benachrichtigungen an den GNSS-Adapter. Dies erfolgt über ein gemeinsames Ereignisprotokoll zwischen dem Treiber und dem GNSS-Adapter. Der Adapter registriert sich für einen oder mehrere Ereignistypen. Dadurch wird sichergestellt, dass mindestens eine E/A-Anforderung für den Treiber immer aussteht, um die Benachrichtigung an den Adapter zu senden. Der Treiber schließt die E/A-Anforderung für das ausstehende IRP ab, und dies bewirkt, dass die Benachrichtigung bis zum Adapter fließt. Der Adapter erstellt eine oder mehrere E/A-Anforderungen, um weitere Benachrichtigungen zu überwachen.
Es wird empfohlen (aber nicht erforderlich), dass der Treiber separate Warteschlangen für die Verwaltung verschiedener Ereignistypen verwendet. Die Trennung von Warteschlangen ermöglicht es dem Treiber, bestimmte Ereignistypen parallel zu verarbeiten.
Das Benachrichtigungsmodell ermöglicht das Hinzufügen von benutzerdefinierten oder anbieterspezifischen Ereignissen in Zukunft, die optional von einer benutzerdefinierten GNSS-Hilfskomponente verarbeitet werden können. Der GNSS-Adapter kann als Broker zwischen dem Treiber und der Hilfskomponente fungieren und stellt sicher, dass die Befehle und Daten zwischen diesen beiden Komponenten hin und her gemarstet werden.
Jeder Ereignistyp weist ereignisspezifische Daten auf, die der GNSS-Adapter verwendet, um zu bestimmen, wie das spezifische Ereignis verarbeitet werden soll. Für Die Unterstützungsanforderungen (AGNSS) fügt der Adapter z. B. die benötigten Unterstützungsdaten ein. Für das Ereignis vom Datenempfangstyp verarbeitet und sendet der Adapter die Daten an eine obere Ebene. Anschließend wird der Adapter für dasselbe Ereignis mit dem Treiber über gut definierte IOCTLs neu registriert. Alle Ereignisse folgen der gleichen Gesamtdatenstruktur.
Ereignisse können von verschiedenen Typen sein. Bestimmte Ereignisse treten als Ergebnis einer vorherigen Vom Treiber initiierten Anforderung auf (z. B. eine Startkorrekturanforderung). Bestimmte Ereignisse werden zu Informationszwecken ausgelöst. Unterstützungsereignisse werden ausgelöst, wenn der Treiber den Adapter zum Einfügen bestimmter Unterstützungsdaten benötigt.
Anforderungen
Anforderung | Wert |
---|---|
Header- | gnssdriver.h (include Gnssdriver.h) |