Question about DDK mirror driver sample: how to tell which ATI driver has the drvenablePDEV function

L

lucy

Hi all,

I am trying to add some lines to the MSDDK mirror driver sample in enable.c.

I want to add the lines that call the original ATI driver's DrvEnablePDEV in
the mirror driver DrvEnablePDEV function.

Now for some ATI display driver, I can check the hardware device manager to
see there is only one ATI "DLL" file, so I can know that I will use
EngLoadImage in the mirror driver's DrvEnablePDEV function to call the
original ATI one.

But when I run it on another PC and try to use

EngLoadImage("ATIXXX.DLL")

I found in the hardware device manager there are 10s of ATIXXX.dll files,
how do I know which one is the correct one to load in order to find the
original DrvEnablePDEV?

I have tried dumpbin.exe in VC\BIN\ directory,

I did the following:

dumpbin /exports ati*.dll

But I did see no "DrvEnablePDEV at all.

What's the problem? Which one of the following files contains the
DrvEnablePDEV?

Thanks a lot,

-Lucy

-----------------------------------------------

08/03/2004 09:18 PM 233,472 ati2cqag.dll
08/03/2004 09:37 PM 208,896 ati2dvag.dll
08/03/2004 09:35 PM 30,720 ati2edxx.dll
08/03/2004 09:35 PM 86,016 ati2evxx.dll
05/25/2004 09:02 PM 870,784 ati3d1ag.dll
05/25/2004 09:06 PM 1,057,760 ati3d2ag.dll
08/03/2004 09:34 PM 2,177,184 ati3duag.dll
08/03/2004 09:34 PM 81,920 ATIDDC.DLL
08/03/2004 10:12 PM 135,168 ATIDEMGR.dll
08/03/2004 10:25 PM 294,912 atiiiexx.dll
08/03/2004 09:55 PM 6,451,200 atioglxx.dll
08/03/2004 09:35 PM 118,784 atipdlxx.dll
08/03/2004 09:20 PM 17,408 atitvo32.dll
11/09/2001 09:01 AM 24,064 ativcoxx.dll
08/03/2004 09:23 PM 484,128 ativvaxx.dll
 
L

lucy

lucy said:
Hi all,

I am trying to add some lines to the MSDDK mirror driver sample in enable.c.

I want to add the lines that call the original ATI driver's DrvEnablePDEV in
the mirror driver DrvEnablePDEV function.

Now for some ATI display driver, I can check the hardware device manager to
see there is only one ATI "DLL" file, so I can know that I will use
EngLoadImage in the mirror driver's DrvEnablePDEV function to call the
original ATI one.

But when I run it on another PC and try to use

EngLoadImage("ATIXXX.DLL")

I found in the hardware device manager there are 10s of ATIXXX.dll files,
how do I know which one is the correct one to load in order to find the
original DrvEnablePDEV?

I have tried dumpbin.exe in VC\BIN\ directory,

I did the following:

dumpbin /exports ati*.dll

But I did see no "DrvEnablePDEV at all.

What's the problem? Which one of the following files contains the
DrvEnablePDEV?

Thanks a lot,

-Lucy

-----------------------------------------------

08/03/2004 09:18 PM 233,472 ati2cqag.dll
08/03/2004 09:37 PM 208,896 ati2dvag.dll
08/03/2004 09:35 PM 30,720 ati2edxx.dll
08/03/2004 09:35 PM 86,016 ati2evxx.dll
05/25/2004 09:02 PM 870,784 ati3d1ag.dll
05/25/2004 09:06 PM 1,057,760 ati3d2ag.dll
08/03/2004 09:34 PM 2,177,184 ati3duag.dll
08/03/2004 09:34 PM 81,920 ATIDDC.DLL
08/03/2004 10:12 PM 135,168 ATIDEMGR.dll
08/03/2004 10:25 PM 294,912 atiiiexx.dll
08/03/2004 09:55 PM 6,451,200 atioglxx.dll
08/03/2004 09:35 PM 118,784 atipdlxx.dll
08/03/2004 09:20 PM 17,408 atitvo32.dll
11/09/2001 09:01 AM 24,064 ativcoxx.dll
08/03/2004 09:23 PM 484,128 ativvaxx.dll


Very strange! There is no DrvEnablePDEV in the ATI drivers? I tried every
means and did not find the DLL that contains the DrvEnablePDEV...
 
V

vipin

DrvEnablePdev isn't the driver dll exported function, function pointer is
filled in the DRVENABLEDATA parameter
when DrvEnableDriver is called.

thanks
vipin
 
C

Calvin Guan

Vipin is right.

Lucy, the Display driver you are looking for is ati2dvag.dll.

good luck,
Calvin
 
L

lucy

Calvin Guan said:
Vipin is right.

Lucy, the Display driver you are looking for is ati2dvag.dll.

good luck,
Calvin

Thank you guys so much, Calvin and Vipin...

Is there any way that I can find this DLL file out by programming, since I
am now just programming on one PC but it needs to be able to work on various
of PCs...

Thank you so much!

-Lucy
 
C

Calvin Guan

The name of the master display driver is specified in miniports INF file and
stored in miniport driver's class registry key(aka Software Key, or driver
key).
You will have to use SetupAPI to get it.

My system indicates:
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{DISPLAY ADAPTER
CLASS GUID}\0000\Settings\InstalledDisplayDrivers is ati2dvag.dll. D3d along
with other drivers and DLLs are loaded by the 2D driver at runtime.


-
Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com
 
L

lucy

Calvin Guan said:
The name of the master display driver is specified in miniports INF file and
stored in miniport driver's class registry key(aka Software Key, or driver
key).
You will have to use SetupAPI to get it.

My system indicates:
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{DISPLAY ADAPTER
CLASS GUID}\0000\Settings\InstalledDisplayDrivers is ati2dvag.dll. D3d along
with other drivers and DLLs are loaded by the 2D driver at runtime.


-
Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com
news:[email protected]...


Thank you very much Calvin. I followed your idea and looked into the
registry,

I don't know what is the {DISPLAY ADAPTER CLASS GUID} of my ATI card, so how
can I get this GUID?

Then I did a search on InstalledDisplayDrivers and found a bunch of ATI and
other strange .DLLs in my system... so there is no unique solution to this
either. I was hoping that under the situation that I don't know the GUID of
the users' adaptor card, I can find a unique InstalledDisplayDrivers on
their systems...

So now the key is how to get {DISPLAY ADAPTER CLASS GUID} of users'
currently-using display card?

Any more thoughts on this? Thank you so much!
 
C

Calvin Guan

IIRC, the adapter class GUID is defined by MSFT. It's same for all vendors.
It should be {4D36E969-E325-11CE-BFC1-08002BE10318}
You will need to pass this class GUID to SetupDiXxx to enumerate all devices
under the class.

Good luck,
Calvin
-
Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com
 
V

vipin

lucy is walking a tight rope. Imagine the situation of display driver
crashing.
WHQL and stuff like that would start figuring and customers(ofcourse other
than lucy) would ask for signed drivers,even if it is a filter driver.
 
J

Jonas Wetz

lucy said:
Thank you very much Calvin. I followed your idea and looked into the
registry,

I don't know what is the {DISPLAY ADAPTER CLASS GUID} of my ATI card, so how
can I get this GUID?

Then I did a search on InstalledDisplayDrivers and found a bunch of ATI and
other strange .DLLs in my system... so there is no unique solution to this
either. I was hoping that under the situation that I don't know the GUID of
the users' adaptor card, I can find a unique InstalledDisplayDrivers on
their systems...

So now the key is how to get {DISPLAY ADAPTER CLASS GUID} of users'
currently-using display card?

Any more thoughts on this? Thank you so much!
You could use the EnumDisplayDevices() method to enumerate all installed
devices. You will have to look up the returned DISPLAY_DEVICE structure
then for a string called "DeviceKey". It contains your specific GUID.

Hope this helps a little!

Regards,

Jonas
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top