[New - Windows NT]
EnumPrinterData功能枚举指定打印机的配置数据。
打印机的配置数据由一组命名和类型值组成。EnumPrinterData函数可以在每次调用它时获取这些值之一及其名称和类型代码。连续调用EnumPrinterData函数以获取打印机的所有配置数据值。
打印机配置数据存储在注册表中。列举打印机配置数据时,应避免调用可能更改数据的注册表功能。
DWORD EnumPrinterData(
HANDLE 【hPrinter】, | //处理感兴趣的打印机 |
DWORD 【dwIndex】, | //要检索的值的索引 |
LPTSTR 【pValueName】, | //指向缓冲区的指针,以接收值名称 |
DWORD 【cbValueName】, | //值以字节为单位的值名称缓冲区 |
LPDWORD 【pcbValueName】, | //指向变量的指针,以接收存储在值名称缓冲区中的字节数 |
LPDWORD 【PTYPE】, | //指向变量的指针,以接收值类型代码 |
LPBYTE 【的pData】, | //指向缓冲区的指针,以接收值数据 |
DWORD 【cbData】, | //以字节为单位的值数据缓冲区大小 |
LPDWORD 【//指向变量的指针,以接收存储到值数据缓冲区中的字节数】 | //指向变量的指针,以接收存储到值数据缓冲区中的字节数 |
); |
参数
【hPrinter】
处理要获取配置数据的打印机。
通过调用OpenPrinter功能获取此打印机句柄。
【dwIndex】
指定要检索的配置数据值的索引值。
对于给定的打印机句柄,首次调用EnumPrinterData时,请将此参数设置为零。然后将参数递增1用于涉及相同打印机的后续调用,直到函数返回ERROR_NO_MORE_ITEMS。有关详细信息,请参阅以下备注部分。
注意:如果您使用【cbValueName】和【cbData】参数描述中提到的技术获得足够的缓冲区大小值,请在给定的打印机手柄的第一次调用EnumPrinterData中将这两个参数设置为零, 【dwIndex】的值与该通话无关。在EnumPrinterData的下一次调用中将【dwIndex】设置为零,以启动实际的枚举过程。
配置数据值未排序。新值将有一个任意的索引。这意味着EnumPrinterData函数可以按任何顺序返回值。
【pValueName】
指向接收配置数据值名称的缓冲区,包括终止空字符。
【cbValueName】
指定【pValueName】指向的缓冲区的大小(以字节为单位)。
如果要使操作系统提供足够的缓冲区大小,请将此参数和【cbData】参数设置为零,以便为给定的打印机句柄首次调用EnumPrinterData.当函数返回时,【pcbValueName】指向的变量将包含足够大的缓冲区大小,以成功枚举所有打印机的配置数据值名称。
【pcbValueName】
指向由【pValueName】指向的缓冲区中存储的字节数的变量的指针。
【PTYPE】
指向接收【dwIndex】指定值的类型代码的变量的指针。类型代码可以是以下值之一:
值 | 含义 |
REG_BINARY | 任何形式的二进制数据。 |
REG_DWORD | 一个32位数字。 |
REG_DWORD_LITTLE_ENDIAN | 一个32位数字的小端格式。这相当于REG_DWORD。 在小端格式中,多字节值存储在从最低字节(“小端”)到最高字节的存储器中。例如,值0x12345678以小端格式存储为(0x78 0x56 0x34 0x12)。 Windows NT和Windows 95设计为运行在小端计算机体系结构上。用户可以连接到具有大端架构的计算机,例如某些UNIX系统。 |
REG_DWORD_BIG_ENDIAN | 一个32位数字的big-endian格式。 在大端格式中,多字节值存储在从最高字节(“大端”)到最低字节的存储器中。例如,值0x12345678以big-endian格式存储为(0x12 0x34 0x56 0x78)。 Windows NT和Windows 95设计为运行在小端计算机体系结构上。用户可以连接到具有大端架构的计算机,例如某些UNIX系统。 |
REG_EXPAND_SZ | 一个空值终止的字符串,包含对环境变量的未扩展引用(例如“%PATH%”)。它将是Unicode或ANSI字符串,具体取决于您是使用Unicode还是ANSI函数。 |
REG_LINK | 一个Unicode符号链接。 |
REG_MULTI_SZ | 由两个空字符终止的以null结尾的字符串数组。 |
REG_NONE | 没有定义的值类型。 |
REG_RESOURCE_LIST | 设备驱动程序资源列表。 |
REG_SZ | 一个空值终止的字符串。它将是Unicode或ANSI字符串,具体取决于您是使用Unicode还是ANSI函数。 |
如果不需要类型代码,则【PTYPE】参数可以为NULL。
【的pData】
指向接收配置数据值的缓冲区。
如果不需要配置数据值,则此参数可以为NULL。
【cbData】
指定【的pData】指向的缓冲区的大小(以字节为单位)。
如果要使操作系统提供足够的缓冲区大小,请将此参数和【cbValueName】参数设置为零,以便为给定的打印机句柄首次调用EnumPrinterData.当函数返回时,【//指向变量的指针,以接收存储到值数据缓冲区中的字节数】指向的变量将包含足够大的缓冲区大小,以便成功枚举所有打印机的配置数据值名称。
【//指向变量的指针,以接收存储到值数据缓冲区中的字节数】
指向由【的pData】指向的缓冲区中存储的字节数的变量的指针。
如果【的pData】为NULL,则此参数可以为NULL。
返回值
如果函数成功,则返回值为ERROR_SUCCESS。
如果函数失败,则返回值为Win32错误值。
当没有更多的配置数据值为给定的打印机句柄检索时,该函数返回ERROR_NO_MORE_ITEMS。
备注
EnumPrinterData检索由SetPrinterData功能设置的打印机配置数据。
如果要让操作系统提供足够的缓冲区大小,请先{EnumPrinterData} 【cbData】和【cbData】参数设置为零,如参数部分中所述。【dwIndex】的值对于此呼叫无关紧要。当函数返回时,* 【pcbValueName】和* 【//指向变量的指针,以接收存储到值数据缓冲区中的字节数】将包含大到足以枚举所有打印机的配置数据值名称和值的缓冲区大小。在下一次调用时,分配值名称和数据缓冲区,将【cbValueName】和【cbData】设置为分配的缓冲区的字节数,并将【dwIndex】设置为零。此后,继续调用EnumPrinterData功能,每次增加一个【dwIndex】,直到函数返回ERROR_NO_MORE_ITEMS。
也可以看看
DeletePrinterData, GetPrinterData, OpenPrinter, SetPrinter, SetPrinterData