Freigeben über


IOCTL_GNSS_CREATE_GEOFENCE IOCTL (gnssdriver.h)

Der IOCTL_GNSS_CREATE_GEOFENCE Steuercode wird vom GNSS-Adapter verwendet, um einen Geofence zu erstellen.

Gilt für GNSS DDI Version 2 und höher.

Hauptcode

IRP_MJ_DEVICE_CONTROL

Eingabepuffer

Ein Zeiger auf eine GNSS_GEOFENCE_CREATE_PARAM-Struktur , die den zu erstellenden Geofence definiert.

Länge des Eingabepuffers

Auf sizeof(GNSS_GEOFENCE_CREATE_PARAM) festgelegt.

Ausgabepuffer

Ein Zeiger auf eine GNSS_GEOFENCE_CREATE_RESPONSE-Struktur .

Länge des Ausgabepuffers

Auf sizeof(GNSS_GEOFENCE_CREATE_RESPONSE) festgelegt.

Statusblock

Irp->IoStatus.Status wird auf STATUS_SUCCESS festgelegt, wenn die Anforderung erfolgreich ist. Andernfalls wird Status zur entsprechenden Fehlerbedingung als NTSTATUS-Code verwendet.

Hinweise

Hinweise zum GNSS-Adapter

Wenn der Aufruf erfolgreich ist, registriert die GNSS-Engine den Geofence und weist eine eindeutige ID zu. Der GNSS-Adapter verwendet die eindeutige ID für alle Interaktionen mit dem Treiber in Bezug auf diesen spezifischen Geofence.

Wenn der Aufruf fehlschlägt, muss der GNSS-Treiber sicherstellen, dass die GNSS-Engine den Geofence nicht erstellt und mit der Nachverfolgung beginnt. Bei einem Fehler sollte der Zustand der GNSS-Engine auf den vorherigen Zustand zurückgerollt werden, bevor dieser Geofence hinzugefügt wird.

Der GNSS-Adapter erwartet nicht, dass der Treiber die Geofences über Treiberneustarts hinweg beibehalten wird. Der GNSS-Adapter löscht explizit alle Geofences vom GNSS-Treiber über den Befehl GNSS_ResetGeofencesTracking zu geeigneten Zeiten (Initialisierung, Nachverfolgen status Änderung nach einem Fehler usw.).

Hinweise zu GNSS-Treibern

Wenn dies der erste Geofence ist, sollte der GNSS-Treiber die Geofence-Nachverfolgung starten, die Überwachung des Geofences auf den aktuellen Standort des Geräts auf effiziente Weise fortsetzen und Warnungen auslösen, wenn ein Geofence verletzt wird. Wenn die GNSS-Engine den Geofence nicht nachverfolgen kann (aufgrund von schlechten Signalbedingungen oder anderen vorübergehenden Fehlern), muss ein Fehler status durch das LISTEN_GEOFENCES_TRACKINGSTATUS-Ereignis ausgelöst werden.

Die GNSS-Engine muss die folgenden Richtlinien für die Geofencenachverfolgung einhalten:

  • Der Geräteverfolgungsvorgang und die Erkennung von Sicherheitsverletzungen müssen optimiert werden, um die Größe und die Fläche des Geofences zu berücksichtigen. Wenn alle Bedingungen gleich sind, sollten größere Geofences im Vergleich zu kleineren Geofences weniger aggressiv nachverfolgt werden.

  • Der Geräteverfolgungsvorgang muss dynamisch optimiert werden, um die relative Entfernung des Geofences in Bezug auf die aktuelle Position zu berücksichtigen. Alle Bedingungen sind gleich, weiter geofences sollten im Vergleich zu den näheren weniger aggressiv verfolgt werden, und die Aggression sollte zunehmen, wenn das Gerät näher an den Geofence kommt.

  • Der Mechanismus zur Erkennung von Sicherheitsverletzungen muss für den Ein- und Ausgang asymmetrisch sein. Im Allgemeinen sollten die Regeln für die Bestimmung des Ausstiegs aus einem Geofence im Vergleich zu den Regeln für die Bestimmung des Geofence-Eintrags gelockert werden.

  • Der Mechanismus zur Erkennung von Sicherheitsverletzungen muss potenzielle falsch positive Ergebnisse berücksichtigen, die aufgrund der inhärenten Ungenauigkeit des Gerätestandorts auftreten. Wenn das Gerät beispielsweise in der Nähe des Geofence-Randes bewegt wird, kann ein suboptimaler Mechanismus zur Erkennung von Sicherheitsverletzungen zu viele Ein- und Ausstiegsereignisse generieren, auch wenn das Gerät nicht physisch ein- und ausgehend wird. Asymmetrische Exiterkennung und Hysterese sind typische Maßnahmen, um solche Fehler zu vermeiden.

  • Der Geräteverfolgungsvorgang der GNSS-Engine muss alle arten von verfügbaren Positionsänderungssignalen verwenden, die entweder auf dem SoC verfügbar sind oder bei geringer Leistung verwendet werden können. Solche Signale können, aber nicht beschränkt auf, Daten von Beschleunigungsmessern und anderen Sensoren, Mobilfunksignaländerung, WLAN-Verbindung/Verbindung trennen usw. umfassen.

  • Die Geofence-Tracking- und Sicherheitsverletzungserkennungsvorgänge müssen vollständig in der GNSS-Engine auf SoC implementiert werden. Weder der GNSS-Treiber noch eine andere Erweiterungskomponente auf dem Anwendungsprozessor sollten für die Gerätenachverfolgung oder die Erkennung von Sicherheitsverletzungen aktiviert werden.

  • Der GNSS-Treiber und die GNSS-Engine müssen dokumentierte IHV-spezifische Optimierungsparameter verfügbar machen, um die Leistungs- und Leistungsoptimierung der Geofence-Tracking-Funktionalität zu erleichtern. Microsoft und OEMs verwenden Optimierungsparameter und bestimmen das richtige Gleichgewicht zwischen Servicequalität, Zuverlässigkeit und Energiekosten der Geofence-Erfahrung. Optimierungsparameter können entweder über Registrierungseinstellungen oder über IHV-SoC-Konfigurationsdaten zur Verfügung gestellt werden.

Anforderungen

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

Weitere Informationen

Erstellen von IOCTL-Anforderungen in Treibern

WdfIoTargetSendInternalIoctlOthersSynchronly

WdfIoTargetSendInternalIoctlSynchronously

WdfIoTargetSendIoctlSynchronously