void EnumeratePrinters()
{
PRINTER_INFO_2* pPrinterInfo = nullptr;
DWORD dwBytesNeeded = 0;
DWORD dwNumPrinters = 0;
// 获取所需缓冲区大小
EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, nullptr, 2, nullptr, 0, &dwBytesNeeded, &dwNumPrinters);
if (dwBytesNeeded > 0)
{
pPrinterInfo = reinterpret_cast<PRINTER_INFO_2*>(new BYTE[dwBytesNeeded]);
if (EnumPrinters(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, nullptr, 2, reinterpret_cast<LPBYTE>(pPrinterInfo), dwBytesNeeded, &dwBytesNeeded, &dwNumPrinters))
{
// 遍历打印机列表
for (DWORD i = 0; i < dwNumPrinters; i++)
{
TRACE(_T("打印机名称:%s\\n"), pPrinterInfo[i].pPrinterName);
TRACE(_T("驱动程序名称:%s\\n"), pPrinterInfo[i].pDriverName);
TRACE(_T("打印机端口:%s\\n"), pPrinterInfo[i].pPortName);
TRACE(_T("\\n"));
}
}
delete[] reinterpret_cast<BYTE*>(pPrinterInfo);
}
}