Добрый день!
Есть у меня такой код...
HANDLE hPrn;
PRINTER_DEFAULTS Defs;
ZeroMemory(&Defs,sizeof(PRINTER_DEFAULTS));
Defs.DesiredAccess=PRINTER_ALL_ACCESS;
BOOL bOk=OpenPrinter(argv[1],&hPrn,&Defs);
if (bOk){
PRINTER_INFO_8* pPrn=0;
DWORD dw=0;
bOk=GetPrinter(hPrn,8,(LPBYTE)pPrn,0,&dw);
pPrn=(PRINTER_INFO_8*)HeapAlloc(GetProcessHeap(),0,dw);
bOk=GetPrinter(hPrn,8,(LPBYTE)pPrn,dw,&dw);
if (bOk&&pPrn->pDevMode){
printf((char*)pPrn->pDevMode->dmDeviceName);
pPrn->pDevMode->dmPaperWidth=300;
pPrn->pDevMode->dmPaperLength=100;
bOk=SetPrinter(hPrn,8,(LPBYTE)pPrn,0);
bOk=GetPrinter(hPrn,8,(LPBYTE)pPrn,dw,&dw);
} else {
printf("Can't get printer's DeviceMode. Terminating.\n");
}
Он работает, всё нормально вроде...
Но почему-то я не могу получить PRINTER_INFO_9.
Т.е. если везде в коде поменять на другой уровень, то
bOk=GetPrinter(hPrn,9,(LPBYTE)pPrn,dw,&dw);
после запуска в bOk — 1, но pPrn->pDevMode = 0

Никак не пойму что не так