Was: [ros-dev] Re: [ros-svn] [hbirr] 14988: - Guard the copying to the IOSB.

Hartmut Birr hartmut.birr at gmx.de
Thu May 5 17:35:58 CEST 2005


Copied from the archive because I will receive the mail in some hours:
>hbirr at svn.reactos.com wrote:

>>- Guard the copying to the IOSB.
>>- Do the main processing on success or if previous STATUS_PENDING was
returned.
>> Do not use some of the IRP and FO flags at this point.
>>
>>
>Ok, I was going to complain about this, but I realize that it must be
>used since defintely some parts of ROS don't work properly with those
>flags set.

It isn't possible to use the flags, because some functions are always
synchronous independently which flags are set. Ntoskrnl may set the
flags correctly, but a driver may possible not.

>>- Set all results before signaling the events.
>>- Signal the FO event previous the user event.
>>- Made the code a little bit shorter.
>>
>>
>>
>I like your changes and have no complaints, except that the signaling
>semantics of the File/User events should be different in the failure
>case (my "else" path). You've completely removed that path and thus
>changed the logic.

If the driver has returned STATUS_PENDING and completes the irp later
with an error, both events must be signaled, because two different
threads may waiting on this events. The IOSB must be also set. The apc
must be also deliver (I've tested this with the apc sample and some
modifications on windows). There is no difference between completing the
irp with and without an error if the driver has returned STATUS_PENDING.

- Hartmut



More information about the Ros-dev mailing list