Hold on irp for later processing

Hello all!
I have a file system filter driver and on IRP_MJ_WRITE I’d like to hold the
irp till I make some checks for the file. But I don’t know the correct way
to keep the irp for later processing without stopping all other incoming
Irps. If I mark Irp as pending how I can later restore it? Is it possible if
I queue the Irp in an internal device queue?
I appreciate any suggestions and ideas!
Thanks


Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

You have to call IoMarkIrpPending(Irp), queue the Irp internally
(using worker or some dedicated thread) and return STATUS_PENDING.
Any additional processing will be done in the worker thread context.
Your processing will end by either completing the request
(by IoCompleteRequest) or calling the next lower driver
(by IoCallDriver).

Paul

-----P?vodn? zpr?va-----
Od: Jack Brown [SMTP:xxxxx@hotmail.com]
Odesl?no: Monday, August 21, 2000 3:33 PM
Komu: File Systems Developers
P?edm?t: [ntfsd] Hold on irp for later processing

Hello all!
I have a file system filter driver and on IRP_MJ_WRITE I’d like to hold
the
irp till I make some checks for the file. But I don’t know the correct way

to keep the irp for later processing without stopping all other incoming
Irps. If I mark Irp as pending how I can later restore it? Is it possible
if
I queue the Irp in an internal device queue?
I appreciate any suggestions and ideas!
Thanks


Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com


You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
To unsubscribe send a blank email to $subst(‘Email.Unsub’)

Do you mean to queue the irp by IoStartPacket by setting the Thread field in
the Irp to point to the worker or dedicated thread?

From: Pavel Hrdina
>Reply-To: “File Systems Developers”
>To: “File Systems Developers”
>Subject: [ntfsd] RE: Hold on irp for later processing
>Date: Mon, 21 Aug 2000 18:08:22 +0200
>
>You have to call IoMarkIrpPending(Irp), queue the Irp internally
>(using worker or some dedicated thread) and return STATUS_PENDING.
>Any additional processing will be done in the worker thread context.
>Your processing will end by either completing the request
>(by IoCompleteRequest) or calling the next lower driver
>(by IoCallDriver).
>
>Paul
>
> > -----Pùvodní zpráva-----
> > Od: Jack Brown [SMTP:xxxxx@hotmail.com]
> > Odesláno: Monday, August 21, 2000 3:33 PM
> > Komu: File Systems Developers
> > Pøedmìt: [ntfsd] Hold on irp for later processing
> >
> > Hello all!
> > I have a file system filter driver and on IRP_MJ_WRITE I’d like to hold
> > the
> > irp till I make some checks for the file. But I don’t know the correct
>way
> >
> > to keep the irp for later processing without stopping all other incoming
> > Irps. If I mark Irp as pending how I can later restore it? Is it
>possible
> > if
> > I queue the Irp in an internal device queue?
> > I appreciate any suggestions and ideas!
> > Thanks
> >
> >
> > Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
> >
> >
> > —
> > You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
> > To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>
>—
>You are currently subscribed to ntfsd as: xxxxx@hotmail.com
>To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>


Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

No.
This method is preferred for device drivers.
But file system drivers usually manage their
own IRP queue. Try to look into FastFat sources
(IFS Kit) for more details.

Paul

PS: But I’m not saying your method will not work.
Your is the decision whitch path you’ll follow.

-----P?vodn? zpr?va-----
Od: Jack Brown [SMTP:xxxxx@hotmail.com]
Odesl?no: Monday, August 21, 2000 7:26 PM
Komu: File Systems Developers
P?edm?t: [ntfsd] RE: Hold on irp for later processing

Do you mean to queue the irp by IoStartPacket by setting the Thread field
in
the Irp to point to the worker or dedicated thread?

>From: Pavel Hrdina
> >Reply-To: “File Systems Developers”
> >To: “File Systems Developers”
> >Subject: [ntfsd] RE: Hold on irp for later processing
> >Date: Mon, 21 Aug 2000 18:08:22 +0200
> >
> >You have to call IoMarkIrpPending(Irp), queue the Irp internally
> >(using worker or some dedicated thread) and return STATUS_PENDING.
> >Any additional processing will be done in the worker thread context.
> >Your processing will end by either completing the request
> >(by IoCompleteRequest) or calling the next lower driver
> >(by IoCallDriver).
> >
> >Paul
> >
> > > -----P?vodn? zpr?va-----
> > > Od: Jack Brown [SMTP:xxxxx@hotmail.com]
> > > Odesl?no: Monday, August 21, 2000 3:33 PM
> > > Komu: File Systems Developers
> > > P?edm?t: [ntfsd] Hold on irp for later processing
> > >
> > > Hello all!
> > > I have a file system filter driver and on IRP_MJ_WRITE I’d like to
> hold
> > > the
> > > irp till I make some checks for the file. But I don’t know the correct
>
> >way
> > >
> > > to keep the irp for later processing without stopping all other
> incoming
> > > Irps. If I mark Irp as pending how I can later restore it? Is it
> >possible
> > > if
> > > I queue the Irp in an internal device queue?
> > > I appreciate any suggestions and ideas!
> > > Thanks
> > >
> > >
>
> > > Get Your Private, Free E-mail from MSN Hotmail at
> http://www.hotmail.com
> > >
> > >
> > > —
> > > You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
> > > To unsubscribe send a blank email to $subst(‘Email.Unsub’)
> >
> >—
> >You are currently subscribed to ntfsd as: xxxxx@hotmail.com
> >To unsubscribe send a blank email to $subst(‘Email.Unsub’)
> >
>
>

> Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
>
>
> —
> You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
> To unsubscribe send a blank email to $subst(‘Email.Unsub’)

Thanks a lot Paul!
I’ll try both of the ways and see which one is more suitable for me!

Jack

From: Pavel Hrdina
>Reply-To: “File Systems Developers”
>To: “File Systems Developers”
>Subject: [ntfsd] RE: Hold on irp for later processing
>Date: Mon, 21 Aug 2000 20:02:01 +0200
>
>No.
>This method is preferred for device drivers.
>But file system drivers usually manage their
>own IRP queue. Try to look into FastFat sources
>(IFS Kit) for more details.
>
>Paul
>
>PS: But I’m not saying your method will not work.
> Your is the decision whitch path you’ll follow.
>
> > -----Pùvodní zpráva-----
> > Od: Jack Brown [SMTP:xxxxx@hotmail.com]
> > Odesláno: Monday, August 21, 2000 7:26 PM
> > Komu: File Systems Developers
> > Pøedmìt: [ntfsd] RE: Hold on irp for later processing
> >
> > Do you mean to queue the irp by IoStartPacket by setting the Thread
>field
> > in
> > the Irp to point to the worker or dedicated thread?
> >
> >
> > >From: Pavel Hrdina
> > >Reply-To: “File Systems Developers”
> > >To: “File Systems Developers”
> > >Subject: [ntfsd] RE: Hold on irp for later processing
> > >Date: Mon, 21 Aug 2000 18:08:22 +0200
> > >
> > >You have to call IoMarkIrpPending(Irp), queue the Irp internally
> > >(using worker or some dedicated thread) and return STATUS_PENDING.
> > >Any additional processing will be done in the worker thread context.
> > >Your processing will end by either completing the request
> > >(by IoCompleteRequest) or calling the next lower driver
> > >(by IoCallDriver).
> > >
> > >Paul
> > >
> > > > -----Pùvodní zpráva-----
> > > > Od: Jack Brown [SMTP:xxxxx@hotmail.com]
> > > > Odesláno: Monday, August 21, 2000 3:33 PM
> > > > Komu: File Systems Developers
> > > > Pøedmìt: [ntfsd] Hold on irp for later processing
> > > >
> > > > Hello all!
> > > > I have a file system filter driver and on IRP_MJ_WRITE I’d like to
> > hold
> > > > the
> > > > irp till I make some checks for the file. But I don’t know the
>correct
> >
> > >way
> > > >
> > > > to keep the irp for later processing without stopping all other
> > incoming
> > > > Irps. If I mark Irp as pending how I can later restore it? Is it
> > >possible
> > > > if
> > > > I queue the Irp in an internal device queue?
> > > > I appreciate any suggestions and ideas!
> > > > Thanks
> > > >
> > > >
> >
> > > > Get Your Private, Free E-mail from MSN Hotmail at
> > http://www.hotmail.com
> > > >
> > > >
> > > > —
> > > > You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
> > > > To unsubscribe send a blank email to $subst(‘Email.Unsub’)
> > >
> > >—
> > >You are currently subscribed to ntfsd as: xxxxx@hotmail.com
> > >To unsubscribe send a blank email to $subst(‘Email.Unsub’)
> > >
> >
> >

> > Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
> >
> >
> > —
> > You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
> > To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>
>—
>You are currently subscribed to ntfsd as: xxxxx@hotmail.com
>To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>

________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com

Here is my driver that uses a thread to queue IRP.

Jamey

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com]On Behalf Of Pavel Hrdina
Sent: Monday, August 21, 2000 11:02 AM
To: File Systems Developers
Subject: [ntfsd] RE: Hold on irp for later processing

No.
This method is preferred for device drivers.
But file system drivers usually manage their
own IRP queue. Try to look into FastFat sources
(IFS Kit) for more details.

Paul

PS: But I’m not saying your method will not work.
Your is the decision whitch path you’ll follow.

> -----Pùvodní zpráva-----
> Od: Jack Brown [SMTP:xxxxx@hotmail.com]
> Odesláno: Monday, August 21, 2000 7:26 PM
> Komu: File Systems Developers
> Pøedmìt: [ntfsd] RE: Hold on irp for later processing
>
> Do you mean to queue the irp by IoStartPacket by setting the
Thread field
> in
> the Irp to point to the worker or dedicated thread?
>
>
> >From: Pavel Hrdina
> > >Reply-To: “File Systems Developers”
> > >To: “File Systems Developers”
> > >Subject: [ntfsd] RE: Hold on irp for later processing
> > >Date: Mon, 21 Aug 2000 18:08:22 +0200
> > >
> > >You have to call IoMarkIrpPending(Irp), queue the Irp internally
> > >(using worker or some dedicated thread) and return STATUS_PENDING.
> > >Any additional processing will be done in the worker thread context.
> > >Your processing will end by either completing the request
> > >(by IoCompleteRequest) or calling the next lower driver
> > >(by IoCallDriver).
> > >
> > >Paul
> > >
> > > > -----Pùvodní zpráva-----
> > > > Od: Jack Brown [SMTP:xxxxx@hotmail.com]
> > > > Odesláno: Monday, August 21, 2000 3:33 PM
> > > > Komu: File Systems Developers
> > > > Pøedmìt: [ntfsd] Hold on irp for later processing
> > > >
> > > > Hello all!
> > > > I have a file system filter driver and on IRP_MJ_WRITE I’d like to
> > hold
> > > > the
> > > > irp till I make some checks for the file. But I don’t know
> the correct
> >
> > >way
> > > >
> > > > to keep the irp for later processing without stopping all other
> > incoming
> > > > Irps. If I mark Irp as pending how I can later restore it? Is it
> > >possible
> > > > if
> > > > I queue the Irp in an internal device queue?
> > > > I appreciate any suggestions and ideas!
> > > > Thanks
> > > >
> > > >
> >
> > > > Get Your Private, Free E-mail from MSN Hotmail at
> > http://www.hotmail.com
> > > >
> > > >
> > > > —
> > > > You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
> > > > To unsubscribe send a blank email to $subst(‘Email.Unsub’)
> > >
> > >—
> > >You are currently subscribed to ntfsd as: xxxxx@hotmail.com
> > >To unsubscribe send a blank email to $subst(‘Email.Unsub’)
> > >
> >
> >

> > Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com
> >
> >
> > —
> > You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
> > To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>
> —
> You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to $subst(‘Email.Unsub’)
>

Special thanks Jamey!

From: “Jamey Kirby”
>Reply-To: “File Systems Developers”
>To: “File Systems Developers”
>Subject: [ntfsd] RE: Hold on irp for later processing
>Date: Mon, 21 Aug 2000 12:04:39 -0700
>
>Here is my driver that uses a thread to queue IRP.
>
>
>
>Jamey
>
>
>
> > -----Original Message-----
> > From: xxxxx@lists.osr.com
> > [mailto:xxxxx@lists.osr.com]On Behalf Of Pavel Hrdina
> > Sent: Monday, August 21, 2000 11:02 AM
> > To: File Systems Developers
> > Subject: [ntfsd] RE: Hold on irp for later processing
> >
> >
> > No.
> > This method is preferred for device drivers.
> > But file system drivers usually manage their
> > own IRP queue. Try to look into FastFat sources
> > (IFS Kit) for more details.
> >
> > Paul
> >
> > PS: But I’m not saying your method will not work.
> > Your is the decision whitch path you’ll follow.
> >
> > > -----Pùvodní zpráva-----
> > > Od: Jack Brown [SMTP:xxxxx@hotmail.com]
> > > Odesláno: Monday, August 21, 2000 7:26 PM
> > > Komu: File Systems Developers
> > > Pøedmìt: [ntfsd] RE: Hold on irp for later processing
> > >
> > > Do you mean to queue the irp by IoStartPacket by setting the
> > Thread field
> > > in
> > > the Irp to point to the worker or dedicated thread?
> > >
> > >
> > > >From: Pavel Hrdina
> > > >Reply-To: “File Systems Developers”
> > > >To: “File Systems Developers”
> > > >Subject: [ntfsd] RE: Hold on irp for later processing
> > > >Date: Mon, 21 Aug 2000 18:08:22 +0200
> > > >
> > > >You have to call IoMarkIrpPending(Irp), queue the Irp internally
> > > >(using worker or some dedicated thread) and return STATUS_PENDING.
> > > >Any additional processing will be done in the worker thread context.
> > > >Your processing will end by either completing the request
> > > >(by IoCompleteRequest) or calling the next lower driver
> > > >(by IoCallDriver).
> > > >
> > > >Paul
> > > >
> > > > > -----Pùvodní zpráva-----
> > > > > Od: Jack Brown [SMTP:xxxxx@hotmail.com]
> > > > > Odesláno: Monday, August 21, 2000 3:33 PM
> > > > > Komu: File Systems Developers
> > > > > Pøedmìt: [ntfsd] Hold on irp for later processing
> > > > >
> > > > > Hello all!
> > > > > I have a file system filter driver and on IRP_MJ_WRITE I’d like to
> > > hold
> > > > > the
> > > > > irp till I make some checks for the file. But I don’t know
> > the correct
> > >
> > > >way
> > > > >
> > > > > to keep the irp for later processing without stopping all other
> > > incoming
> > > > > Irps. If I mark Irp as pending how I can later restore it? Is it
> > > >possible
> > > > > if
> > > > > I queue the Irp in an internal device queue?
> > > > > I appreciate any suggestions and ideas!
> > > > > Thanks
> > > > >
> > > > >
> > >
>
> > > > > Get Your Private, Free E-mail from MSN Hotmail at
> > > http://www.hotmail.com
> > > > >
> > > > >
> > > > > —
> > > > > You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
> > > > > To unsubscribe send a blank email to
>$subst(‘Email.Unsub’)
> > > >
> > > >—
> > > >You are currently subscribed to ntfsd as: xxxxx@hotmail.com
> > > >To unsubscribe send a blank email to $subst(‘Email.Unsub’)
> > > >
> > >
> > >
>

> > > Get Your Private, Free E-mail from MSN Hotmail at
>http://www.hotmail.com
> > >
> > >
> > > —
> > > You are currently subscribed to ntfsd as: xxxxx@sodatsw.cz
> > > To unsubscribe send a blank email to $subst(‘Email.Unsub’)
> >
> > —
> > You are currently subscribed to ntfsd as: xxxxx@storagecraft.com
> > To unsubscribe send a blank email to $subst(‘Email.Unsub’)
> >
><< SCVDISK.C >>
><< SCVDISK.H >>

________________________________________________________________________
Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com