Status = FsRtlProcessFileLock(&Fcb->FileLock,
IrpContext->Irp,
NULL);
-
- VfatFreeIrpContext(IrpContext);
return Status;
}
ASSERT(IrpContext);
+ FsRtlEnterFileSystem();
+
switch (IrpContext->MajorFunction)
{
case IRP_MJ_CLOSE:
VfatFreeIrpContext(IrpContext);
}
+ FsRtlExitFileSystem();
+
return Status;
}
}
else
{
- FsRtlEnterFileSystem();
Status = VfatDispatchRequest(IrpContext);
- FsRtlExitFileSystem();
}
return Status;
}
InterlockedDecrement(&QueueCount);
DPRINT("VfatDoRequest(IrpContext %p), MajorFunction %x, %d\n",
IrpContext, ((PVFAT_IRP_CONTEXT)IrpContext)->MajorFunction, QueueCount);
- FsRtlEnterFileSystem();
VfatDispatchRequest((PVFAT_IRP_CONTEXT)IrpContext);
- FsRtlExitFileSystem();
}
static
ASSERT(IrpContext != NULL);
ASSERT(IrpContext->Irp != NULL);
+ ASSERT(!(IrpContext->Flags & IRPCONTEXT_QUEUE) &&
+ (IrpContext->Flags & IRPCONTEXT_COMPLETE));
IrpContext->Flags |= IRPCONTEXT_CANWAIT;
IoMarkIrpPending(IrpContext->Irp);
PVOID
VfatGetUserBuffer(
- IN PIRP Irp)
+ IN PIRP Irp,
+ IN BOOLEAN Paging)
{
ASSERT(Irp);
if (Irp->MdlAddress)
{
- /* This call may be in the paging path, so use maximum priority */
- /* FIXME: call with normal priority in the non-paging path */
- return MmGetSystemAddressForMdlSafe(Irp->MdlAddress, HighPagePriority);
+ return MmGetSystemAddressForMdlSafe(Irp->MdlAddress, (Paging ? HighPagePriority : NormalPagePriority));
}
else
{