Summary: | Проблемы с печатью напрямую (raw-печать) | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Vitaly Lipatov <lav> |
Component: | Общее | Assignee: | Виталий Перов <vitperov> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | P5 | ||
Version: | 1.0.6 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | Linux | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 384, 443, 777 |
Description
Vitaly Lipatov
2007-03-23 01:15:05 MSK
Надо создать тест и проверить что получается. Желательно в автоматическом режиме печатью в файл. При попытке распечатать FAR зависает fixme:winspool:OpenPrinterW PRINTER_DEFAULTS ignored => L"RAW",(nil),0x000f000c trace:winspool:OpenPrinterW (L"TestPrinter", 0x338804, 0x338354) fixme:winspool:OpenPrinterW PRINTER_DEFAULTS ignored => L"RAW",(nil),0x000f000c trace:winspool:OpenPrinterW returning 1 with 0 and 0x1 trace:winspool:StartDocPrinterW (hPrinter = 0x1, Level = 1, pDocInfo = 0x338754 {pDocName = L"test.txt", pOutputFile = (null), pDatatype = L"RAW"}): trace:winspool:AddJobW (0x1,1,0x338500,528,0x3384d4) При печати в файл ошибки не возникает. В этом случае в выходной файл записывается всё, что было во входном буфере ошибка возникает, когда spool пишется не в заданный файл, а файл, определённый в filename = addjob->Path; там содержится filename = 'L"C:\\windows\\system32\\spool\\PRINTERS\\00002.SPL" при открытии(создании) файла hf = CreateFileW(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); получаем hf = INVALID_HANDLE_VALUE директории PRINTERS в C:\\windows\\system32\\spool\\ не существует (In reply to comment #6) ... > 'L"C:\\windows\\system32\\spool\\PRINTERS\\00002.SPL" > при открытии(создании) файла > hf = CreateFileW(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, > FILE_ATTRIBUTE_NORMAL, NULL); > получаем hf = INVALID_HANDLE_VALUE Если это в коде Wine, то надо исправить, чтобы такая ситуация не приводила к зависанию. Но с какой стати пишется именно в этот каталог? при создании указанной директории печать проходит без проблем. Директория задани в функции AddJobW static const WCHAR spool_path[] = {'s','p','o','o','l','\\','P','R','I','N','T','E','R','S','\\',0}; (In reply to comment #6) ... > 'L"C:\\windows\\system32\\spool\\PRINTERS\\00002.SPL" > при открытии(создании) файла > hf = CreateFileW(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, > FILE_ATTRIBUTE_NORMAL, NULL); > получаем hf = INVALID_HANDLE_VALUE Если это в коде Wine, то надо исправить, чтобы такая ситуация не приводила к зависанию. Но с какой стати пишется именно в этот каталог? Согласно статье http://www.ghacks.net/2008/02/24/change-the-print-spooler-directory/ каталог хранится в ключе DefaultSpoolDirectory в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers Изменение стандартной директории печати как правило производится только с целью ускорения (если она находится на более быстром диске). Было принято решение, что нет смысла реализовывать чтение этой директории из реестра. Теперь она автоматически будет создаваться при установке Wine. |