[wdmaudiodev] WinXP 64-bit Virtual DMA_ADAPTER

  • From: "Marlin R" <marliner@xxxxxxxxx>
  • To: wdmaudiodev@xxxxxxxxxxxxx
  • Date: Wed, 24 Oct 2007 10:11:29 -0700

Hi,

I need to create a virtual DMA_ADAPTER structure so that my driver can run
under WinXP 64-bit.
I am able to do so and my audio driver works perfectly.

The problem is that when I run Verifier, Verifier hooks in to my virtual
structure but since I made my own what Verifier expects there is not there
and it causes failures.
Since I have no way of knowing what the WinXP 64-bit DMA_ADAPTER structure
contains (besides the documented fields) I have no way of creating those
other fields for Verifier to hook into.

Does anyone know of a way I can resolve this?

Why am I doing this...I am sure this will be the next question...so I will
answer it now:

I a driver that is called by PortCls.sys (WavePCI model). The driver sits
over a virtual bus which sits over the USB bus. Now under 32-bit, when my
virtual driver calls the NewMasterDmaChannel() function my bus driver
forwards the IRP to the lower drivers which eventually return a result from
HalGetDmaAdapter() which has a valid DMA adapter. But, in XP 64-bit, the
return is NULL because apparently no HalGetDmaAdapter() function exists. So,
what I have done in the bus driver is to intercept that request and create
my own fake DMA_ADAPTER structure. And it works great....until Verifier
wants to hook into it. Verifier is the only component of the OS that wants
to interact with it...

For this reason...I need to know how the 64-bit OS creates the
DMA_ADAPTER...or I need an equivalent of HalGetDmaAdapter().

Thank you in advance for your time...

Other related posts:

  • » [wdmaudiodev] WinXP 64-bit Virtual DMA_ADAPTER