次の方法で共有


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

この構造体には、階層リンク バッファーが OS 読み取り操作を実行する必要があるレベルに達した場合のアラート情報が含まれます。

GeofencesTrackingStatus

EventType がGNSS_Event_GeofencesTrackingStatus場合、この構造体は塗りつぶされます。

DriverRequestData

EventType がGNSS_Event_DriverRequestの場合、この構造体は塗りつぶされます。

CustomData[ANYSIZE_ARRAY]

ユーザー設定データ フィールド。

注釈

GNSS ドライバーは、要請および未承諾の通知を GNSS アダプターに送信します。 これは、ドライバーと GNSS アダプターの間の共通のイベント プロトコルを使用して行われます。 アダプターは 1 つ以上の種類のイベントに登録します。これにより、ドライバーがアダプターに通知を送信するために、1 つ以上の I/O 要求が常に保留中になります。 ドライバーは保留中の IRP の I/O 要求を完了し、これにより、通知がアダプターに流れ込みます。 アダプターは、さらに通知をリッスンする 1 つ以上の I/O 要求を作成します。

ドライバーがさまざまな種類のイベントを管理するために個別のキューを使用することをお勧めします (必須ではありません)。 キューを分離すると、ドライバーは特定の種類のイベントを並列で処理できます。

通知モデルを使用すると、カスタム GNSS ヘルパー コンポーネントで必要に応じて処理できるカスタム イベントまたはベンダー固有のイベントを今後追加できます。 GNSS アダプターは、ドライバーとヘルパー コンポーネントの間のブローカーとして機能し、コマンドとデータがこれら 2 つのコンポーネント間でマーシャリングされるようにすることができます。

各イベントの種類には、GNSS アダプターが特定のイベントの処理方法を決定するために使用するイベント固有のデータが関連付けられます。 たとえば、支援要件 (AGNSS) の場合、アダプターは必要な支援データを挿入します。 データ取得型イベントの場合、アダプターはデータを処理して上位レイヤーに送信します。 その後、アダプターは、適切に定義された IOCTL を使用して、ドライバーと同じイベントに再登録します。 すべてのイベントは、同じ全体的なデータ構造に従います。

イベントにはさまざまな種類を指定できます。 特定のイベントは、ドライバーによって開始された以前の要求 (修正の開始要求など) の結果として発生します。 特定のイベントは、情報提供のために発生します。 ドライバーがアダプターに特定のアシスタンス データを挿入する必要がある場合、アシスタンス イベントが発生します。

要件

要件
Header gnssdriver.h (Gnssdriver.h を含む)