Alex Ionescu wrote:
hbirr@svn.reactos.com wrote:
Do always set the UserIosb of an irp in IoSecondStageCompletion.
Updated files: trunk/reactos/ntoskrnl/io/irp.c
This is incorrect.
- The IOSB should not always be set. Create a driver and fail an
operation that you send to yourself by an IRP. Make that IRP not SYNCH_API, or better yet, make sure you don't have a File Object. You will notice that the Status Block is not touched.
- The IOSB is not checked if it exists, it should ALWAYS be there.
IRPs without a IOSB are invalid. To verify this, set the IOSB of your IRP to 0 and run Windows with a Debugger. You will see that it will break in many places, because Windows has simply placed SEH to make sure that the write is valid. So the correct thing to do is wrap the write in SEH, which protects both against invalid pointers and zero ones, but that still doesn't mean they are"valid" and should be checked that way.
Best regards, Alex Ionescu _______________________________________________ Ros-dev mailing list Ros-dev@reactos.com http://reactos.com:8080/mailman/listinfo/ros-dev
Please look at bug #609.
- Hartmut