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) |