The serialization of start irps is expected on all current windows
releases. Windows Vista deserializes the sending of start device irps
so multiple start irps (to multiple devices obviously) can be sent at
once.
As for returning success from start device before your device has
finishied initialized, it can be done, but you must be prepared for some
design decisions which are not demonstrated in any articles or books. I
have done it in the past successfully. If you do this, I would not
enable your device interface (or create the symbolic link if you are
using legacy naming) until the worker thread has finished initializing
the device. Otherwise, if you enable /create the links before you are
done, you must handling incoming i/o to your device before you are ready
to process them. This will potentially make for a more complex I/O
queue implementation.
(I would also use a work item instead of a worker thread, but that’s
just me.)
d
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@wipro.com
Sent: Wednesday, December 21, 2005 11:04 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] Handling IRP_MN_START_DEVICE
Deal All,
We are developing a driver for USB device. The StartDevice (Handler for
IRP_MN_START_DEVICE) routine takes around 10 seconds for device
initialization and setting up of USB related data members. Also, if
multiple boards are connected, the board bring up happens serially (One
after the other).
I wanted to know whether the serial enumeration is an expected behavior
of PNP manager
Also, as board bring up for multiple boards takes too much of a time,
can I have a work around where a worker thread is spawned for device
initialization
i.e
Create a worker thread in StartDevice
Return STATUS_SUCCESS from startDevice
Initialize the USB device in thread routine
In this work around, we are returning STATUS_SUCCESS even before the
device is initialized. Can we do this or is there any better way of
handling this.
Sincerely,
ML
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: unknown lmsubst tag argument:
‘’
To unsubscribe send a blank email to xxxxx@lists.osr.com