目錄檔案和數位簽章

(.cat) 的數位簽署目錄檔案可用來作為任意檔案集合的數位簽章。 目錄檔案包含密碼編譯雜湊或 指紋的集合。 每個指紋都會對應至集合中包含的檔案。

隨插即用 (PnP) 裝置安裝會將驅動程式套件的已簽署類別目錄檔案辨識為驅動程式套件的數位簽章,其中類別目錄檔案中的每個指紋都會對應至驅動程式套件所安裝的檔案。 無論想要的作業系統為何,密碼編譯技術都會用來數位簽署類別目錄檔案。

如果驅動程式套件中的任何檔案在驅動程式套件簽署之後變更,PnP 裝置安裝會將 驅動程式套件 的數位簽章視為無效。 這類檔案包括 INF 檔案、目錄檔案,以及 INF CopyFiles 指示詞所複製的所有檔案。 例如,即使單一位元組變更,更正拼錯會使數位簽章失效。 如果數位簽章無效,您必須將驅動程式套件重新提交至 Windows Hardware Quality Labs (WHQL) 的新簽章,或為驅動程式套件產生新的 Authenticode 簽章。

同樣地,對裝置硬體或韌體所做的變更需要修訂的 裝置識別碼 值,讓系統可以偵測更新的裝置並安裝正確的驅動程式。 因為修訂的裝置識別碼值必須出現在 INF 檔案中,所以您必須針對新的簽章重新提交套件至 WHQL,或為驅動程式套件產生新的 Authenticode 簽章。 即使驅動程式二進位檔未變更,您也必須這麼做。

驅動程式INF 檔案INF 版本區段中CatalogFile指示詞會指定驅動程式套件的類別目錄檔案名。 在驅動程式安裝期間,作業系統會使用 CatalogFile 指示詞來識別及驗證類別目錄檔案。 系統會將目錄檔案安裝到 GetSystemDirectory所傳回系統目錄下的 CatRoot 目錄,例如 %SystemRoot%\System32\CatRoot。 請注意,目錄檔案不應手動新增至該目錄或從該目錄中移除。 對於驅動程式套件,當驅動程式套件暫存到驅動程式存放區時,目錄檔案會自動安裝到 CatRoot,並在驅動程式存放區中移除驅動程式套件時自動從 CatRoot 卸載。 如果您需要基於驅動程式套件以外的原因將類別目錄檔案安裝到 CatRoot,請參閱 使用 SignTool 安裝類別目錄檔案 和使用 CryptCATAdminAddCatalog 安裝類別目錄檔案

目錄檔案的指導方針

從 Windows 2000 開始,如果 驅動程式套件 在所有版本的 Windows 上安裝相同的二進位檔,INF 檔案可以包含單一未壓縮 的 CatalogFile 指示詞。 不過,如果套件為不同版本的 Windows 安裝不同的二進位檔,INF 檔案應該包含裝飾的 CatalogFile 指示詞。 如需 CatalogFile 指示詞的詳細資訊,請參閱 INF 版本一節

如果您有多個驅動程式套件,您應該為每個驅動程式套件建立個別的類別目錄檔案,並為每個類別目錄檔案提供唯一的檔案名。 兩個不相關的驅動程式套件無法共用單一目錄檔案。 不過,提供多個裝置的單一驅動程式套件只需要一個類別目錄檔案。