本主題介紹驅(qū)動程序安裝錯誤和警告可以顯示作為自動 INF 驗證結(jié)果,Microsoft Visual Studio 執(zhí)行或運行時InfVerif工具。
從 Visual Studio 2015 with WDK 10 在生成您的驅(qū)動程序時,以下的 INF 文件錯誤可以出現(xiàn)在錯誤列表窗格。 如果從命令行運行 InfVerif.exe,工具會在命令提示符下或結(jié)果的 HTML 版本中顯示這些錯誤。
錯誤的指南
InfVerif 如下所示的常規(guī)規(guī)則,較低的錯誤號、 更嚴(yán)重問題。 大多數(shù)的錯誤代碼可以是一條警告或錯誤具體取決于提供給 InfVerif 的參數(shù)。
處理錯誤
若要通過硬件開發(fā)人員中心儀表板上的驅(qū)動程序測試,必須修復(fù)所有錯誤。 錯誤與以下條件:
INF 分析器是無法成功解釋您 INF
INF 分析器是能夠解釋 INF 只能通過進(jìn)行默認(rèn)值假設(shè) (不明確的語法)
InfVerif 的參數(shù)指示規(guī)則集,應(yīng)該應(yīng)用于 INF (如通用)
而無需提交您的驅(qū)動程序開發(fā)人員中心上之前修復(fù)警告,建議花時間去理解報告的問題。 如果不了解給定的警告,你 INF 可能不始終按預(yù)期工作。
警告通常與相關(guān):
它可能不正確,但具有有效情況下,在相應(yīng)的語法
為給定的 InfVerif 參數(shù)有效,但在其他模式下,例如通用錯誤的語法
如果,則將顯示與通用設(shè)置相關(guān)的問題的錯誤為:
在 Visual Studio 中,你構(gòu)建您的驅(qū)動程序與目標(biāo)平臺設(shè)置為通用或移動。
從命令行運行 InfVerif.exe,并指定 /u 標(biāo)志。
與通用設(shè)置相關(guān)的問題顯示為警告,如果:
在 Visual Studio 中,你構(gòu)建您的驅(qū)動程序與目標(biāo)平臺設(shè)置為桌面。
從命令行運行 InfVerif.exe 和未指定 /u 標(biāo)志。
錯誤代碼
錯誤代碼分為以下分類:
INF 文件 (1100- 1299) 中的語法
通用 INF (1300- 1319)
安裝 (2000-2999)
并非所有錯誤代碼下面都列出了,因為不證自明的許多含義。 1000-1099范圍內(nèi)的錯誤被視為不證自明的因為它們是基本語法錯誤。
INF 文件 (1100- 1299) 中的語法
雖然 InfVerif 失敗意味著驅(qū)動程序提交失敗,仍然可能會成功安裝驅(qū)動程序。 這是因為在安裝驅(qū)動程序,如果錯誤是 INF 文件中存在,Windows 還會嘗試設(shè)置的默認(rèn)值。 Windows 不會由于此范圍內(nèi)的錯誤的驅(qū)動程序安裝失敗,但在此范圍內(nèi)的錯誤指示行為可能會更改具體取決于 OS 版本或 SKU。 在其中該驅(qū)動程序安裝成功的情況下,這些錯誤指示存在是情況下,該驅(qū)動程序可能無法正確安裝。
錯誤代碼 | 描述 |
1100:DriverStore Copyfile 名稱不匹配 | 復(fù)制或從其原始的驅(qū)動程序存儲區(qū)名稱和位置重命名為不同的名稱和位置中的驅(qū)動程序文件時,將出現(xiàn)此錯誤。 例如: [SourceDisksFiles] DriverFile.sys=1,x64 [DestinationDirs] CopyFileSection=13,SubDirectory
[CopyFileSection] DriverFile.sys 驅(qū)動程序存儲區(qū)維護(hù)原始的驅(qū)動程序包目錄結(jié)構(gòu)。 在上面的代碼中,是 DriverFile.sys 的原始位置INF 位置d,但 CopyFiles 指令將其放入INF 位置SubDirectory。 將該文件已重命名為副本的一部分顯示的相同錯誤。 |
1203:找不到的部分 | 例如,以下 INF 語法會導(dǎo)致錯誤 1203年: [MyInstallSection] CopyFiles=driverFile.sys 會報告此錯誤,因為CopyFiles指令需要一個部分名稱 (用于指定要復(fù)制的文件列表)。 但是, CopyFiles指令可以指定文件的名稱。 若要區(qū)分節(jié)名稱和文件名稱,前面加上文件名包含 @ 令牌如下所示: [MyInstallSection] CopyFiles=@driverFile.sys |
1204:提供程序不能為 Microsoft | [Version] 部分中的提供程序字段不能指定 Microsoft。 [Version] Signature="$Windows NT$" Class=Sample ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} Provider="Microsoft" |
1205:從 [Directive1] 引用部分 [Driver_files] 和 [Directive2] 指令 | 每當(dāng)兩個不同的指令指向同一部分時,會生成此警告。 請注意,盡管在大多數(shù)情況下這一點,實際上,出現(xiàn)錯誤,在某些情況下 1205年報告即使條件正是目的也是如此。 |
1212:不能有兩個 [DefaultInstall] 和 [制造商] | 單個 INF 不能包含這兩個 [DefaultInstall] 和 [制造商]。 使用同時創(chuàng)作 Inf 應(yīng)刪除其中一個的兩個部分。 |
1220:不能直接引用定義中包含的 INF 部分 | 如果您的 INF 文件引用DDInstall部分中包含的 INF,必須使用需要指令。 引用一個部分中包含的 INF 的任何其他指令會導(dǎo)致錯誤 1220年。 在此示例中,A.INF 的安裝部分引用中 B.INF 等效安裝部分。 A.INF 包含: A.INF [InstallSectionA] Include = B.INF Needs = InstallSectionB AddReg = AddRegB ; WARNING 1220 [InstallSectionA.Services] Include = B.INF Needs = InstallSectionB.Services B.INF 包含: B.INF [InstallSectionB] AddReg = AddRegB [InstallSectionB.Services] ... [AddRegB] ... 需要指令必須引用來處理在安裝部分中的等效安裝部分。 例如,[InstallSectionA.Services] 中的需求指令應(yīng)指向。另一個安裝部分的服務(wù)。 需要指令還可用于添加另一個 DDInstall 部分中的相同 INF 此行為。 使用需要指令在其他類型的部分可能會導(dǎo)致意外行為。 |
1221:不能修改服務(wù)注冊密鑰,必須使用 HKR | 此錯誤表示 INF 文件,例如引用在服務(wù)注冊表項的位置HKLMSYSTEMCurrentControlSetServices<em>服務(wù)名稱。 當(dāng)訪問服務(wù)密鑰,則應(yīng)改用相對的根 (HKR) 能夠在設(shè)備或驅(qū)動程序?qū)嵗嚓P(guān)聯(lián)的注冊表值。 當(dāng)你使用HKR,注冊表值將不會顯示之前安裝該設(shè)備。 |
1230:缺少文件 [SourceDisksFiles] 部分下的 xxxx。 | 這表示為驅(qū)動程序包的一部分指定了文件,但在 [SourceDisksFiles] 部分中未指定相對于 INF 文件的源位置。 [SourceDisksFiles] filename=disk id 請注意,如果指定的 [SourceDisksFiles] 修飾體系結(jié)構(gòu)的版本,經(jīng)常發(fā)生此錯誤 (如 [SourceDisksFiles.amd64],但并非所有體系結(jié)構(gòu)支持的 INF 具有 [SourceDisksFiles] 部分。 |
1233:缺少指令所需的簽名 | 在 [Version] 部分中,必須指定一個 CatalogFile 指令 (和關(guān)聯(lián)的目錄文件) 以接收簽名驅(qū)動程序包上。 CatalogFile=wudf.cat |
1235:字符串 [Strings] 中未定義的標(biāo)記 | 指定的字符串標(biāo)記有 [Strings] 部分中沒有定義。 例如,INF 文件指定%reg_dword%中添加注冊表部分指定的 AddReg 指令,但沒有沒有相應(yīng)的 REG_DWORD = 中的 0x00010001 [Strings]部分。 如果您的 INF 文件指定一個包含環(huán)境變量的注冊表值,通常會出現(xiàn)此錯誤。 例如: [MyAddReg] HKR,,DllPath,%SystemRoot%System32myDll.sys 此行會導(dǎo)致 INF 分析器嘗試找到令牌"SystemRoot"從 [Strings] 部分中,而不是在注冊表中存儲文本"%systemroot%"的預(yù)期的行為。 若要使用的文本值 %systemroot%而不是執(zhí)行字符串替換,請使用轉(zhuǎn)義序列 %%。 [MyAddReg] HKR,,DllPath,%%SystemRoot%%System32myDll.sys |
1285:不能指定 [ClassInstall32] 部分,了解 Microsoft 定義的類。 | 從 Windows 10 開始 IHV 提供 Inf 不允許使用 [ClassInstall32] 中的任何 Microsoft 定義的類 INF。 |
1296:指定與硬件無關(guān)的服務(wù) | 從 Windows 10,版本 1809,開始這已從警告變?yōu)殄e誤。 。服務(wù)部分所需的每個定義的目標(biāo)操作系統(tǒng)。 這是很好的做法,適用于所有 Inf 和不只是 1809年。 如果您以前不包括本部分中沒有提供的服務(wù),因此所依賴的收件箱驅(qū)動程序服務(wù),然后您可能需要創(chuàng)建。服務(wù)引用使用需求的收件箱 INF 服務(wù)并包含語句的部分。 例如:INF 文件可以得到如下結(jié)果。服務(wù)為每個 OS 目標(biāo),若要解決此錯誤的部分。 [XXXXXXXX.Install.NTx86.Services] Include=filename.inf Needs=inf-section-name.Services 對于不需要功能驅(qū)動程序的設(shè)備,可以按如下所示指定 NULL 驅(qū)動程序: AddService = ,2. 僅應(yīng)使用此 INF 安裝的非功能性的設(shè)備,若要指定不需要的驅(qū)動程序的這種情況。 |
通用 INF (1300- 1319)
重要
驅(qū)動程序 INF 文件是通用如果范圍 13 中未收到任何錯誤或警告,且錯誤編號xx。
與 INF 可配置性相關(guān)的以下錯誤和警告:
錯誤/警告代碼 | 描述 |
1300:找到舊Xxx | 如果你使用不推薦使用的部分或指令如,將看到此錯誤 LogConfig 或 DDInstall.CoInstallers。 |
1301:找到舊Xxx操作Xxx | 如果你使用不推薦使用的部分或指令如,將看到此錯誤 LogConfig 或 DDInstall.CoInstallers。 |
1302:找到舊Xxx操作Xxx | 該操作會影響外部驅(qū)動程序包,如刪除服務(wù)或刪除文件的內(nèi)容時發(fā)生此錯誤。 |
1303:找到舊定義共同安裝程序的操作 | 錯誤 1303年表示 AddReg 操作指定共同安裝程序。 例如: AddReg = HKR,,CoInstallers32,0x00010000,"MyCoinstaller.dll" |
1304:找到舊使用非相對密鑰的操作 | 錯誤 1304年指示注冊表操作使用 HKR 以外的注冊表根。 |
1305:找到舊操作使用可附加的多 sz 值 | 錯誤 1305年表示 INF 刪除取值REG_MULTI_SZ或?qū)⒁粋€值追加到現(xiàn)有REG_MULTI_SZ。 |
1306:找到舊操作具有非系統(tǒng)目標(biāo)路徑 | 錯誤 1306年指示文件復(fù)制將指定的目標(biāo),則不在 %systemroot%。 |
1310-1312:適用于需要指令的不正確的部分?jǐn)U展 | 需要指令有效地完成所需的部分復(fù)制/粘貼到引用部分。 作為基線驗證 InfVerif 比較部分的擴(kuò)展。 這意味著 [DDInstall.Services] [DDInstall.Services] 的其他部分可以僅使用需求指令。 |
1313-1314:缺少包括指令 | 在每個部分中的使用需求指令,都必須有相應(yīng)的包括指令以引用包含目標(biāo)部分 INF。 以前需要指令將有效 Include 指令時在另一個 INF 部分。 |
133 x:功能錯誤 | 多個注冊表部分寫入到單個全局密鑰。 例如,不同的部分可能具有的服務(wù)設(shè)置不同的服務(wù)配置為全局注冊表項設(shè)置為不同的數(shù)據(jù)值或指向不同的源文件的目標(biāo)文件。 |
安裝 (2000--2999)
2000 2999年范圍中的問題顯示為警告。 可能的值包括以下內(nèi)容。
<td valign="top" style="border-top:none;border-left:none;border-bottom:solid windowtext 1px;
錯誤代碼 | 描述 |
2083:不引用或使用的部分 |
您可以通過我們的電話,郵箱,QQ或者微信進(jìn)行咨詢并獲取幫助。