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