asynchronous I/O operations

Hai All,

If I want to support asynchronous I/O operations in my driver is it enough
to return STATUS_PENDING after calling IoMarkIrpPending() for the actual
request and then complete the actual IRP(request) by
IoCompleteRequest(Irp,IO_NO_INCREMENT) in other thread. Does I need to do
anything else.

Any information would be helpful.

Thanx in advance.
Kedar.

> If I want to support asynchronous I/O operations in my driver is it
enough

to return STATUS_PENDING after calling IoMarkIrpPending() for the
actual
request and then complete the actual IRP(request) by
IoCompleteRequest(Irp,IO_NO_INCREMENT) in other thread. Does I need
to do

This is enough.

Max

Max,
Thanx for your information.
I was able to return status pending and queue the request in the driver
but when I completed the actual IRP by calling the IOCompleteRequest()
from the driver, then the application which issued readfile() with the
overlapped structure is not getting the status IO completed here in the
application the GetOverlappedResult is always giving ERROR_IO_INCOMPLETE.
Could you plese tell if I am missing anything.

Thanx
Kedar.

> If I want to support asynchronous I/O operations in my driver is it
enough
> to return STATUS_PENDING after calling IoMarkIrpPending() for the
actual
> request and then complete the actual IRP(request) by
> IoCompleteRequest(Irp,IO_NO_INCREMENT) in other thread. Does I need
to do

6+

Max

Are you assigning the IRP’s IoStatus block?

Irp->IoStatus.Status = status;
Irp->IoStatus.Information = information;
IoCompleteRequest( Irp, priorityBoost );

– Demyn

wrote in message news:xxxxx@ntfsd…
>
> Max,
> Thanx for your information.
> I was able to return status pending and queue the request in the driver
> but when I completed the actual IRP by calling the IOCompleteRequest()
> from the driver, then the application which issued readfile() with the
> overlapped structure is not getting the status IO completed here in the
> application the GetOverlappedResult is always giving ERROR_IO_INCOMPLETE.
> Could you plese tell if I am missing anything.
>
> Thanx
> Kedar.
>
> > > If I want to support asynchronous I/O operations in my driver is it
> > enough
> > > to return STATUS_PENDING after calling IoMarkIrpPending() for the
> > actual
> > > request and then complete the actual IRP(request) by
> > > IoCompleteRequest(Irp,IO_NO_INCREMENT) in other thread. Does I need
> > to do
> >
> > 6+
>
>
>
>
>
>
> >
> > Max
>
>

Demyn,

Yes, I am doing the same.

Kedar.

Are you assigning the IRP’s IoStatus block?

Irp->IoStatus.Status = status;
Irp->IoStatus.Information = information;
IoCompleteRequest( Irp, priorityBoost );

– Demyn

wrote in message news:xxxxx@ntfsd…
> >
> > Max,
> > Thanx for your information.
> > I was able to return status pending and queue the request in the driver
> > but when I completed the actual IRP by calling the IOCompleteRequest()
> > from the driver, then the application which issued readfile() with the
> > overlapped structure is not getting the status IO completed here in the
> > application the GetOverlappedResult is always giving ERROR_IO_INCOMPLETE.
> > Could you plese tell if I am missing anything.
> >
> > Thanx
> > Kedar.
> >
> > > > If I want to support asynchronous I/O operations in my driver is it
> > > enough
> > > > to return STATUS_PENDING after calling IoMarkIrpPending() for the
> > > actual
> > > > request and then complete the actual IRP(request) by
> > > > IoCompleteRequest(Irp,IO_NO_INCREMENT) in other thread. Does I need
> > > to do
> > >
> > > 6+
> >
> >
> >
> >
> >
> >
> > >
> > > Max
> >
> >