Поделиться через


структура 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

Эта структура содержит сведения об оповещениях о том, когда буфер навигации достиг уровня, на котором должны выполняться операции чтения ОС.

GeofencesTrackingStatus

Эта структура заполняется, если EventType имеет GNSS_Event_GeofencesTrackingStatus.

DriverRequestData

Эта структура заполняется, если EventType имеет GNSS_Event_DriverRequest.

CustomData[ANYSIZE_ARRAY]

Настраиваемое поле данных.

Комментарии

Драйвер GNSS отправляет запрошенные и нежелательные уведомления адаптеру GNSS. Это делается с помощью общего протокола событий между драйвером и адаптером GNSS. Адаптер регистрирует события одного или нескольких типов, и это гарантирует, что один или несколько запросов ввода-вывода всегда находятся в ожидании, чтобы драйвер отправлял уведомление адаптеру. Драйвер завершает запрос ввода-вывода для ожидающего IRP, что приводит к тому, что уведомление будет передаваться адаптеру. Адаптер создает один или несколько запросов ввода-вывода для прослушивания дальнейших уведомлений.

Рекомендуется (но не обязательно), чтобы драйвер использовал отдельные очереди для управления различными типами событий. Разделение очередей позволяет драйверу параллельно обрабатывать определенные типы событий.

Модель уведомлений позволяет в будущем добавлять пользовательские события или события конкретного поставщика, которые при необходимости могут обрабатываться настраиваемым вспомогательным компонентом GNSS. Адаптер GNSS может выступать в качестве посредника между драйвером и вспомогательным компонентом и обеспечивает маршалирование команд и данных между этими двумя компонентами.

Каждый тип события имеет связанные данные, связанные с конкретным событием, которые адаптер GNSS использует для определения способа обработки конкретного события. Например, для требований к помощи (AGNSS) адаптер внедряет необходимые данные помощи. Для события типа извлечения данных адаптер обрабатывает и отправляет данные на верхний слой. Впоследствии адаптер повторно регистрирует то же событие с драйвером с помощью четко определенных IOCTL. Все события следуют одной и той же общей структуре данных.

События могут быть разных типов. Некоторые события возникают в результате предыдущего запроса, инициированного драйвером (например, запрос на запуск исправления). Некоторые события вызываются для информационных целей. События помощи возникают, когда драйвер требует от адаптера внедрения определенных данных помощи.

Требования

Требование Значение
Заголовок gnssdriver.h (включая Gnssdriver.h)