共用方式為


GetPrinterDriver 函式

GetPrinterDriver函式會擷取指定印表機的驅動程式資料。 如果驅動程式未安裝在本機電腦上, GetPrinterDriver 會加以安裝。

語法

BOOL GetPrinterDriver(
  _In_  HANDLE  hPrinter,
  _In_  LPTSTR  pEnvironment,
  _In_  DWORD   Level,
  _Out_ LPBYTE  pDriverInfo,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcbNeeded
);

參數

hPrinter [in]

應該擷取驅動程式資料的印表機控制碼。 使用 OpenPrinterAddPrinter 函式來擷取印表機控制碼。

pEnvironment [in]

Null 終止字串的指標,指定環境 (例如 Windows x86、Windows IA64 或 Windows x64) 。 如果此參數為 Null,則會使用呼叫應用程式和用戶端電腦的目前環境 (不是目的地應用程式和列印伺服器) 。

層級 [in]

pDriverInfo緩衝區中傳回的印表機驅動程式結構。 此參數可以是下列其中一個值。

意義
1
DRIVER_INFO_1
2
DRIVER_INFO_2
3
DRIVER_INFO_3
4
DRIVER_INFO_4
5
DRIVER_INFO_5
6
DRIVER_INFO_6
8
DRIVER_INFO_8

pDriverInfo [out]

緩衝區的指標,接收包含驅動程式相關資訊的結構,如 Level 所指定。 緩衝區必須夠大,才能儲存結構成員所指向的字串。

若要判斷所需的緩衝區大小,請呼叫 GetPrinterDriver ,並將 cbBuf 設定為零。 GetPrinterDriver 失敗, GetLastError 會傳回ERROR_INSUFFICIENT_BUFFER,而 ERROR_INSUFFICIENT_BUFFER參數 會傳回保留結構陣列及其資料所需的緩衝區大小,以位元組為單位。

cbBuf [in]

pDriverInfo指向之陣列的大小,以位元組為單位。

azureNeeded [out]

值指標,這個值會接收函式成功時所複製的位元組數目,或 cbBuf 太小時所需的位元組數目。

傳回值

如果函式成功,則傳回值是非零值。

如果此函式失敗,則傳回值為零。

對於不存在的驅動程式,函式會傳回ERROR_UNKNOWN_PRINTER_DRIVER。

備註

注意

這是封鎖或同步函式,可能不會立即傳回。 此函式傳回的速度取決於執行時間因素,例如網路狀態、列印伺服器組態,以及難以在撰寫應用程式時預測的印表機驅動程式實作因素。 從管理與使用者介面互動的執行緒呼叫此函式,可能會讓應用程式看起來沒有回應。

DRIVER_INFO_2DRIVER_INFO_3DRIVER_INFO_4、DRIVER_INFO_5DRIVER_INFO_6結構包含pDriverPath成員中印表機驅動程式的檔案名或完整路徑和檔案名。 應用程式可以使用路徑和檔案名來載入印表機驅動程式,方法是呼叫 LoadLibrary 函式 ,並提供路徑和檔案名作為單一引數。

規格需求

需求
最低支援的用戶端
Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
標頭
Winspool.h (包含 Windows.h)
程式庫
Winspool.lib
DLL
Winspool.drv
Unicode 與 ANSI 名稱
GetPrinterDriverW (Unicode) 和 GetPrinterDriverA (ANSI)

另請參閱

列印

列印多工緩衝處理器 API 函式

AddPrinterDriver

DRIVER_INFO_1

DRIVER_INFO_2

DRIVER_INFO_3

DRIVER_INFO_4

DRIVER_INFO_5

DRIVER_INFO_6

EnumPrinterDrivers

OpenPrinter