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