共用方式為


全域導覽衛星系統 (GNSS) 驅動程序設計

討論開發全域導覽衛星系統 (GNSS) Windows 10 驅動程式時要考慮的設計原則,包括數據結構、錯誤報告和驅動程式版本控制。

資料結構

為了回溯相容性和未來的擴充性,所有數據結構都會以版本號碼和大小開始,以容納未來的延伸模組和回溯相容性問題。 為了提供額外的保護,每個結構也有填補緩衝區,即使加入新的字段,靜態結構大小也一樣。 這是為了防止任何舊版 GNSS 驅動程式錯誤地使用結構的靜態編譯時間大小, (使用 sizeof) ,而不是結構的動態大小。

除非另有指定,否則所有參數都會遵循國際單位系統 (SI) :

參數 單位
距離、閾值或層級 公尺
逾時或間隔 second
速度 計量/秒

錯誤報告

全域導覽衛星系統 (GNSS) DDI 預期 NTSTATUS 為驅動程式的傳回值。 高階操作系統 (HLOS) 只會根據這些錯誤訊息對成功和失敗案例採取動作,而且不會查看特定的錯誤訊息。 仍然建議驅動程式傳回與對應 NTSTATUS 錯誤訊息緊密對應的錯誤。 GNSS 驅動程式可以傳送自己的自定義 NTSTATUS 錯誤訊息,以用於診斷目的。

驅動程式版本控制

針對全域導覽衛星系統指定的每個結構 (GNSS) DDI 都包含驅動程式版本欄位,而且許多結構都包含填補欄位。 這兩個元件都用來使用下列原則來減輕新版本的 GNSS DDI:

  • 架構和驅動程式會使用功能交換程式來傳達其各自的版本。 這些 IOCTL 會被視為特殊,因為它們會使用 [版本] 字段來傳達其版本。 因此,裝置和平臺功能檢查周圍的實作應該先明確檢查傳回的版本,並儲存以供稍後使用。 GNSS_DEVICE_CAPABILITY 結構的版本成員會傳達驅動程式的版本號碼。 GNSS_PLATFORM_CAPABILITY 結構的版本成員會傳達 GNSS 配接器的版本號碼。

  • 每當新增欄位時,如果結構有填補欄位,則空間應該從填補中取出,而不是新增至 結構,這樣會維持二進位相容性

  • 每當新增欄位時,GNSS DDI 的版本就會被視為遞增。 這會反映在 GNSS DDI 標頭本身的批註中,但不會公開為常數。 GNSS 配接器和 GNSS 驅動程式都會使用私用常數值來指出其目前版本。 這可讓 GNSS 適配卡和驅動程式針對特定版本進行編碼。

  • GNSS 配接器必須與舊版 GNSS 驅動程式回溯相容。 如果在新版的 DDI 中引進通訊協定變更,則符合新 GNSS DDI 的 GNSS 適配卡必須只針對新版本的驅動程式實作新的通訊協定,並使用舊版驅動程式的舊通訊協定。

  • GNSS 驅動程式必須與較新版本的 GNSS 配接器相容,而且應該以與編碼的目前版本相同的方式來處理較新版本的 GNSS 適配卡。

  • 舊版的 GNSS 配接器不預期能以較新版本的 GNSS 驅動程式正常運作。 為了協助針對新版本的 DDI 共同開發 GNSS 適配卡和 GNSS 驅動程式,GNSS 配接器中不會有任何嚴格的版本檢查,以封鎖較新的 GNSS 驅動程式。 不過,針對較新版本 DDI 實作的 GNSS 驅動程式將不會寄送至零售裝置,其中包含針對舊版 GNSS DDI 實作的 GNSS 適配卡。

  • GNSS 配接器不支援任何 Windows 8.1 或較舊的 GNSS 感測器驅動程式。 這些驅動程式會繼續在透過舊版堆疊 Windows 10 運作。 如果有另一個 Windows 10 GNSS 驅動程式,則未定義舊版 GNSS 感測器驅動程式的使用方式。