本主題介紹(shao)驅(qu)動(dong)程序(xu)安裝(zhuang)錯誤和警告可以顯示作為自(zi)動(dong) INF 驗(yan)證結果(guo),Microsoft Visual Studio 執行或運行時(shi)InfVerif工具。
從 Visual Studio 2015 with WDK 10 在(zai)生成您(nin)的驅(qu)動程(cheng)序(xu)時,以(yi)下(xia)的 INF 文件錯誤可以出現(xian)在錯誤列表(biao)窗格。 如果從命令行運行 InfVerif.exe,工具會在命令提(ti)示符下或結果的 HTML 版本中顯示這些錯誤。
錯誤的指南
InfVerif 如下所示的(de)常規(gui)規(gui)則,較低的(de)錯誤號、 更嚴重問題。 大多數的(de)錯(cuo)誤代碼可以是一條警告或錯(cuo)誤具體取(qu)決于提供給 InfVerif 的(de)參數。
處理錯(cuo)誤
若要通(tong)過硬件(jian)開發人(ren)員(yuan)中心儀表板(ban)上的(de)驅動程序測試,必須修復所有錯(cuo)誤(wu)。 錯(cuo)誤(wu)與以下條件(jian):
INF 分(fen)析器是(shi)無法(fa)成功解釋您 INF
INF 分析器(qi)是能(neng)夠解釋 INF 只能(neng)通(tong)過(guo)進行(xing)默(mo)認值假(jia)設(she) (不明確的語法)
InfVerif 的參數(shu)指(zhi)示規則(ze)集,應該應用于(yu) INF (如通用)
而無需(xu)提交(jiao)您(nin)的(de)驅(qu)動程序(xu)開(kai)發人員中心上(shang)之前修復(fu)警告,建議(yi)花時間去(qu)理解(jie)報告的(de)問題(ti)。 如果不(bu)了解(jie)給定的(de)警告,你 INF 可能不(bu)始(shi)終按預期工作。
警(jing)告(gao)通(tong)常與相關(guan):
它(ta)可能(neng)不正確,但具有(you)有(you)效情況下,在相應(ying)的語(yu)法(fa)
為(wei)給定的(de) InfVerif 參數(shu)有效,但在其他模(mo)式下,例如通用錯誤的(de)語法
如果,則(ze)將(jiang)顯示與通用(yong)設置相關(guan)的問題的錯誤為:
在 Visual Studio 中(zhong),你(ni)構建(jian)您的驅動程序與目標平(ping)臺設置(zhi)為通用或移動。
從命令行運行 InfVerif.exe,并指(zhi)定 /u 標(biao)志。
與通用設置相關的問(wen)題顯(xian)示為(wei)警(jing)告,如果:
在 Visual Studio 中,你(ni)構建您(nin)的驅動程序與目(mu)標平臺(tai)設置(zhi)為桌面。
從命令行運行 InfVerif.exe 和(he)未指定(ding) /u 標志。
錯誤代碼
錯誤(wu)代碼分為(wei)以下分類(lei):
INF 文件 (1100- 1299) 中的語法
通用 INF (1300- 1319)
安(an)裝(zhuang) (2000-2999)
并(bing)非所有錯誤代碼下面都列出了,因(yin)為不證自明的許(xu)多(duo)含義。 1000-1099范(fan)圍內的錯誤被視為不證自明的因(yin)為它們是基本語法(fa)錯誤。
INF 文件 (1100- 1299) 中(zhong)的語法
雖然 InfVerif 失敗意味著驅動程序提交失敗,仍然可能會成功安裝驅動程序。 這是因為在安裝驅動程序,如果錯誤是 INF 文件中存在,Windows 還會嘗試設置的默認值。 Windows 不會由于此范圍內的錯誤的驅動程序安裝失敗,但在此范圍內的錯誤指示行為可能會更改具體取決于 OS 版本或 SKU。 在其中該驅動程序安裝成功的情況下,這些錯誤指示存在是情況下,該驅動程序可能無法正確安裝。
錯誤(wu)代碼 | 描述 |
1100:DriverStore Copyfile 名稱不匹配 | 復(fu)制(zhi)或(huo)從其原始的(de)驅(qu)動程序存儲區名稱(cheng)和位置重(zhong)命名為不同的(de)名稱(cheng)和位置中的(de)驅(qu)動程序文(wen)件(jian)時,將出現此錯誤。 例如: [SourceDisksFiles] DriverFile.sys=1,x64 [DestinationDirs] CopyFileSection=13,SubDirectory
[CopyFileSection] DriverFile.sys 驅動程序(xu)存(cun)儲區維護原始(shi)的(de)驅動程序(xu)包(bao)目錄結構。 在(zai)上面的(de)代碼中(zhong),是 DriverFile.sys 的(de)原始(shi)位(wei)(wei)置INF 位(wei)(wei)置d,但 CopyFiles 指令(ling)將(jiang)其放入INF 位(wei)(wei)置SubDirectory。 將(jiang)該文件已重命名為副(fu)本(ben)的(de)一部(bu)分顯示的(de)相同(tong)錯(cuo)誤。 |
1203:找(zhao)不到的部分 | 例(li)如,以下 INF 語法會導(dao)致錯誤(wu) 1203年: [MyInstallSection] CopyFiles=driverFile.sys 會報告此錯誤,因為CopyFiles指令需要一個部分名稱 (用于指定要復制的文件列表)。 但是, CopyFiles指令可以指定文件的名稱。 若要區分節名稱和文件名稱,前面加上文件名包含 @ 令牌如下所示: [MyInstallSection] CopyFiles=@driverFile.sys |
1204:提供程序不能為 Microsoft | [Version] 部分中(zhong)的提供程序字段(duan)不能指定 Microsoft。 [Version] Signature="$Windows NT$" Class=Sample ClassGuid={78A1C341-4539-11d3-B88D-00C04FAD5171} Provider="Microsoft" |
1205:從 [Directive1] 引用部分 [Driver_files] 和 [Directive2] 指令 | 每當兩個不同的指(zhi)令指(zhi)向同一部分時(shi),會生成(cheng)此警(jing)告。 請注意,盡管(guan)在大多數情況下(xia)這(zhe)一(yi)點(dian),實際上,出現錯誤,在某些情況下(xia) 1205年報告即使條件正是目的也(ye)是如此(ci)。 |
1212:不(bu)能有兩(liang)個 [DefaultInstall] 和 [制造(zao)商] | 單(dan)個 INF 不(bu)能包(bao)含這兩個 [DefaultInstall] 和 [制造(zao)商]。 使(shi)用同時創作 Inf 應刪除其中一(yi)個的(de)兩個部分。 |
1220:不能直接引用定義中包含(han)的 INF 部分 | 如果您的 INF 文件引用DDInstall部分中包含的 INF,必須使用需要指令。 引用一個部分中包含的 INF 的任何其他指令會導致錯誤 1220年。 在(zai)此(ci)示(shi)例中(zhong),A.INF 的(de)安裝(zhuang)部(bu)(bu)分(fen)引用中(zhong) B.INF 等效(xiao)安裝(zhuang)部(bu)(bu)分(fen)。 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] 中的需求指令應指向。另一個安裝部分的服務。 需要指令還可用于添加另一個 DDInstall 部分中的相同 INF 此行為。 使用需要指令在其他類型的部分可能會導致意外行為。 |
1221:不能修改服務注冊密鑰(yao),必須使用 HKR | 此錯誤表示 INF 文件,例如引用在服務注冊表項的位置HKLMSYSTEMCurrentControlSetServices<em>服務名稱。 當訪問服務密鑰,則應改用相對的根 (HKR) 能夠在設備或驅動程序實例相關聯的注冊表值。 當你使用HKR,注冊表值將不會顯示之前安裝該設備。 |
1230:缺少(shao)文(wen)件 [SourceDisksFiles] 部(bu)分下的 xxxx。 | 這(zhe)表示(shi)為驅動程(cheng)序包的一部分(fen)(fen)指(zhi)定(ding)了文件,但在 [SourceDisksFiles] 部分(fen)(fen)中未(wei)指(zhi)定(ding)相(xiang)對(dui)于 INF 文件的源位置。 [SourceDisksFiles] filename=disk id 請注意,如果(guo)指定的 [SourceDisksFiles] 修(xiu)飾體(ti)(ti)系結構(gou)的版本(ben),經(jing)常發(fa)生此錯誤 (如 [SourceDisksFiles.amd64],但(dan)并非所有(you)體(ti)(ti)系結構(gou)支(zhi)持(chi)的 INF 具有(you) [SourceDisksFiles] 部分。 |
1233:缺少指(zhi)令(ling)所需的簽名 | 在 [Version] 部(bu)分中,必須指定一個 CatalogFile 指令 (和(he)關聯的目(mu)錄文件) 以(yi)接收簽(qian)名驅動程序包上。 CatalogFile=wudf.cat |
1235:字符(fu)串 [Strings] 中未定義的標記 | 指定的字符串標記有 [Strings] 部分中沒有定義。 例如,INF 文件指定%reg_dword%中添加注冊表部分指定的 AddReg 指令,但沒有沒有相應的 REG_DWORD = 中的 0x00010001 [Strings]部分。 如(ru)果您(nin)的 INF 文件指定一個包含環境變量的注冊(ce)表值(zhi),通常(chang)會出現此(ci)錯誤。 例如(ru): [MyAddReg] HKR,,DllPath,%SystemRoot%System32myDll.sys 此行(xing)會導(dao)致 INF 分析器嘗試找到令牌"SystemRoot"從(cong) [Strings] 部分中,而(er)不是(shi)在(zai)注冊表中存儲(chu)文本(ben)(ben)"%systemroot%"的(de)預期的(de)行(xing)為。 若要使用的(de)文本(ben)(ben)值 %systemroot%而(er)不是(shi)執(zhi)行(xing)字符串替(ti)換,請(qing)使用轉義(yi)序列 %%。 [MyAddReg] HKR,,DllPath,%%SystemRoot%%System32myDll.sys |
1285:不能(neng)指定 [ClassInstall32] 部分,了解 Microsoft 定義的類。 | 從(cong) Windows 10 開始(shi) IHV 提供 Inf 不允(yun)許(xu)使用 [ClassInstall32] 中的任(ren)何 Microsoft 定義的類 INF。 |
1296:指(zhi)定與硬件無關的(de)服務 | 從 Windows 10,版本 1809,開(kai)始這已(yi)從警(jing)告變為錯誤。 。服務部分所需的(de)(de)每(mei)個定義的(de)(de)目標操作(zuo)系統。 這是很好的(de)(de)做(zuo)法,適用(yong)于所有 Inf 和不只(zhi)是 1809年。 如果您以前(qian)不包括本部(bu)分中沒有提供的(de)服(fu)(fu)務(wu),因此所依賴的(de)收件(jian)箱驅動(dong)程序(xu)服(fu)(fu)務(wu),然后您可(ke)能需要創建。服(fu)(fu)務(wu)引用使用需求(qiu)的(de)收件(jian)箱 INF 服(fu)(fu)務(wu)并包含語句的(de)部(bu)分。 例如:INF 文件可以得到(dao)如下結果。服務(wu)為(wei)每個 OS 目標,若要解(jie)決(jue)此錯誤的部分(fen)。 [XXXXXXXX.Install.NTx86.Services] Include=filename.inf Needs=inf-section-name.Services 對于不需要功能驅動(dong)程序的設備,可以按如下所示指定 NULL 驅動(dong)程序: AddService = ,2. 僅應(ying)使用此 INF 安裝的(de)(de)(de)非功能性的(de)(de)(de)設備,若要指(zhi)定不需(xu)要的(de)(de)(de)驅動程序的(de)(de)(de)這種情況(kuang)。 |
通用 INF (1300- 1319)
重要
驅(qu)動(dong)程序 INF 文件是通用如果范圍(wei) 13 中未收到任何錯誤(wu)或警告,且錯誤(wu)編號xx。
與 INF 可(ke)配置(zhi)性相(xiang)關的以下錯(cuo)誤和(he)警告:
錯誤/警告代碼 | 描述 |
1300:找到舊Xxx | 如果你使用不推薦使用的部分或指令如,將看到此錯誤 LogConfig 或 DDInstall.CoInstallers。 |
1301:找到舊Xxx操作Xxx | 如果你使用不推薦使用的部分或指令如,將看到此錯誤 LogConfig 或 DDInstall.CoInstallers。 |
1302:找到舊(jiu)Xxx操作Xxx | 該操(cao)作會影響外(wai)部驅動程序包(bao),如刪除(chu)服務或刪除(chu)文件的(de)內容時發生此(ci)錯誤(wu)。 |
1303:找到舊(jiu)定義(yi)共同(tong)安裝程序(xu)的(de)操(cao)作(zuo) | 錯誤 1303年表(biao)示 AddReg 操作指定共同(tong)安裝程序。 例如: AddReg = HKR,,CoInstallers32,0x00010000,"MyCoinstaller.dll" |
1304:找到舊使用非(fei)相對密鑰的操(cao)作 | 錯誤 1304年指示注冊表(biao)操作(zuo)使用 HKR 以(yi)外(wai)的注冊表(biao)根。 |
1305:找到舊操作使用可附加的多 sz 值 | 錯誤 1305年表示 INF 刪除取值REG_MULTI_SZ或將一個值追加到現有REG_MULTI_SZ。 |
1306:找到舊操(cao)作具有非(fei)系(xi)統目標路徑(jing) | 錯誤 1306年指(zhi)示文件復(fu)制將指(zhi)定(ding)的目(mu)標,則不在 %systemroot%。 |
1310-1312:適用(yong)于需要指(zhi)令(ling)的(de)(de)不正確的(de)(de)部分擴(kuo)展(zhan) | 需(xu)(xu)要指(zhi)令有效地完成所需(xu)(xu)的(de)部(bu)分復制/粘貼到引用部(bu)分。 作(zuo)為基線(xian)驗證 InfVerif 比(bi)較部(bu)分的(de)擴展。 這(zhe)意味著 [DDInstall.Services] [DDInstall.Services] 的(de)其(qi)他(ta)部(bu)分可以(yi)僅使用需(xu)(xu)求指(zhi)令。 |
1313-1314:缺少包括指令 | 在(zai)每個(ge)部分中的(de)使(shi)用需求指令,都(dou)必須(xu)有相(xiang)應的(de)包括指令以(yi)(yi)引(yin)用包含目標部分 INF。 以(yi)(yi)前需要指令將有效(xiao) Include 指令時在(zai)另一個(ge) INF 部分。 |
133 x:功(gong)能(neng)錯誤 | 多個注冊表部分(fen)寫入到單個全局(ju)(ju)密(mi)鑰。 例如,不(bu)(bu)同(tong)的(de)(de)(de)(de)部分(fen)可能具(ju)有的(de)(de)(de)(de)服(fu)務(wu)設置不(bu)(bu)同(tong)的(de)(de)(de)(de)服(fu)務(wu)配置為全局(ju)(ju)注冊表項(xiang)設置為不(bu)(bu)同(tong)的(de)(de)(de)(de)數(shu)據值(zhi)或(huo)指(zhi)向不(bu)(bu)同(tong)的(de)(de)(de)(de)源文(wen)件(jian)的(de)(de)(de)(de)目標文(wen)件(jian)。 |
安裝(zhuang) (2000--2999)
2000 2999年范圍中的問(wen)題顯(xian)示為警告。 可能(neng)的(de)值包括以下內容。
<td valign="top" style="border-top:none;border-left:none;border-bottom:solid windowtext 1px;
錯誤代碼 | 描述 |
2083:不(bu)引用(yong)(yong)或使用(yong)(yong)的部分 |
您可(ke)以通過我們的電話,郵箱,QQ或者微信進行咨詢并獲取幫(bang)助。