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


структура 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) адаптер внедряет необходимые данные о помощи. Для события типа извлечения данных адаптер обрабатывает и отправляет данные на верхний слой. Впоследствии адаптер повторно регистрируется для того же события с драйвером с помощью четко определенных операций ввода-вывода. Все события соответствуют одной и той же общей структуре данных.

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

Требования

Требование Ценность
заголовка gnssdriver.h (include Gnssdriver.h)