Are you registering a cancellation routine for this IRP? Have you run the
system with driver verifier? Does it reproduce on W2K with service packs?
Regards,
Tony
Tony Mason
Consulting Partner
OSR Open Systems Resources, Inc.
http://www.osr.com
-----Original Message-----
From: hutchson@us.ibm.com [mailto:hutchson@us.ibm.com]
Sent: Thursday, September 12, 2002 6:34 PM
To: File Systems Developers
Subject: [ntfsd] Completion processing of IRP_MJ_WRITE/IRP_MN_COMPLETE_MDL
On Win2k, no service packs, I’ve encountered a problem with completion
processing in my FSF for an IRP_MJ_WRITE request when IRP_MN_MDL |
IRP_MN_COMPLETE are set (i.e. it’s an IRP originating from SRV). My
dispatch routine sets a completion routine, calls IoMarkIrpPending(), and
returns STATUS_PENDING. My completion routine queues the IRP to a worker
thread and returns STATUS_MORE_PROCESSING_REQUIRED. When the IRP is
processed by the worker thread, in rare instances, the CurrentStack
location is no longer pointing to the stack location for my FSF. It’s
almost like the IRP continues to be processed after I return from my
completion routine, even though I’ve returned
STATUS_MORE_PROCESSING_REQUIRED. Using the debugger, in some cases I’ve
been able to step through the calling of IoCompleteRequest() in my worker
thread completion processing to see the Irp->IoStatus.Status field is set
to STATUS_CANCELED. It’s set to zero before the IoCompleteRequest(). Can
anyone tell me what more I need to do to prevent the IRP from continuing
to be processed after STATUS_MORE_PROCESSING_REQUIRED is returned or some
way to detect it before calling IoCompleteRequest()?
You are currently subscribed to ntfsd as: xxxxx@osr.com
To unsubscribe send a blank email to %%email.unsub%%