Добрый вечер.Есть код:
HANDLE hand;
DWORD ret,ret1;
PRINTER_INFO_2 *printers1 = NULL;
EnumPrinters(PRINTER_ENUM_LOCAL,
0,
2,0,
0,
&ret,
&ret1);
BYTE* buf = new BYTE[ret];
EnumPrinters(PRINTER_ENUM_LOCAL,
0,
2,buf,
ret,
&ret,
&ret1);
LPPRINTER_INFO_2A printers=(LPPRINTER_INFO_2A)buf;
for(DWORD i(0); i<ret1; ++i)
{
OpenPrinter(printers[i].pPrinterName,&hand,0);
GetPrinter(hand, 2, 0, 0, &ret1);
BYTE* buf1 = new BYTE[ret1];
printers1=(PRINTER_INFO_2A *)GlobalAlloc(GPTR, ret1);
GetPrinter(hand, 2, (LPBYTE)printers1, ret1, &ret1);
printers1->Status=PRINTER_STATUS_PAUSED;
SetPrinter(hand,2,(LPBYTE)&printers1,1);
ShowMessage(GetLastError());
ClosePrinter(hand);
}
Приложение вылетает и пишет "Access violation at address 72FCAD76 in module winspool.drv", или GetLastError() выдает 1803.
Как отправить принтеру PRINTER_CONTROL_PAUSE?