DMA buffer porting from NT to WDM

I am trying to port a FrameGrabber driver from NT to WDM. I have pretty
much gotten everything to work with one exception. I need two buffers that
can be accessed from my kernel driver (and also user space) and from the
PCI card itself. The first buffer is a memory buffer where I can send
video that has been decoded by the card. The second is a “mask” buffer
that is simply a bit by bit representation on a per pixel basis of whether
or not to allow video to pass from the card to the video buffer. (a 1
allows that pixels data to transfer, a 0 does not) I have been successful
to an extent using IOGetDMAAdapter and AllocateCommonBuffer to set up my
video buffer. I also use the same function to setup the mask buffer. I
can successfully transfer video from the card to the video buffer. But,
when I give the logical address of the mask buffer to the card, I don’t
believe the card can read from the mask. I say this without conviction
because I can find no way of telling for sure whether or not the card can
read from the mask buffer.

The sad part is that the older NT driver works completely. Unfortunately
it uses MmAllocateContiguousMemory and MmGetPhysicalAddress to do this.
And of course these functions are ‘going away’ in WDM.

Can anyone give some insight on possible solutions or even a good direction
in which to go?

John


You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com