INF ファイルが Universal かどうか検証する方法
今回は、INF ファイルが Universal かどうか検証する方法として、InfVerif.exe を使う方法をご案内します。
Universal INF についてご存じない方や具体的な条件について確認したい方は、以下をご参照ください。
Using a Universal INF File
/en-us/windows-hardware/drivers/install/using-a-universal-inf-file
InfVerif.exe は、WDK 10 がインストールされている環境の c:\Program Files(x86)\Windows Kits\10\tools\<arch> (<arch> は x86 や x64) フォルダにあります。
以下のドキュメントの通り、/u オプションで Universal かどうかを検証できます。実行時には /v オプションも併せてつけることで、エラーや警告がある時の詳細が確認できます。
Running InfVerif from the command line
/en-us/windows-hardware/drivers/devtest/running-infverif-from-the-command-line
/u
Reports errors if INF is not Universal.
/v
Display verbose file logging details.
つまり、「infverif.exe /v /u <infファイルへのパス>」 と実行します。
例として、Universal Driverの概念がなかったWDK 7.1 のサンプルを使って実行してみましょう。
(C:\WinDDK\7600.16385.1\src\general\toaster\kmdf\func\featured の kmdf フォルダを C:\Blog\toaster にコピーして、WDK 7.1 で Win7 x86 checked build でビルドした wdffeatured.inf を使っています。)
C:\Program Files (x86)\Windows Kits\10\Tools\x86>infverif.exe /v /u c:\Blog\toaster\kmdf\func\featured\objchk_win7_x86\i386\wdffeatured.inf Running in Verbose Running Universal INF check Running in Console output mode
Checking c:\Blog\toaster\kmdf\func\featured\objchk_win7_x86\i386\wdffeatured.inf ERROR(1204) in c:\Blog\toaster\kmdf\func\featured\objchk_win7_x86\i386\wdffeatured.inf, line 20: Provider cannot be "Microsoft", must be organization who authored INF. ERROR(1209) in c:\Blog\toaster\kmdf\func\featured\objchk_win7_x86\i386\wdffeatured.inf, line 25: Section [destinationdirs] is defined multiple times. ERROR(1308) in c:\Blog\toaster\kmdf\func\featured\objchk_win7_x86\i386\wdffeatured.inf, line 34: Found legacy AddReg operation defining class installers (Installer32). WARNING(2223) in c:\Blog\toaster\kmdf\func\featured\objchk_win7_x86\i386\wdffeatured.inf, line 53: Section [Standard] should have '.NTx86' decoration. ERROR(1209) in c:\Blog\toaster\kmdf\func\featured\objchk_win7_x86\i386\wdffeatured.inf, line 91: Section [sourcedisksfiles] is defined multiple times.
INF is NOT VALID: 0000065B |
エラーや警告のコード、該当する行番号、修正すべき内容が確認できます。
InfVerif.exeのエラーや警告のコードは、以下のように、値の範囲ごとに役割があります。
1200 ~ 1299 : INFファイルの構文エラー
1300 ~ 1309 : Universal INFではないことを示すエラー
2000 ~ 2999 : インストール時に問題となる可能性があることを示す警告
そのため、上記の例では、1300 番台のエラーコードがあるため、Universal に対応していないと言えます。
WDK 10 の同じサンプルでは、以下のように Universal 対応しているので、ご安心ください。
C:\Program Files (x86)\Windows Kits\10\Tools\x86>infverif.exe /v /u c:\Blog\toastDrv\kmdf\func\featured\Debug\wdffeatured.inf Running in Verbose Running Universal INF check Running in Console output mode
Checking c:\Blog\toastDrv\kmdf\func\featured\Debug\wdffeatured.inf INF is valid |
エラーや警告の主なコードの説明は、以下に記載がありますのでご参照ください。
INF Validation Errors and Warnings
/en-us/windows-hardware/drivers/devtest/inf-validation-errors-and-warnings
<ご注意>
既知の問題として、誠に恐れ入りますが、WDK 10 1607 (14393.1884、Anniversary Update) の infverif は動作せず、必ず使用法が表示されるという事象があります。このバージョン以外のWDK 10でご確認ください。
InfVerif tool not working with windows 10 and WDK 10
<参考>
InfVerif
/en-us/windows-hardware/drivers/devtest/infverif
以上の内容がお役に立てば幸いです。
WDKサポートチーム 津田