Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Опрос принтера

9.4K
05 апреля 2006 года
Savoy
47 / / 04.04.2006
У меня запара со структурами для работы с принтером:
HANDLE hpr;
DWORD bufsize;
PRINTER_INFO_2 PrinterInfo;
bool fl = OpenPrinter("HP DeskJet 612C", &hpr, NULL);//нормально находит принтер.

bufsize = sizeof(PrinterInfo);//получается 84.
fl = GetPrinter(hpr, 2, (LPBYTE)&PrinterInfo, bufsize, &breq);//а вот здесь уже false.
DWORD error = GetLastError();//error = 122;

The data area passed to a system call is too small.(MSDN), типа места ему мало для формирования информации.

В brec значение 1308, если присвоить bufsize 1500, то всё нормально запишет, но, я так понимаю, после этого данные заносятся не в свою область и впоследствии имеем: Access violation reading location..

В чём тут дело? Может я в чём косячу непростительно.. Если делать динамически, то есть PrinterInfo объявлять как указатель на структуру PRINT_INFO_2, то получается не лучше.
Не подскажете в чём загвоздка?
534
05 апреля 2006 года
HarryAxe
448 / / 19.01.2006
Цитата:
Originally posted by Savoy
У меня запара со структурами для работы с принтером:
The data area passed to a system call is too small.(MSDN), типа места ему мало для формирования информации.

В brec значение 1308, если присвоить bufsize 1500, то всё нормально запишет, но, я так понимаю, после этого данные заносятся не в свою область и впоследствии имеем: Access violation reading location..

В чём тут дело? Может я в чём косячу непростительно.. Если делать динамически, то есть PrinterInfo объявлять как указатель на структуру PRINT_INFO_2, то получается не лучше.
Не подскажете в чём загвоздка?

Ну а память ты не забыл выделить под буффер? Типа

 
Код:
GetPrinter(hpr, 2, NULL, 0, &breq);
PRINTER_INFO_2 * pPrinterInfo = (PRINTER_INFO_2 *) new BYTE[breq];
GetPrinter(hpr, 2, (LPBYTE) pPrinterInfo, breq, &breq);
9.4K
06 апреля 2006 года
Savoy
47 / / 04.04.2006
Во, спасибо. Плохо представлял себе механизм работы этих функций, щас вроде получше - чё-то заработало. Память я выделял, но либо меньше, либо больше требуемого. Когда меньше сразу срубало, а когда больше работало не стабильно, да и при выходе из функции обработке кнопки всё равно вырубалось.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог