Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Filter drivers

2 views
Skip to first unread message

Shu

unread,
Jul 2, 2001, 2:18:54 PM7/2/01
to
Hi,

I need to intercept calls to a video display driver on NT/2k, and I
have a few questions:

1) Can i filter driver do the job?

I also need to force the actual display driver to report different
device caps than what it really has. Specifically, i need it to deny
frame buffer access.

2) Can filter drivers achieve this?

Thanks!
Shu

Tim Roberts

unread,
Jul 3, 2001, 3:29:59 AM7/3/01
to
webbl...@yahoo.com (Shu) wrote:
>
>I need to intercept calls to a video display driver on NT/2k, and I
>have a few questions:
>
>1) Can i filter driver do the job?

No. Display drivers in Windows are not WDM. Filtering a display driver on
NT is nontrivial. Basically, you have to tweak the registry so that your
driver is loaded as "THE" display driver, and then load the original driver
yourself.

>I also need to force the actual display driver to report different
>device caps than what it really has. Specifically, i need it to deny
>frame buffer access.

Deny it to whom? You generally have to allow GDI to access the frame
buffer. Non-frame buffer drivers exist, but they have to be written that
way from scratch. If you just want to kill the DirectDraw access, that is
not too hard.

>2) Can filter drivers achieve this?

Not a WDM filter, no.
--
- Tim Roberts, ti...@probo.com
Providenza & Boekelheide, Inc.

Shu

unread,
Jul 3, 2001, 2:15:13 PM7/3/01
to
>>I also need to force the actual display driver to report different
>>device caps than what it really has. Specifically, i need it to deny
>>frame buffer access.
>
>Deny it to whom? You generally have to allow GDI to access the frame
>buffer. Non-frame buffer drivers exist, but they have to be written that
>way from scratch. If you just want to kill the DirectDraw access, that is
>not too hard.

I don't want GDI to directly write onto the video card's memory, i
want it to use the display driver's functions instead. Is there a way
to force GDI or a display driver to do this?

Thanks
ST

Tim Roberts

unread,
Jul 5, 2001, 11:50:26 PM7/5/01
to
webbl...@yahoo.com (Shu) wrote:

Sorry, there's no way. A non-frame-buffer display driver is architected
rather differently from a frame-buffer display driver.

You could write a dummy display driver, intercepting ALL operations like a
non-frame-buffer driver, keep a shadow frame buffer in main memory, then
use the real display driver's DrvCopyBits function to copy the changed bits
of your shadow into the frame buffer. That would be hard, but some of the
samples in the DDK might be useful.

Are you trying to some kind of intercepting?

Andrew Gray

unread,
Jul 6, 2001, 4:53:45 AM7/6/01
to
>webbl...@yahoo.com (Shu) wrote:
>
>I don't want GDI to directly write onto the video card's memory, i
>want it to use the display driver's functions instead. Is there a way
>to force GDI or a display driver to do this?
>
>Thanks
>ST

On NT/Win2k GDI does not have direct access to your frame buffer if
the surface is specified as Device Managed. Win2k can only render
directly into your frame buffer, without using a DDI, if you call
EngModifySurface(). If you wrap the actual display driver then you
could probably hide any such behaviour from GDI. Be aware that the
original display driver may still use GDI to do some rendering by
punting DDI calls if it can't handle the specific case.

AJ

Shu

unread,
Jul 6, 2001, 9:41:11 AM7/6/01
to
Basically i need to intercept all calls which generate output on the
monitor and send them to another app.

How about mirror drivers? Has anyone successfully written one before?
I believe that doesn't suffer from the frame buffer problem.

ST

0 new messages