mixed NDIS call?

Hi dear all,
As ndis.h suggested , NdisMSendComplete lib call is a macro , but I
can find function call in some driver , look the following stack trace
, apparently driver dc21x4 call NDIS!NdisMSendComplete , does this
mean dc21x4 is linked with older NDIS library and
psched is linked with newer NDIS library ?

f9e67ef8 f98c7c2c 81a48138 8193ef58 00000000 myfw!MyFwSendCompleteHandler
f9e67f1c f957eb69 819c3ad0 8193ef58 00000000 NDIS!ndisMSendCompleteX+0x8d
f9e67f3c f98c8cea 81a4adb8 0193ef58 00000000 psched!ClSendComplete+0x67
f9e67f5c f9b2dce6 819c6ad0 8193ef38 00000000 NDIS!NdisMSendComplete+0x116
f9e67f94 f9b2d183 81930280 804e5a15 819c6ad0
dc21x4!ProcessTransmitDescRing+0x304
f9e67fb4 f98ce6a5 00010005 806f00b3 81a0d1b8 dc21x4!DC21X4HandleInterrupt+0xef
f9e67fd0 804dcbd4 8193201c 81932008 00000000 NDIS!ndisMDpc+0xff
f9e67ff4 804dc89e f6223c04 00000000 00000000 nt!KiRetireDpcList+0x46
f9e67ff8 f6223c04 00000000 00000000 00000000 nt!KiDispatchInterrupt+0x2a
WARNING: Frame IP not in any known module. Following frames may be wrong.
804dc89e 00000000 00000009 bb835675 00000128 0xf6223c04

No, this does not mean it was is linked with old NDIS library.
That’s just one of many esoteric quirks of ndis.sys.

– pa

It is because the driver was built iwith an older DDK which supports the BINARY_COMPATIBLE mode of generating NDIS miniports. When compiled with BINARY_COMPATIBLE=1, macros that reach into the _MINIPORT_BLOCK become function calls. This was how a single binary could be used on both NT and Win9x way back when. The support has long been deprecated but the exports remain in NDIS.SYS because older drivers still just work.

Good Luck,

Dave Cattley

Date: Wed, 14 Jul 2010 01:10:28 +0800
Subject: [ntdev] mixed NDIS call?
From: xxxxx@gmail.com
To: xxxxx@lists.osr.com

Hi dear all,
As ndis.h suggested , NdisMSendComplete lib call is a macro , but I
can find function call in some driver , look the following stack trace
, apparently driver dc21x4 call NDIS!NdisMSendComplete , does this
mean dc21x4 is linked with older NDIS library and
psched is linked with newer NDIS library ?

f9e67ef8 f98c7c2c 81a48138 8193ef58 00000000 myfw!MyFwSendCompleteHandler
f9e67f1c f957eb69 819c3ad0 8193ef58 00000000 NDIS!ndisMSendCompleteX+0x8d
f9e67f3c f98c8cea 81a4adb8 0193ef58 00000000 psched!ClSendComplete+0x67
f9e67f5c f9b2dce6 819c6ad0 8193ef38 00000000 NDIS!NdisMSendComplete+0x116
f9e67f94 f9b2d183 81930280 804e5a15 819c6ad0
dc21x4!ProcessTransmitDescRing+0x304
f9e67fb4 f98ce6a5 00010005 806f00b3 81a0d1b8 dc21x4!DC21X4HandleInterrupt+0xef
f9e67fd0 804dcbd4 8193201c 81932008 00000000 NDIS!ndisMDpc+0xff
f9e67ff4 804dc89e f6223c04 00000000 00000000 nt!KiRetireDpcList+0x46
f9e67ff8 f6223c04 00000000 00000000 00000000 nt!KiDispatchInterrupt+0x2a
WARNING: Frame IP not in any known module. Following frames may be wrong.
804dc89e 00000000 00000009 bb835675 00000128 0xf6223c04


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer