描述
GetPrinter功能检索有关指定打印机的信息。
C++ 语法
BOOL GetPrinter( __in HANDLE hPrinter, __in DWORD Level, __out LPBYTE pPrinter, __in DWORD cbBuf, __out LPDWORD pcbNeeded ); |
PowerBASIC 语法
FUNCTION GetPrinterA ( _ BYVAL hPrinter AS DWORD, _ BYVAL Level AS DWORD, _ BYREF pPrinter AS ANY, _ BYVAL cbBuf AS DWORD, _ BYREF pcbNeeded AS DWORD _ ) AS LONG |
Unicode版本:
FUNCTION GetPrinterW ( _ BYVAL hPrinter AS DWORD, _ BYVAL Level AS DWORD, _ BYREF pPrinter AS ANY, _ BYVAL cbBuf AS DWORD, _ BYREF pcbNeeded AS DWORD _ ) AS LONG |
参数
hPrinter
[in]处理该函数检索信息的打印机。使用OpenPrinter或AddPrinter功能来检索打印机句柄。
Level
[in]指定函数存储到pPrinter指向的缓冲区中的结构的级别或类型。
Windows 95/98 / Me:此值可以是1,2或5。
Windows NT / 2000 / XP / Vista / Windows 7:该值可以是1,2,3,4,5,6,7,8或9。
pPrinter
[out]指向接收包含有关指定打印机信息的结构的缓冲区的指针。缓冲区必须足够大以接收结构以及结构成员指向的任何字符串或其他数据。如果缓冲区太小,则pcbNeeded参数返回所需的缓冲区大小。
结构类型由水平的值决定。
水平 |
结构体 |
1 |
包含一般打印机信息的PRINTER_INFO_1结构。 |
2 |
包含有关打印机详细信息的PRINTER_INFO_2结构。 |
3 |
Windows NT / 2000 / XP / Vista / Windows 7:包含打印机安全信息的PRINTER_INFO_3结构。 |
4 |
Windows NT / 2000 / XP / Vista / Windows 7:包含最少打印机信息的PRINTER_INFO_4结构,包括打印机的名称,服务器的名称以及打印机是远程还是本地。 |
5 |
包含打印机信息(如打印机属性和超时设置)的PRINTER_INFO_5结构。 |
6 |
Windows 2000 / XP / Vista / Windows 7:指定打印机状态值的PRINTER_INFO_6结构。 |
7 |
Windows 2000 / XP / Vista / Windows 7:一个PRINTER_INFO_7结构,指示打印机是否在目录服务中发布。 |
8 |
Windows 2000 / XP / Vista / Windows 7:指定全局默认打印机设置的PRINTER_INFO_8结构。 |
9 |
Windows 2000 / XP / Vista / Windows 7:指定每用户默认打印机设置的PRINTER_INFO_9结构。 |
cbBuf
[in]指定pPrinter指向的缓冲区的大小(以字节为单位)。
pcbNeeded
[out]指向功能设置为打印机信息大小(以字节为单位)的变量的指针。如果cbBuf小于此值,GetPrinter将失败,该值表示所需的缓冲区大小。如果cbBuf等于或大于此值,则GetPrinter成功,该值表示缓冲区中存储的字节数。
返回值
如果函数成功,则返回值为非零值。
如果函数失败,返回值为零。
备注
安全警报:PRINTER_INFO_2,PRINTER_INFO_8和PRINTER_INFO_9结构中的pDevMode成员可以为空。当这种情况发生时,打印机不可用,直到驱动程序重新安装成功。
Windows NT / 2000 / XP / Vista / Windows 7:对于包含指向安全描述符的指针的PRINTER_INFO_2和PRINTER_INFO_3结构,该函数仅检索调用方有权读取的安全描述符的那些组件。要检索特定的安全描述符组件,必须在调用OpenPrinter函数以检索打印机的句柄时指定必要的访问权限。下表显示了读取各种安全描述符组件所需的访问权限。
访问权 |
安全描述符组件 |
READ_CONTROL |
所有者 小组 自由访问控制列表(DACL) |
ACCESS_SYSTEM_SECURITY |
系统访问控制列表(SACL) |
Windows 95/98 / Me:PRINTER_INFO_2和PRINTER_INFO_3结构中的pSecurityDescriptor成员将被忽略。应用程序的设计应该考虑到这一点。
Windows NT / 2000 / XP / Vista / Windows 7:如果指定级别7,PRINTER_INFO_7dwAction成员返回以下值之一,以指示打印机是否在目录服务中发布。
dwAction值 |
含义 |
DSPRINT_PUBLISH |
打印机已发布。pszObjectGUID成员包含与打印机关联的目录服务打印队列对象的GUID。 |
DSPRINT_UNPUBLISH |
打印机未发布。 |
DSPRINT_PENDING |
表示系统正在尝试完成发布或取消发布操作。如果SetPrinter呼叫无法发布或取消发布打印机,系统会进一步尝试在后台完成操作。 |
于Windows Vista / Windows 7的:GetPrinter从GetPrinter返回的打印机数据是从本地缓存检索的,hPrinter是指由打印服务器托管的打印机,并且至少有一个打印服务器的打开连接。在所有其他配置中,打印机数据从打印服务器查询。
引用文件 #INCLUDE Once
WinSpool.inc(包括Windows.inc)