mirrdrv
Sat Nov 05 11:41:01 CST 2005
In fact, an infitine mutual recursion is
what is happening here. And it ends up
in stack overflow which is manifesting itself
with a double fault bug check.
DrvCopyBits calls EngCopyBits and
EngCopyBits, in turn, calls DrvCopyBits again.
Nothing is wrong with EngCopyBits here.
It must, for sure, simply call DrvCopyBits,
and consider its work done. It should not check
all the time if it is reentered.
So, conclusion is right.
Driver must never call EngCopyBits with its
own device-managed surface as the destination
or source.
--
Best regards,
Lev Kazarkin
http://www.demoforge.com
"Vipin[MVP]" wrote:
> yup, that is a known issue. You can't punt back DrvCopyBits using
> EngCopyBits(...) unless it is a
> GDI managed surface. There is nothing prmitive that GDI can break it into
> and it goes mad. But I would expect
> Microsoft to fix this by returning failure for EngCopyBits(...) and not
> bsod.
>
> --
> Vipin Aravind
> MVP [Windows - Printing/Imaging]
>
> "lee" <lander_gao@yahoo.com> wrote in message
> news:1129056885.102970.122750@g47g2000cwa.googlegroups.com...
> > When I implemented the DrvCopyBits function in the mirror driver, I
> > just punted to EngCopyBits call, but unfortunately, I got a blue
> > screen. Is there anything else that I should do before punting it back
> > to EngCopyBits?
> >
> > Could any guru please give me some suggestions?
> >
> > Thanks,
> >
>
>
>