[VS2015] 編譯時出現 Inf2Cat:DriverVer set to a date in the future 錯誤?
才剛裝好 VS2015 + Windows SDK 10 + WDK 10,
也編譯過測試用的 Kernel mode driver (KMDF) 專案,
沒想到裝好的 VM 擺了不到半天,編譯就出問題了:
錯誤訊息是 Inf2Cat 說 DriverVer set to a date in the future:
Inf2Cat Tool Output: ........................ Signability test failed. Errors: 22.9.7: DriverVer set to a date in the future (postdated DriverVer not allowed) in kmdfdriver1.inf.
不過如果去看 kmdfdriver1.inf 的話,會發現 DriverVer 並沒有設置任何值:
[Version] Signature="$WINDOWS NT$" Class=Sample ; TODO: edit Class ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} ; TODO: edit ClassGuid Provider=%ManufacturerName% CatalogFile=KMDFDriver1.cat DriverVer= ; TODO: set DriverVer in stampinf property pages
上網查了一下,根據 Stampinf 的說明,
Stampinf 會用本地時間 (local time) 來押 timestamp,
但 Inf2Cat 會用 UTC time 來解釋那個 timestamp,因而導致錯誤… (聽起來像是沒設計好)…
微軟網頁上有一些解法,像是:
1. 設定 STAMPINF_DATE 環境變數,並在執行 Stampinf 時不要使用 -d 參數,這樣它就會去讀 STAMPINF_DATE 裡設定的日期。
2. 在開發過程中,設定 PRIVATE_DRIVER_PACKAGE=1 環境變數,這樣它會自動使用目前的日期。
看 stackoverflow: Int2Cat – DriverVer set to incorrect date,
建議的解法是直接將 Inf2Cat 改成使用 local time 來解釋 timestamp,
只要將專案的 Inf2Cat > Use Local Time 設定成 Yes 就行了:
設定好後,這個編譯錯誤就消失囉~^^
(本頁面已被瀏覽過 2,306 次)