|
|
20鱼币
求大神帮我解释下EnumPrinters函数的几个问题
函数原形
BOOL EnumPrinters( DWORD Flags, LPTSTR Name, DWORD Level, LPBYTE pPrinterEnum, DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned );
一、MSDN说该函数The EnumPrinters function enumerates available printers, print servers, domains, or print providers.
英语学得不好,我自己查翻译软件说这个函数枚举可用的打印机、打印服务器,域和打印提供者。后面这个域和打印提供者到底是指什么,我很迷茫。请大神指点下,谢谢
二、关于Flags参数。MSDN上面列举了PRINTER_ENUM_LOCAL、PRINTER_ENUM_NAME、PRINTER_ENUM_SHARED、PRINTER_ENUM_DEFAULT、PRINTER_ENUM_CONNECTIONS、PRINTER_ENUM_NETWORK、PRINTER_ENUM_REMOTE等七个选择。请问PRINTER_ENUM_CONNECTIONS、PRINTER_ENUM_NETWORK 和 PRINTER_ENUM_REMOTE各有什么区别,个人感觉都是列举网络上的打印机,没发现区别?
三、关于pcbNeeded参数。MSDN说这是参数pPrinterEnum指向的缓冲区的必需长度。而pPrinterEnum是指向结构体PRINTER_INFO数组的指针。我在测试时发现,其实pcbNeeded是能枚举到的打印机的个数,而不是缓冲区的长度,如果要确定缓冲区的长度,就应该使用sizeof(PRINTER_INFO)*pcbNeeded才行呀,可在<windows程序设计>一书里,真的只使用了malloc(pcbNeeded)来定义缓冲区。。。。。
求大神帮帮我!!! |
|