Sorry for talking on this issue again…
With Anton’s help, I successfully completed the request without timercall.
However, I didn’t get the great performance as expected. As I can see from
the log, my workitem working on reading and writing will be switched out
about every 15ms which takes a lot of time. Is there anyway for the workitem
to run without interrupt, or is it surely a result of some poor programming?
The timercall is definitely removed, and there is no system thread used in
the miniport driver.
FYI, the StartIo routine in the miniport driver did the following steps:
if the psrb is vendor-specific, finish the original srb stored in
databuffer field and itself, then call
ScsiPortNotification(NextLuRequest…)
if not, call IoQueueWorkItem to process the srb, and build a new srb with
the completing srb in databuffer field, then call
ScsiPortNotification(NextLuRequest…)
Also, It will be the same if I use a working thread instead of work item.
Thanks for any reply.
Paul
Express yourself instantly with MSN Messenger! Download today - it’s FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/