Hi,
I have a virtual bus driver over a USB bus. In this driver, I want to
intercept the GUID_BUS_INTERFACE_STANDARD so that I get requests for
IoGetDmaAdapter().
The reason I want to do this is because in Windows XP 64-bit (unlike
32-bit) these requests fail (the PDMA_ADAPTER that is returned is
NULL).
I have been able to create my own DMA_ADAPTER by intercepting the call
and returning a BUS_INTERFACE_STANDARD. I pass my own
BusGetDmaAdapter() which does get called. In my BusGetDmaAdapter(). I
basically return a DMA_ADAPTER structure that I have created,
including the attached DMA_OPERATIONS...
Basically, this scheme works perfectly fine...the overlaying
applications get data as they expect and everythign in 64 works just
like it does in 32 (from the app point of view).
But, there is major problem...When I run verifier I have severe
problems because Verifier's hooking mechanism does very bad things
because it thinks it is hooking on the Win XP 64-bit DMA_ADAPTER
structure which apparently has data in front of, and I think, in back
of the DMA_ADAPTER. (The Verifier hooing function wants to hook all
the components, not just the DMA_ADAPTER but also the associated
data.) Now, there is no way for me to know what the hooking mechanism
is doing unless I dissasemble the hooking code...and provide Verifier
with fake data there too.
So, my questions are:
1. Can somebody give me a document that tells me how I can properly
simulate WinXP 64-bit's DMA_ADAPTER data so that Verifier will find
what it expects?
2. Is there another way I can do this (fake the DMA)?
I have a very complicated driver that is composed of two drivers that
works perfectly in XP 32-bit because under XP 32-bit a proper
DMA_ADAPTER structure is returned with me doing anything special. I
want make these drivers work under XP 64-bit without having to rewrite
them...and this idea of faking the DMA works...except that verifier
itself causes problems.
I need verifier to work because I need to pass DTM.
Thank you in advance for any help or ideas...
>> Stay informed about: WinXP 64-bit Virtual DMA_ADAPTER