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
如果GNSS_Fix_Available EventType,则填充此结构。
AgnssRequest
如果GNSS_Require_Agnss EventType,则填充此结构。
NiRequest
如果GNSS_Event_Ni EventType,则填充此结构。
ErrorInformation
如果GNSS_Error EventType,则填充此结构。
NmeaData
如果GNSS_Event_NmeaData EventType,则填充此结构。
GeofenceAlertData
如果GNSS_Event_GeofenceAlertData EventType,则填充此结构。
BreadcrumbAlertData
此结构包含有关痕迹导航缓冲区何时达到应执行 OS 读取操作的级别时的警报信息。
GeofencesTrackingStatus
如果GNSS_Event_GeofencesTrackingStatus EventType,则填充此结构。
DriverRequestData
如果GNSS_Event_DriverRequest EventType,则填充此结构。
CustomData[ANYSIZE_ARRAY]
自定义数据字段。
注解
GNSS 驱动程序将请求的和未经请求的通知发送到 GNSS 适配器。 这是通过驱动程序和 GNSS 适配器之间的通用事件协议完成的。 适配器注册一个或多个类型的事件,这可确保驱动程序始终挂起一个或多个 I/O 请求,以便将通知发送到适配器。 驱动程序在挂起的 IRP 上完成 I/O 请求,这会导致通知向上流向适配器。 适配器创建一个或多个 I/O 请求以侦听其他通知。
建议 (但不需要) 驱动程序使用单独的队列来管理不同类型的事件。 队列分离允许驱动程序并行处理某些类型的事件。
通知模型允许在将来添加自定义事件或特定于供应商的事件,这些事件可以选择由自定义 GNSS 帮助程序组件进行处理。 GNSS 适配器可以充当驱动程序和帮助程序组件之间的代理,并确保在这两个组件之间来回封送命令和数据。
每个事件类型都有关联的特定于事件的数据,GNSS 适配器使用这些数据来确定如何处理特定事件。 例如,对于 AGNSS) (协助要求,适配器会注入所需的帮助数据。 对于数据检索类型事件,适配器处理数据并将其发送到上层。 随后,适配器通过明确定义的 IOCTL 向驱动程序重新注册同一事件。 所有事件都遵循相同的整体数据结构。
事件可以是各种类型的事件。 某些事件是由于驱动程序 (启动的上一个请求而发生的,例如,启动修复请求) 。 某些事件是出于信息目的而引发的。 当驱动程序需要适配器注入特定协助数据时,将引发协助事件。
要求
要求 | 值 |
---|---|
Header | gnssdriver.h (包括 Gnssdriver.h) |