Давайте посмотрим, сможет ли кто-нибудь указать мне правильное направление и прокомментировать задачу, над которой я работаю.
У меня есть драйвер растрового изображения, который в настоящее время не поддерживает какой-либо вид печати, кроме моно chrome. Вот так теперь выглядят расширенные настройки. По умолчанию драйвер имеет значение моно chrome и не предоставляет пользователю никакого выбора. Все эти годы было хорошо, но теперь пользователи жалуются, что печать не ясна. Мне нужно это исправить, и я не собираюсь менять рабочий процесс пользователей, поэтому поиск другой системы печати - наименее предпочтительная альтернатива. Было бы здорово, если бы я мог включить эти настройки.
![enter image description here](https://i.stack.imgur.com/oCE8W.png)
Образец растрового изображения был первоначально взят отсюда. Образец поддерживает все тона печати. https://github.com/microsoft/Windows-driver-samples/tree/master/print/OEM%20Printer%20Customization%20Plug-in%20Samples/C%2B%2B/bitmap
![enter image description here](https://i.stack.imgur.com/EBc5V.png)
В файле GPD принтера я добавил все эти 4 варианта цвета точно так же, как в файле пример проекта. Это помогло мне в некоторой степени, означая, что мой принтер теперь показывает все опции. Но в коде что-то не так, я думаю, EnableDriver не вызывается. Я предполагаю, что может быть больше мест, где это изменение должно произойти. EnableDriver - это основные указатели функций экспорта из драйвера сеанса на основе GDI или драйвера принтера, который информирует GDI о базовом устройстве и размере его возможностей и т. Д. c. В дополнение к файлу GPD, где еще нужно изменить эти настройки? Любые указатели на этом пути кролика были бы полезны. Я видел это в исключении Windbg C ++ EH - код e06d7363 (первый шанс), но я понятия не имею, как даже обработать исключение. Я из мира. NET, если я не могу поставить точку останова, я не могу это исправить. Код не нарушается во внутреннем интерфейсе. cpp Возможно, потому что некоторые символы отсутствуют. Это напрямую идет в ddihook. cpp. Это текущий файл GPD, который включает все 4 режима печати.
*%******************************************************************************************
*% Color Mode
*%******************************************************************************************
*Feature: ColorMode
{
*rcNameID: =COLOR_PRINTING_MODE_DISPLAY
*DefaultOption: Mono
*Option: Mono
{
*rcNameID: =MONO_DISPLAY
*DevNumOfPlanes: 0
*DevBPP: 0
*IPCallbackID: 1
*Color?: FALSE
}
*Option: Color
{
*rcNameID: =COLOR_DISPLAY
*DevNumOfPlanes: 0
*DevBPP: 0
*DrvBPP: 4
*IPCallbackID: 2
*PaletteSize: 8
*PaletteProgrammable?: TRUE
*Command: CmdEnableDRC { *Cmd: "" }
*Command: CmdDefinePaletteEntry { *Cmd : "" }
*Command: CmdSelectPaletteEntry { *Cmd : "" }
*Command: CmdSetSrcBmpWidth { *Cmd : "" }
*Command: CmdSelect
{
*Order: PAGE_SETUP.16
*Cmd: ""
}
}
*Option: 8bpp
{
*rcNameID: =8BPP_DISPLAY
*DevNumOfPlanes: 0
*DevBPP: 0
*DrvBPP: 8
*IPCallbackID: 3
*PaletteSize: 256
*PaletteProgrammable? : TRUE
*Command: CmdEnableDRC { *Cmd : "" }
*Command: CmdDefinePaletteEntry { *Cmd : "" }
*Command: CmdSelectPaletteEntry { *Cmd : "" }
*Command: CmdSetSrcBmpWidth { *Cmd : "" }
*Command: CmdSelect
{
*Order: PAGE_SETUP.16
*Cmd: ""
}
}
*Option: 24bpp
{
*rcNameID: =24BPP_DISPLAY
*DevNumOfPlanes: 0
*DevBPP: 0
*DrvBPP: 24
*IPCallbackID: 5
*PaletteSize: 256
*PaletteProgrammable? : TRUE
*Command: CmdEnableDRC { *Cmd : "" }
*Command: CmdDefinePaletteEntry { *Cmd : "" }
*Command: CmdSelectPaletteEntry { *Cmd : "" }
*Command: CmdSetSrcBmpWidth { *Cmd : "" }
*Command: CmdSelect
{
*Order: PAGE_SETUP.16
*Cmd: ""
}
}
}