IoBuildSynchronousFsdRequest, IoBuildAsynchronousFsdRequest and using an event object

Hello,

What is the difference between using IoBuildSynchronousFsdRequest and
IoBuildAsynchronousFsdRequest when I use with the last one’s completion
routine an event object and return more processing required then wait for
the object then complete the request.

A read will be made either synch or asynch after the operation has been
completed (when completionroutine called).

I might have misunderstood something, hope someone can clarify.


Elias

The major difference is that if you use IoBuildAsynchronousFsdRequest
then it’s you responsibility to free the IRP after its completion.
Another difference is that IRPs built with IoBuildSynchronousFsdRequest
are queued to the current thread.
Summarizing:

  1. You must free the IRP build with IoBuildAsynchronousFsdRequest
  2. You must not free the IRP build with IoBuildSynchronousFsdRequest
  3. Read the DDK on those (comments section). Although it’s not very
    clear but gives you an idea on the differences.

-----Original Message-----
From: lallous [mailto:xxxxx@lgwm.org]
Sent: Monday, December 15, 2003 2:25 AM
To: Windows File Systems Devs Interest List
Subject: [ntfsd] IoBuildSynchronousFsdRequest,
IoBuildAsynchronousFsdRequest and using an event object

Hello,

What is the difference between using IoBuildSynchronousFsdRequest and
IoBuildAsynchronousFsdRequest when I use with the last one’s completion
routine an event object and return more processing required then wait
for
the object then complete the request.

A read will be made either synch or asynch after the operation has been
completed (when completionroutine called).

I might have misunderstood something, hope someone can clarify.


Elias


Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17

You are currently subscribed to ntfsd as:
xxxxx@borland.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

The first one links the IRP to the current thread, and requires to be
completed up to the very end. You cannot call IoFreeIrp on it. The event you
have specified in IoxxxxRequest is the mean to wait for it.
The second one cannot be “completed up to the very end”, and requires some
completion routine to return STATUS_MORE_PROCESSING_REQUIRED and call
IoFreeIrp. Waiting on event signaled in the completion routine is the way to
go.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

----- Original Message -----
From: “lallous”
Newsgroups: ntfsd
To: “Windows File Systems Devs Interest List”
Sent: Monday, December 15, 2003 1:24 PM
Subject: [ntfsd] IoBuildSynchronousFsdRequest, IoBuildAsynchronousFsdRequest
and using an event object

> Hello,
>
> What is the difference between using IoBuildSynchronousFsdRequest and
> IoBuildAsynchronousFsdRequest when I use with the last one’s completion
> routine an event object and return more processing required then wait for
> the object then complete the request.
>
> A read will be made either synch or asynch after the operation has been
> completed (when completionroutine called).
>
> I might have misunderstood something, hope someone can clarify.
>
> –
> Elias
>
>
>
> —
> Questions? First check the IFS FAQ at
https://www.osronline.com/article.cfm?id=17
>
> You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com