Share via


EnumPrinterDrivers 函式

EnumPrinterDrivers函式會列舉安裝在指定印表機伺服器上的印表機驅動程式。

語法

BOOL EnumPrinterDrivers(
  _In_  LPTSTR  pName,
  _In_  LPTSTR  pEnvironment,
  _In_  DWORD   Level,
  _Out_ LPBYTE  pDriverInfo,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcbNeeded,
  _Out_ LPDWORD pcReturned
);

參數

pName [in]

Null 終止字串的指標,指定列舉印表機驅動程式的伺服器名稱。

如果 pNameNull,函式會列舉本機印表機驅動程式。

pEnvironment [in]

Null 終止字串的指標,指定環境 (例如 Windows x86、Windows IA64、Windows x64 或 Windows NT R4000) 。 如果此參數為 Null,函式會使用呼叫端/用戶端的目前環境, (不是目的地/伺服器) 。

如果 pEnvironment 字串指定 「all」, EnumPrinterDrivers 會列舉指定伺服器上所安裝之所有平臺的印表機驅動程式。

層級 [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]

緩衝區的指標,接收DRIVER_INFO_* 結構的陣列,如 Level所指定。 每個結構都包含描述可用印表機驅動程式的資料。 緩衝區必須夠大,才能接收結構成員指向的任何字串或其他資料陣列。

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

cbBuf [in]

pDriverInfo所指向緩衝區的大小,以位元組為單位

vmNeeded [out]

變數的指標,會接收函式成功時複製到 pDriverInfo 緩衝區的位元組數目。 如果緩衝區太小,函式會失敗,而且變數會收到所需的位元組數目。

pcReturned [out]

變數的指標,可接收 pDriverInfo 緩衝區中傳回的結構數目。 這是在指定的列印伺服器上安裝的印表機驅動程式數目。

傳回值

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

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

備註

注意

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

規格需求

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

另請參閱

列印

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

AddPrinterDriver

DRIVER_INFO_1

DRIVER_INFO_2

DRIVER_INFO_3

DRIVER_INFO_4

DRIVER_INFO_5

DRIVER_INFO_6

GetPrinterDriver