グローバル ナビゲーション サテライト システム (GNS) ドライバーの設計

データ構造、エラー報告、ドライバーのバージョン管理など、Windows 10 用のグローバル ナビゲーション サテライト システム (GNS) ドライバーを開発する際に考慮すべき設計原則について説明します。

データ構造

下位互換性と将来の拡張性のために、すべてのデータ構造は、将来の拡張機能と下位互換性の問題に対応するために、バージョン番号とサイズで始まります。 追加のセーフガードとして、各構造体には、新しいフィールドが追加された場合でも静的構造体のサイズを同じに保つためのパディング バッファーもあります。 これは、構造体の動的サイズではなく、構造体の静的コンパイル時サイズ ( sizeof を使用) を誤って使用している古いGNSS ドライバーから保護するためです。

特に指定しない限り、すべてのパラメーターは国際単位システム (SI) に従います。

パラメーター 単位
距離、しきい値、またはレベル 測定
タイムアウトまたは間隔
速度 メートル毎秒

エラー報告

グローバル ナビゲーション サテライト システム (GNS) DDI は、ドライバーからの戻り値として NTSTATUS を受け取ります。 高レベル オペレーティング システム (HLOS) は、これらのエラー メッセージに基づいて成功と失敗の場合にのみ機能し、特定のエラー メッセージは表示されません。 それでも、ドライバーは、対応する NTSTATUS エラー メッセージに密接にマップされたエラーを返すをお勧めします。 AUSS ドライバーは、診断目的に役立つ可能性がある独自のカスタム NTSTATUS エラー メッセージを送信できます。

ドライバーのバージョン管理

グローバル ナビゲーション サテライト システム (GNS) DDI に指定されたすべての構造体にはドライバー バージョン フィールドが含まれており、多くの構造体には埋め込みフィールドが含まれています。 これらのコンポーネントは、次のポリシーを使用して、新しいバージョンのGNSD DDIを軽減するために使用されます。

  • フレームワークとドライバーは、機能交換プロセスを使用してそれぞれのバージョンを通信します。 これらの IOCTL は、バージョン フィールドを使用してバージョンを通信するという点で特別と見なされます。 そのため、デバイスとプラットフォームの機能チェックを取り巻く実装では、最初に返されたバージョンを明示的に確認し、後で使用できるように保存する必要があります。 GNSS_DEVICE_CAPABILITY構造体のバージョン メンバーは、ドライバーのバージョン番号を伝えます。 GNSS_PLATFORM_CAPABILITY構造体のバージョン メンバーは、GNSS_PLATFORM_CAPABILITY アダプターのバージョン番号を伝えます。

  • 新しいフィールドが追加されるたびに、構造体に埋め込みフィールドがある場合は、構造体に追加する代わりにスペースを埋め込みから取り出す必要があり、バイナリの互換性が維持されます

  • 新しいフィールドが追加されるたびに、バージョンのGNSD DDIがインクリメントされたと見なされます。 これは、GNSD DDIヘッダー自体のコメントに反映されますが、定数として公開されません。 現在のバージョンを示すために、GNS アダプターとGNSS ドライバーの両方でプライベート定数値が使用されます。 これにより、特定のバージョンに対して、GNSS アダプターとドライバーの両方をコーディングできます。

  • GNS アダプターは、以前のバージョンのGNSS ドライバーと下位互換性がある必要があります。 新しいバージョンのDDIでプロトコルの変更が行われた場合、新しいGNSS DDIに準拠するGNSSアダプターは、新しいバージョンのドライバーに対してのみ新しいプロトコルを実装し、古いバージョンのドライバーには古いプロトコルを使用しなければなりません。

  • GNSS ドライバーは、より新しいバージョンのGNSSアダプターと前方互換性があり、新しいバージョンのGNSRアダプターを、コード化された現在のバージョンと同じ方法で扱う必要があります。

  • 以前のバージョンのGNSRアダプターは、新しいバージョンのGNSSドライバで正しく機能するとは思われません。 新しいバージョンのDDIに対してGNSSアダプターとGNSSドライバーの共同開発を容易にするために、GNSSアダプターには新しいGNSSドライバーをブロックする厳密なバージョンチェックは存在しません。 ただし、新しいバージョンの DDI に対して実装されたGNSS ドライバーは、以前のバージョンのGNSD DDI に対して実装されたGNSDアダプターを含むリテール デバイスには出荷されません。

  • WINDOWS 8.1 以前のGNSS センサー ドライバーは、そのGNSS アダプターではサポートされません。 これらのドライバーは、レガシ スタックを通じて Windows 10 で引き続き機能します。 別の Windows 10GNSS ドライバーが存在する場合、レガシのGNSS センサー ドライバーの使用は定義されていません。