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)