Windows разработка драйвера - отключение Banding внутри EngMarkBandingSurface - PullRequest
0 голосов
/ 29 апреля 2020

Это для драйвера растрового изображения. Пример:

https://github.com/microsoft/Windows-driver-samples/tree/master/print/OEM%20Printer%20Customization%20Plug-in%20Samples/C%2B%2B/bitmap

ИЛИ

https://github.com/microsoft/Windows-driver-samples/tree/master/print/OEM%20Printer%20Customization%20Plug-in%20Samples/C%2B%2B

а) Почему нужно включить Banding? Есть ли проблемы с производительностью / памятью, если полоса отключена? Как я убедился, что мне не нужно включать бэндинг.

b) OEMSendPage не вызывается, когда включена полоса, вызывается следующая полоса. Как я узнаю, будет ли обрабатываться следующая страница? Доступны начальная полоса, следующая полоса и конец Do c. Похоже, что-то не хватает между Next Band и End Do c, как End Page? Внутри Next Band есть pptl (Указатель на источник следующего диапазона (для возврата в GDI)). Что это значит? Может ли кто-нибудь опубликовать образец Next Band для какой-либо обработки, выполняемой внутри этой команды, для каждой страницы, а не для каждой полосы? Считается ли эта проверка безопасной для обработки каждой страницы? Означает ли pptl.x = -1, ppt1.y = -1 новую страницу или конец страницы?

// Punt call back to UNIDRV.
BOOL b= (pOemPDEV->m_pfnDrvNextBand)(pso,
    pptl);
if (pptl != NULL && pptl->x == -1 && pptl->y == -1)
{
    BOOL c = DoSomeExtraProcessing(pso, gFirstPage, gszPageText);
        if (!c)
            return TRUE;
}
return b;

c) Если бы я отключил бандинг, каким должен быть код внутри EngMarkBandingSurface

Спасибо

...