Hello Gurus,
I need to use _DMA_ADAPTER from ntddk.h in my driver for DMA operation. The
driver is for NT5 and upward, non WDM. When I do 32 bit compilation I always
get error from compiler having problem referencing DmaOperations from
PADAPTER_OBJECT. After digging through ntddk.h I find that PADAPTER_OBJECT
will only get _DMA_ADAPTER when USE_DMA_MACROS is defined and that gets
defined only for 64 bit compilation. Is not this a bug with ntddk.h? Or am I
missing something?
For your perusal I’m attaching snippet from ntddk.h. One note is that if I
use wdm.h then no complain from compiler but I don’t want to use wdm.h since
I’m not targeting to make the driver WDM.
Thanks,
Hakim
#if defined(_WIN64)
//
// Use __inline DMA macros (hal.h)
//
#ifndef USE_DMA_MACROS
#define USE_DMA_MACROS
#endif
//
// Only PnP drivers!
//
#ifndef NO_LEGACY_DRIVERS
#define NO_LEGACY_DRIVERS
#endif
#endif // _WIN64
#if defined(USE_DMA_MACROS) && (defined(NTDDK) || defined(NTDRIVER) ||
defined(NTOSP))
// begin_wdm
//
// Define object type specific fields of various objects used by the I/O
system
//
typedef struct _DMA_ADAPTER *PADAPTER_OBJECT;
// end_wdm
#else
//
// Define object type specific fields of various objects used by the I/O
system
//
typedef struct _ADAPTER_OBJECT *PADAPTER_OBJECT; // ntndis
#endif // USE_DMA_MACROS && (NTDDK || NTDRIVER || NTOSP)