Programmed IO -> Busmaster Device

Hello all,

I have converted a 9X device driver to an NT device
driver. As it is, the device driver operates as a
Programmed I/O device, where a thread in the
application is actually in charge of moving data
between the driver and the shared memory. The
original driver actually used a callback and a timer
to move the data.

It appears that a much tighter call call frequency and
higher data throughput can be attained with the device
level timer, than with the usermode thread polling the
device.

When I first re-wrote the driver, I used a DPC Call
and a timer…which worked on W2000 perfectly, but
when I installed the driver on NT4…BSOD:
IRQL_NOT_LESS_OR_EQUAL. I just stuck the callback
code in a DeviceIoControl and life was “easier”.

Also, DeviceIoCtrl calls were BSODing, so I raised the
IRQL of the DispatchIoctls to DISPATCH level and all
the blue screens went away.

What should I do to make better use of DIRQL?

TIA,

Asher

I ain’t droppin’ no eaves, sir, honest!..I heard a
good deal about a ring, and a dark lord, and something
about the end of the world. Please don’t hurt me, sir,
don’t turn me into anything *gulp* unnatural.


Do you Yahoo!?
Yahoo! Tax Center - File online, calculators, forms, and more
http://platinum.yahoo.com