关于枚举本地所有打印驱动的问题?有段代码不理解求教大家!
bool HasInstallPrinter( CString& AllPrintrDriveName )
{
DWORD Flags = PRINTER_ENUM_FAVORITE | PRINTER_ENUM_LOCAL; //local printers
DWORD cbBuf;
DWORD pcReturned ;
DWORD Level = 2;
TCHAR Name[500] ;
LPPRINTER_INFO_2 pPrinterEnum = NULL ;
memset(Name, 0, sizeof(TCHAR) * 500) ;
::EnumPrinters(Flags, Name, Level, NULL, 0, &cbBuf, &pcReturned) ;
pPrinterEnum = (LPPRINTER_INFO_2)LocalAlloc(LPTR, cbBuf + 4) ;
if (!pPrinterEnum)
{
TRACE("Error %1d\n", GetLastError()) ;
return false;
}
if (!EnumPrinters(
Flags, // DWORD Flags, printer object types
Name, // LPTSTR Name, name of printer object
Level, // DWORD Level, information level
(LPBYTE)pPrinterEnum, // LPBYTE pPrinterEnum, printer information buffer
cbBuf, // DWORD cbBuf, size of printer information buffer
&cbBuf, // LPDWORD pcbNeeded, bytes received or required
&pcReturned) // LPDWORD pcReturned number of printers enumerated
)
{
TRACE("Error %1d\n", GetLastError()) ;
return false;
}
if(pcReturned > 0)
{
AfxMessageBox(pPrinterEnum->pDriverName); //这就打一个驱动名称
AllPrintrDriveName = _T("ads");
return true;
}
else
return false;
}
上面代码中Name那个变量是空的,我就打出pPrinterEnum->pDriverName看到打出来就一个【Microsoft XPS Document Writer】驱动名,我在本机上装的驱动名没打出来,还有本机上有一个【Fax】打印驱动,以及我安装的【iR3225(2)】打印驱动,这两个都没有被AfxMessageBox显示出来……我想问下,是因为枚举的原因pPrinterEnum->pDriverName只存了【Microsoft XPS Document Writer】驱动名,还是只找到了【Microsoft XPS Document Writer】驱动名,因为【Microsoft XPS Document Writer】驱动名排在最后,Fax排第一,iR3225(2)排第二。请求帮忙!
[最优解释]
}
}
[其他解释]