由 USBPRINT.SYS 產生的識別碼
從 Windows 2000 開始,作業系統會提供核心模式 USB 列印驅動程式, usbprint.sys 將印表機子系統連線到 USB 堆疊。 原生 USB 印表機驅動程式可從開發自己的核心模式 USB 印表機驅動程式的需求中釋出廠商。 這可讓廠商開發使用 USB 和平行印表機的高階使用者模式印表機驅動程式。
usbprint.inf安裝檔案包含符合所有 USB 類別 7 印表機裝置的相容識別碼。 如果 USB 中樞驅動程式列舉這些裝置的其中一個,作業系統會尋找與中樞驅動程式在 usbprint.inf 中產生的識別碼相符,並將載入 USB 印表機驅動程式 ,usbprint.sys。 usbprint.inf中找到的相容識別碼的格式如下:
USB\CLASS_07
其中:
- 類別 07h = 屬於 USB 印表機類別的裝置
載入 USB 印表機驅動程式之後,就會為印表機裝置建立新的 PDO。 當 隨插即用 (PnP) 管理員查詢新建立 PDO 的裝置識別碼字串時,USB 印表機驅動程式會建立新的硬體識別碼,衍生自裝置的 IEEE 1284 字串,與平行匯流排列舉值所產生的字串識別碼相容。 此硬體識別碼的格式如下:
USBPRINT\NameModel (20) 總和檢查碼 (4)
其中:
NameModel (20) 是製造商名稱和裝置型號的串連,最多截斷為 20 個字元。
總和檢查碼 (4) 是 4個字元迴圈備援檢查, (CRC) 從製造商名稱和型號計算的程式碼。
字串中的空格會取代為底線。 例如,如果製造商的名稱是 「Hewlett-Packard」,則模型名稱為 「HP Color LaserJet 550」,而總和檢查碼為 3115,則硬體識別碼如下所示:
USBPRINT\Hewlett-PackardHP_Co3115
在上一個範例中,模型名稱中的 「HP」 與 「Color」 之間的空格會取代為底線,以產生截斷的 make/model 字串 「Hewlett-PackardHP_Co」。
注意 作業系統所產生的 CRC 可能不符合上一節中所述的 CRC,或任何其他 CRC 演算法所計算的 CRC。 因此,您的印表機驅動程式可能無法計算與印表機驅動程式 INF 檔案搭配使用的正確 hardwareID。 若要擷取 hardwareID,最好是搜尋與所安裝 USB 印表機相關聯的 setupapi.dev.log 檔案。