Set a flag in the IRP context when an IRP can wait on locking
svn path=/trunk/; revision=67538
IrpContext->MinorFunction = IoStackLocation->MinorFunction;
IrpContext->IsTopLevel = (IoGetTopLevelIrp() == Irp);
+ if (IoStackLocation->MajorFunction == IRP_MJ_FILE_SYSTEM_CONTROL ||
+ IoStackLocation->MajorFunction == IRP_MJ_DEVICE_CONTROL ||
+ IoStackLocation->MajorFunction == IRP_MJ_SHUTDOWN ||
+ (IoStackLocation->MajorFunction != IRP_MJ_CLEANUP &&
+ IoStackLocation->MajorFunction != IRP_MJ_CLOSE &&
+ IoIsOperationSynchronous(Irp)))
+ {
+ IrpContext->Flags |= IRPCONTEXT_CANWAIT;
+ }
+
return IrpContext;
}
UCHAR Data[1];
} REPARSE_POINT_ATTRIBUTE, *PREPARSE_POINT_ATTRIBUTE;
+#define IRPCONTEXT_CANWAIT 0x1
+
typedef struct
{
NTFSIDENTIFIER Identifier;