Problem with IoFreeAdapterChannel call

Guys,

I have a legacy NT4 driver that I’m trying to get to run under 2k. Thanks
to Gary Little and Jake Oshins, the driver wants to install now.

The problem is that I always get an assert in my DpcForIsr routine, on the
IoFreeAdapterChannel call. The assertion occurs when IoFreeAdapterChannel
calls KeRemoveDeviceQueue on a device queue that is NOT busy. The address
that IoFreeAdapterChannel passes to KeRemoveDeviceQueue is not my device
queue that is in my device extension. As my device sends me timing
interrupts VERY frequently, my checked build stops soon after the 1st
interrupt.

Any ideas? What device queue is getting passed down to
KeRemoveDeviceQueue, and who sets it to busy? Can (should) I check the
queue busy status before calling IoFreeAdapterChannel?

Also, should I be attaching my legacy driver to the device stack via
IoAttachDeviceToDeviceStack?

Thanks for any help.

john reilly
litton marine systems, inc


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

Be aware that in NT4 the DMA adapter channel is a ONE item queue. If you
attempt to insert another item on the queue BEFORE your callback has been
called and completed, things tend to go bump in the night. You must
synchronize access to the adapter channel using your own locks or busy bit.

Gary G. Little
Staff Engineer
Broadband Storage, Inc.
xxxxx@broadstor.com

-----Original Message-----
From: xxxxx@nexet.net [mailto:xxxxx@nexet.net]
Sent: Tuesday, November 13, 2001 11:55 PM
To: NT Developers Interest List
Subject: [ntdev] Problem with IoFreeAdapterChannel call

Guys,

I have a legacy NT4 driver that I’m trying to get to run under 2k. Thanks
to Gary Little and Jake Oshins, the driver wants to install now.

The problem is that I always get an assert in my DpcForIsr routine, on the
IoFreeAdapterChannel call. The assertion occurs when IoFreeAdapterChannel
calls KeRemoveDeviceQueue on a device queue that is NOT busy. The address
that IoFreeAdapterChannel passes to KeRemoveDeviceQueue is not my device
queue that is in my device extension. As my device sends me timing
interrupts VERY frequently, my checked build stops soon after the 1st
interrupt.

Any ideas? What device queue is getting passed down to
KeRemoveDeviceQueue, and who sets it to busy? Can (should) I check the
queue busy status before calling IoFreeAdapterChannel?

Also, should I be attaching my legacy driver to the device stack via
IoAttachDeviceToDeviceStack?

Thanks for any help.

john reilly
litton marine systems, inc


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


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