EnumPrinterData 函式

EnumPrinterData函式會列舉指定印表機的組態資料。

若要擷取單一呼叫中的組態資料,請使用 EnumPrinterDataEx 函 式。

語法

DWORD EnumPrinterData(
  _In_  HANDLE  hPrinter,
  _In_  DWORD   dwIndex,
  _Out_ LPTSTR  pValueName,
  _In_  DWORD   cbValueName,
  _Out_ LPDWORD pcbValueName,
  _Out_ LPDWORD pType,
  _Out_ LPBYTE  pData,
  _In_  DWORD   cbData,
  _Out_ LPDWORD pcbData
);

參數

hPrinter [in]

要取得其組態資料的印表機控制碼。 使用 OpenPrinterAddPrinter 函式來擷取印表機控制碼。

dwIndex [in]

索引值,指定要擷取的組態資料值。

針對指定的印表機控制碼第一次呼叫 EnumPrinterData ,請將此參數設定為零。 然後,針對涉及相同印表機的後續呼叫,將 參數遞增一個,直到函式傳回ERROR_NO_MORE_ITEMS為止。 如需詳細資訊,請參閱下列一節。

如果您使用cbValueName 和 cbData參數描述中所述的技術來取得適當的緩衝區大小值,請在第一次呼叫EnumPrinterData時,針對指定的印表機控制碼,將這兩個參數設定為零,dwIndex的值對於該呼叫並不重要。 在下一次呼叫EnumPrinterData以啟動實際列舉程式時,將dwIndex設定為零。

設定資料值未排序。 新值會有任意索引。 這表示 EnumPrinterData 函式可能會以任何順序傳回值。

pValueName [out]

緩衝區的指標,接收組態資料值的名稱,包括終止的 Null 字元。

cbValueName [in]

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

如果您想要讓作業系統提供適當的緩衝區大小,請將此參數和 cbData 參數設定為零,以便第一次針對指定的印表機控制碼呼叫 EnumPrinterData 。 當函式傳回時, 由 HTTPValueName 指向的變數會包含足以成功列舉所有印表機設定資料值名稱的緩衝區大小。

右值名稱 [out]

變數的指標,接收儲存在 pValueName所指向之緩衝區中的位元組數目。

pType [out]

變數的指標,接收程式碼,指出儲存在指定值中的資料類型。 如需可能的類型代碼清單,請參閱 登錄實值型別。 如果不需要類型代碼, pType 參數可以是 Null

pData [out]

接收組態資料值的緩衝區指標。

如果不需要組態資料值,這個參數可以是 Null

cbData [in]

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

如果您想要讓作業系統提供足夠的緩衝區大小,請將此參數和 cbValueName 參數設定為零,以便第一次針對指定的印表機控制碼呼叫 EnumPrinterData 。 當函式傳回時, 由 sqlData 指向的變數會包含足以成功列舉所有印表機設定資料值名稱的緩衝區大小。

sqlData [out]

變數的指標,接收儲存在 pData所指向之緩衝區中的位元組數目。

如果pDataNull,這個參數可以是Null

傳回值

如果函式成功,傳回值會ERROR_SUCCESS。

如果函式失敗,則傳回值是系統錯誤碼。

當沒有設定資料值可供指定印表機控制碼擷取時,函式會傳回ERROR_NO_MORE_ITEMS。

備註

注意

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

EnumPrinterData 會 擷取 SetPrinterData 函式所設定的印表機組態資料。 印表機的組態資料是由一組具名和具類型的值所組成。 EnumPrinterData函式會在每次呼叫時取得其中一個值及其名稱和類型代碼。 連續呼叫 EnumPrinterData 函式數次,以取得印表機的所有設定資料值。

印表機設定資料會儲存在登錄中。 列舉印表機組態資料時,您應該避免呼叫可能會變更該資料的登錄函式。

如果您想要讓作業系統提供足夠的緩衝區大小,請先呼叫EnumPrinterData並將 cbValueName 和 cbData參數設定為零,如參數一節稍早所述。 dwIndex的值對於這個呼叫並不重要。 當函式傳回時,*ssdValueName 和 *sqlData 將包含足以列舉所有印表機設定資料值名稱和值的緩衝區大小。 在下一次呼叫時,配置值名稱和資料緩衝區、將 cbValueNamecbData 設定為配置緩衝區位元組的大小,並將 dwIndex 設定為零。 之後,繼續呼叫 EnumPrinterData 函式,每次遞增 dwIndex ,直到函式傳回ERROR_NO_MORE_ITEMS為止。

規格需求

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

另請參閱

列印

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

DeletePrinterData

EnumPrinterDataEx

GetPrinterData

OpenPrinter

SetPrinter

SetPrinterData