How to split the IRP into multiple requests ?

Hi all

I am trying to split the main IRP into small requests because our device
cannot handle more than some size . Here, I am trying to use the same IRP
which has been created by IO Manager itself. When it completes the first
chunk , it comes to completion routine and it checks if there is any
additional length left over ,again it reuses the MDL and reissues the
request to the next level driver through Work Item . So far everything is
fine . But the problem is when I submit the request to USB , it takes the
whole transfer rather small chunks as a whole transfer . Let us say I have
to transfer 650 bytes , and if I am splitting each request as max of 100
bytes , it will be ~7 times of small packets . I wanted the device to see
100 bytes at a time like a big request . Can somebody help me what I am
missing . The above implementation is good enough or do need to create a
multiple IRP to do this ?

Can anybody provide me some pointers to solve this problem ?

Thanks in advance
srinivasa


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

If you look in the ddk under src\storage\class\classpnp\class.c, there is a
routine in there called ClassSplitRequest. It does what you need.

–Mark

Mark J. Cariddi
Consulting Associate
Open Systems Resources, Inc.
http://www.osr.com/

-----Original Message-----
From: Srinivasa Rao Deevi [mailto:xxxxx@Microtune.com]
Sent: Monday, February 04, 2002 7:20 PM
To: NT Developers Interest List
Subject: [ntdev] How to split the IRP into multiple requests ?

Hi all

I am trying to split the main IRP into small requests because our device
cannot handle more than some size . Here, I am trying to use the same IRP
which has been created by IO Manager itself. When it completes the first
chunk , it comes to completion routine and it checks if there is any
additional length left over ,again it reuses the MDL and reissues the
request to the next level driver through Work Item . So far everything is
fine . But the problem is when I submit the request to USB , it takes the
whole transfer rather small chunks as a whole transfer . Let us say I have
to transfer 650 bytes , and if I am splitting each request as max of 100
bytes , it will be ~7 times of small packets . I wanted the device to see
100 bytes at a time like a big request . Can somebody help me what I am
missing . The above implementation is good enough or do need to create a
multiple IRP to do this ?

Can anybody provide me some pointers to solve this problem ?

Thanks in advance
srinivasa


You are currently subscribed to ntdev as: xxxxx@osr.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