勇芳软件工作室.汉化:  Printing > Print Spooler API > Print Spooler API Reference > Print Spooler API Functions >

EnumPrinterData

Previous pageReturn to chapter overviewNext page

描述

 

EnumPrinterData函数枚举指定打印机的配置数据。

 

要在单个呼叫中检索配置数据,请使用EnumPrinterDataEx功能。

 

C++ 语法

 

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

);

 

PowerBASIC 语法

 

FUNCTION EnumPrinterDataA ( _

BYVAL hPrinter AS DWORD, _

BYVAL dwIndex AS DWORD, _

BYREF pValueName AS ASCIIZ, _

BYVAL cbValueName AS DWORD, _

BYREF pcbValueName AS DWORD, _

BYREF pType AS DWORD, _

BYREF pData AS ANY, _

BYVAL cbData AS DWORD, _

BYREF pcbData AS DWORD _

) AS DWORD

 

Unicode版本:

 

FUNCTION EnumPrinterDataW ( _

BYVAL hPrinter AS DWORD, _

BYVAL dwIndex AS DWORD, _

BYREF pValueName AS WSTRINGZ, _

BYVAL cbValueName AS DWORD, _

BYREF pcbValueName AS DWORD, _

BYREF pType AS DWORD, _

BYREF pData AS ANY, _

BYVAL cbData AS DWORD, _

BYREF pcbData AS DWORD _

) AS LONG

 

参数

 

hPrinter

 

[in]处理要获取配置数据的打印机。使用OpenPrinterAddPrinter功能来检索打印机句柄。

 

dwIndex

 

[in]一个索引值,用于指定要检索的配置数据值。

 

对于指定的打印机句柄,首次调用EnumPrinterData时,请将此参数设置为零。然后将参数递增1用于涉及相同打印机的后续调用,直到函数返回ERROR_NO_MORE_ITEMS。有关详细信息,请参阅以下备注部分。

 

如果您使用cbValueNamecbData参数的描述中提到的技术来获得足够的缓冲区大小值,则在指定的打印机句柄的第一次调用EnumPrinterData中将这两个参数设置为零,{ 989796142}对于该通话无关紧要。在EnumPrinterData的下一次调用中将dwIndex设置为零,以启动实际的枚举过程。

 

配置数据值未排序。新值将有一个任意的索引。这意味着EnumPrinterData函数可以以任何顺序返回值。

 

pValueName

 

[out]指向接收配置数据值名称的缓冲区的指针,包括终止空字符。

 

cbValueName

 

[in]指定由pValueName指向的缓冲区的大小(以字节为单位)。

 

如果要使操作系统提供足够的缓冲区大小,请将此参数和cbData参数设置为零,以便为指定的打印机句柄首次调用EnumPrinterData.当函数返回时,pcbValueName指向的变量将包含足够大的缓冲区大小,以便成功枚举所有打印机的配置数据值名称。

 

pcbValueName

 

[out]指向由pValueName指向的缓冲区中存储的字节数的变量的指针。

 

pType

 

[out]指向接收指示存储在指定值中的数据类型的代码的变量的指针。有关可能的类型代码的列表,请参阅注册表值类型。如果不需要类型代码,则PTYPE参数可以为NULL。

 

pData

 

[out]指向接收配置数据值的缓冲区的指针。

 

如果不需要配置数据值,则此参数可以为NULL。

 

cbData

 

[out]指定pData指向的缓冲区的大小(以字节为单位)。

 

如果要使操作系统提供足够的缓冲区大小,请将此参数和cbValueName参数设置为零,以便为指定的打印机句柄首次调用EnumPrinterData.当函数返回时,pcbData指向的变量将包含足够大的缓冲区大小,以便成功枚举所有打印机的配置数据值名称。

 

pcbData

 

[out]指向由pData指向的缓冲区中存储的字节数的变量的指针。

 

如果pData为NULL,则此参数可以为NULL。

 

返回值

 

如果函数成功,则返回值为ERROR_SUCCESS。

 

如果函数失败,则返回值是系统错误代码。

 

当没有更多的配置数据值为指定的打印机句柄检索时,该函数返回ERROR_NO_MORE_ITEMS。

 

备注

 

EnumPrinterData检索由SetPrinterData功能设置的打印机配置数据。打印机的配置数据由一组命名和类型值组成。每次调用它时,EnumPrinterData函数都可以获取这些值之一及其名称和类型代码。连续调用EnumPrinterData函数以获取打印机的所有配置数据值。

 

打印机配置数据存储在注册表中。列举打印机配置数据时,应避免调用可能更改数据的注册表功能。

 

如果要使操作系统提供足够的缓冲区大小,请先{{98979622}}cbDatacbData参数设置为零,如参数部分中所述。dwIndex的值与此通话无关。当函数返回时,pcbValueNamepcbData将包含大到足以枚举所有打印机的配置数据值名称和值的缓冲区大小。在下一次调用时,分配值名称和数据缓冲区,将cbValueNamecbData设置为分配的缓冲区的字节数,并将dwIndex设置为零。此后,继续调用EnumPrinterData函数,每次增加一次dwIndex,直到函数返回ERROR_NO_MORE_ITEMS。

 

引用文件 #INCLUDE Once

 

WinSpool.inc(包括Windows.inc)