From: Giga Giguashvili [gregoryg@ParadigmGeo.com] Sent: Sunday, September 26, 1999 8:48 AM To: Greenshtain Oren; ntdev@atria.com Subject: Re: [ntdev] IO Request Packet Hi Oren, To hold IRP in your filter driver you should write something like: IoMarkIrpPending(pIrp); IoSetCancelRoutine(pIrp, CancelRoutine); That causes IO Manager not to dispose the IRP and you also take care of IRP cancelation... After you perform the above code, you may do anything that lasts for any time with your IRP. When you are done with your IRP, you should either pass it down the drivers stack or complete it. IoSetCompletionRoutine(...); IoCallDriver(...); or IoCompleteRequest(...); Best regards, Giga. P.S. I suggest you to read some book about driver programming in NT (from OSR for instance) since things are pretty complicated :))) Greenshtain Oren wrote: > > Hello Oren, > > > > In general, IRP can be passed to user mode using memory sharing mechanism > > shown in one of MSDN articles. It must be done before you call > > IoCompleteRequest on that IRP, and you should not complete the IRP till you > > finish working with it. > > *** I ASSUME YOU WRITE FILTER DRIVER OR CREATE YOUR ONW IRP *** > > Hey Giga. you've said something about not completing my IRP at the kernel > mode till i finish working on it in the user mode. that's exactly where > i'm stuck, i have no idea how to halt the irp, till i tell him to wake up > and complete (someone told me something about PENDING but i have no idea > how to use it. > > thanks in advance, > Oren. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [ To unsubscribe, send email to ntdev-request@atria.com with body UNSUBSCRIBE (the subject is ignored). ]