共用方式為


自定義印表機安裝作業

重要

新式列印平臺是 Windows 與印表機通訊的慣用方法。 我們建議您使用Microsoft的 IPP 收件匣類別驅動程式,以及列印支援應用程式 (PSA),自定義 Windows 10 和 11 中的列印體驗,以進行印表機裝置開發。

如需詳細資訊,請參閱 新式列印平臺列印支援應用程式設計指南

若要為使用 Ntprint.dll 安裝的印表機提供自定義的印表機安裝作業,預設的 Windows 2000 和更新版本的印表機類別安裝程式,您可以在 印表機的 INF 檔案中包含 VendorSetup INF 專案。

警告

請注意, VendorSetup 現在已被取代,您開發的任何 v3 或 v4 驅動程式都不應使用。 本主題僅供參考,或維護已使用此 INF 指示詞的現有 v3 驅動程式。

如果您打算在安裝印表機驅動程式期間顯示使用者介面元素,則必須使用 VendorSetup INF 專案。 不過,只有在必要的情況下,才應該使用 VendorSetup INF 專案。 缺點是其使用可防止一般使用者安裝具有 隨插即用 的印表機(在此情況下,用戶必須是系統管理員)。

當設備驅動器未簽署,或當 (已簽署或未簽署) 驅動程式的 INF 檔案包含 VendorSetup INF 專案時,無法使用伺服器端安裝裝置。 當驅動程式未簽署時,安裝程式會將0x8000新增至驅動程式如果是已簽署的驅動程式時,驅動程式會擁有的等級。 如果驅動程式的 INF 檔案包含 VendorSetup 專案,安裝程式會判斷裝置安裝需要使用者互動(這在伺服器端安裝中無法發生),並停止安裝。

如果驅動程式的排名0x8000或更大,安裝程式也會停止伺服器端安裝。 當使用者登入系統管理許可權時,安裝可以繼續進行,此時安裝程式會將裝置安裝重新啟動為用戶端安裝。 對於排名為0x1000或更大的驅動程式,因此硬體標識符不相符,安裝程式會在 [新增裝置 DLL] 中啟動 [找到的新硬體精靈],這會提示使用者安裝驅動程式。

如果已簽署驅動程式的 INF 檔案包含 VendorSetup 專案,且驅動程式的排名小於0x1000,安裝程式就不會啟動 [找到的新硬體精靈]。 如需詳細資訊,請參閱 安裝程式如何選取驅動程式

VendorSetup 專案的格式如下所示:

VendorSetup= FileNameFunctionName

其中 FileName 是包含安裝函式的 DLL 名稱,而 FunctionName 是函式的名稱。 DLL 必須安裝在 %windir%\system32 目錄中。 只有在印表機安裝 隨插即用 或新增印表機精靈時,印表機類別安裝程式才會呼叫此 DLL 中的安裝程式函式。 安裝驅動程式時,不會呼叫安裝程式函式(例如,使用 [新增印表機驅動程式精靈] 。

若要將一或多個檔案複製到 %windir%\system32 目錄,您可以將 INF 寫入器定義的區段名稱新增至 INF DestinationDirs 區段。 在下列範例中,OEMVendorFiles 區段會列出要複製的所有檔案。

[DestinationDirs]
OEMVendorFiles = 11
...
[OEMVendorFiles]
vendor.dll

FunctionName 指定的函式必須符合下列原型:

VOID WINAPIFunctionName (HWND hWnd, HINSTANCE hInstance, LPSTR lpszCmdLine, UINT nCmdShow);

其中 FunctionName 是安裝函式的名稱。 下表顯示函式的參數及其描述。

參數 描述
hWnd 指定父視窗的句柄。
hInstance 指定呼叫進程的實例句柄。
lpszCmdLine 指定 ANSI 字串,其中包含已安裝的印表機名稱。 此字串是由 FunctionName 剖析。
nCmdShow 指定視窗的顯示方式。 控制窗口顯示方式的旗標會在 Winuser.h 中定義。

印表機類別安裝程式會將安裝程式呼叫為安裝作業的最後步驟之一。