GNSS_EVENT結構 (gnssdriver.h)

GNSS_EVENT結構會定義 GNSS 事件所需的資訊。

語法

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;

成員

Size

結構大小。

Version

版本號碼。

EventType

事件類型。

視事件類型而定,將會填入聯集的特定數據元素。

EventDataSize

此事件中包含的事件數據聯集大小。

GNSS 驅動程式必須填入適當的大小,以避免層之間的數據複製過多。 GNSS 配接器只會存取事件數據的初始位元組,如這個專案所指定。

Unused[512]

保留供未來使用的填補緩衝區。

FixData

如果 EventType 是GNSS_Fix_Available,就會填入此結構。

AgnssRequest

如果 EventType 是GNSS_Require_Agnss,就會填入這個結構。

NiRequest

如果 EventType 是GNSS_Event_Ni,就會填入此結構。

ErrorInformation

如果 EventType 是GNSS_Error,就會填入此結構。

NmeaData

如果 EventType 是GNSS_Event_NmeaData,就會填入這個結構。

GeofenceAlertData

如果 EventType 是GNSS_Event_GeofenceAlertData,就會填入此結構。

BreadcrumbAlertData

此結構包含當階層連結緩衝區達到應執行 OS 讀取作業層級時的警示資訊。

GeofencesTrackingStatus

如果 EventType 是GNSS_Event_GeofencesTrackingStatus,就會填入這個結構。

DriverRequestData

如果 EventType 是GNSS_Event_DriverRequest,就會填入這個結構。

CustomData[ANYSIZE_ARRAY]

自訂數據欄位。

備註

GNSS 驅動程式會將請求和未經請求的通知傳送給 GNSS 配接器。 這是透過驅動程式與 GNSS 配接器之間的一般事件通訊協定來完成。 配接器會註冊一或多個類型的事件,這可確保驅動程式一律擱置一或多個 I/O 要求,以便將通知傳送至適配卡。 驅動程式會在擱置的 IRP 上完成 I/O 要求,這會導致通知流向適配卡。 配接器會建立一或多個 I/O 要求,以接聽進一步的通知。

建議 (,但不需要) 驅動程式使用個別佇列來管理不同類型的事件。 佇列分隔可讓驅動程式平行處理特定類型的事件。

通知模型允許在未來新增自定義事件或廠商特定的事件,這些事件可由自定義 GNSS 協助程式元件選擇性地處理。 GNSS 配接器可以做為驅動程式與協助程式元件之間的訊息代理程式,並確保這兩個元件之間會封送處理命令和數據。

每個事件類型都有關聯 GNSS 配接器用來判斷如何處理特定事件的事件特定數據。 例如,針對AGNSS () 的協助需求,配接器會插入所需的協助數據。 針對數據擷取類型事件,配接器會處理數據並傳送至上層。 接著,配接器會透過定義完善的 IOCTL,向驅動程式重新註冊相同的事件。 所有事件都會遵循相同的整體數據結構。

事件可以是各種類型。 某些事件是由驅動程式起始的先前要求所造成 (,例如,啟動修正要求) 。 某些事件會為了參考目的而引發。 當驅動程式需要配接器來插入特定協助數據時,就會引發協助事件。

規格需求

需求
標頭 gnssdriver.h (包含 Gnssdriver.h)