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;

Member

Size

Strukturgröße.

Version

Versionsnummer:

EventType

Der 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 eine entsprechende Größe ausfüllen, um übermäßige Datenkopiervorgänge zwischen den Ebenen zu vermeiden. Der GNSS-Adapter greift nur auf die anfänglichen Bytes der Ereignisdaten zu, wie von diesem Element angegeben.

Unused[512]

Reservierter Puffer für die zukünftige Verwendung.

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, wenn der Breadcrumbpuffer eine Ebene erreicht hat, auf der Lesevorgänge des Betriebssystems 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.

Hinweise

Der GNSS-Treiber sendet angeforderte und nicht angeforderte 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 eine oder mehrere E/A-Anforderungen immer ausstehen, damit der Treiber die Benachrichtigung an den Adapter senden kann. Der Treiber führt die E/A-Anforderung für den ausstehenden IRP aus, wodurch die Benachrichtigung an den Adapter gesendet wird. Der Adapter erstellt eine oder mehrere E/A-Anforderungen, um auf weitere Benachrichtigungen zu lauschen.

Es wird empfohlen (aber nicht erforderlich), dass der Treiber separate Warteschlangen zum Verwalten verschiedener Ereignistypen verwendet. Die Trennung von Warteschlangen ermöglicht es dem Treiber, bestimmte Arten von Ereignissen parallel zu verarbeiten.

Das Benachrichtigungsmodell ermöglicht es, in Zukunft benutzerdefinierte oder anbieterspezifische Ereignisse hinzuzufügen, 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 sicherstellen, dass die Befehle und Daten zwischen diesen beiden Komponenten hin und her gemarshallt werden.

Jeder Ereignistyp verfügt über ereignisspezifische Daten, die der GNSS-Adapter verwendet, um zu bestimmen, wie das spezifische Ereignis verarbeitet werden soll. Beispielsweise fügt der Adapter für Unterstützungsanforderungen (AGNSS) die erforderlichen Unterstützungsdaten ein. Für das Ereignis vom Typ "Datenabruf" verarbeitet der Adapter die Daten und sendet sie an eine obere Ebene. Anschließend wird der Adapter über klar definierte IOCTLs erneut für dasselbe Ereignis beim Treiber registriert. Alle Ereignisse folgen der gleichen Gesamtdatenstruktur.

Ereignisse können von verschiedenen Typen sein. Bestimmte Ereignisse treten als Folge einer vorherigen Anforderung auf, die vom Treiber initiiert wurde (z. B. eine Anforderung zum Starten einer Korrektur). Bestimmte Ereignisse werden zu Informationszwecken ausgelöst. Unterstützungsereignisse werden ausgelöst, wenn der Treiber vom Adapter verlangt, dass bestimmte Unterstützungsdaten eingefügt werden.

Anforderungen

Anforderung Wert
Header gnssdriver.h (include Gnssdriver.h)