X-Git-Url: http://git.jankratochvil.net/?a=blobdiff_plain;f=drivers%2Ffs%2Fvfat%2Fmisc.c;h=36b2f7277d2a18077aba207058092f707692af94;hb=a3df8bf1429570e0bd6c6428f6ed80073578cf4b;hp=ec26c9d639d7d38351d016137bf09e35bf93d585;hpb=7c0db166f81fbe8c8b913d7f26048e337d383605;p=reactos.git diff --git a/drivers/fs/vfat/misc.c b/drivers/fs/vfat/misc.c index ec26c9d..36b2f72 100644 --- a/drivers/fs/vfat/misc.c +++ b/drivers/fs/vfat/misc.c @@ -22,6 +22,46 @@ static LONG QueueCount = 0; +NTSTATUS VfatLockControl( + IN PVFAT_IRP_CONTEXT IrpContext + ) +{ + PVFATFCB Fcb; + NTSTATUS Status; + + DPRINT("VfatLockControl(IrpContext %x)\n", IrpContext); + + assert(IrpContext); + + Fcb = (PVFATFCB)IrpContext->FileObject->FsContext; + + if (IrpContext->DeviceObject == VfatGlobalData->DeviceObject) + { + Status = STATUS_INVALID_DEVICE_REQUEST; + goto Fail; + } + + if (Fcb->entry.Attrib & FILE_ATTRIBUTE_DIRECTORY) + { + Status = STATUS_INVALID_PARAMETER; + goto Fail; + } + + Status = FsRtlProcessFileLock(&Fcb->FileLock, + IrpContext->Irp, + NULL + ); + + VfatFreeIrpContext(IrpContext); + return Status; + +Fail:; + IrpContext->Irp->IoStatus.Status = Status; + IofCompleteRequest(IrpContext->Irp, (CCHAR)(NT_SUCCESS(Status) ? IO_DISK_INCREMENT : IO_NO_INCREMENT)); + VfatFreeIrpContext(IrpContext); + return Status; +} + NTSTATUS VfatDispatchRequest ( IN PVFAT_IRP_CONTEXT IrpContext) { @@ -66,46 +106,6 @@ NTSTATUS VfatDispatchRequest ( } } -NTSTATUS VfatLockControl( - IN PVFAT_IRP_CONTEXT IrpContext - ) -{ - PVFATFCB Fcb; - NTSTATUS Status; - - DPRINT("VfatLockControl(IrpContext %x)\n", IrpContext); - - assert(IrpContext); - - Fcb = (PVFATFCB)IrpContext->FileObject->FsContext; - - if (IrpContext->DeviceObject == VfatGlobalData->DeviceObject) - { - Status = STATUS_INVALID_DEVICE_REQUEST; - goto Fail; - } - - if (Fcb->entry.Attrib & FILE_ATTRIBUTE_DIRECTORY) - { - Status = STATUS_INVALID_PARAMETER; - goto Fail; - } - - Status = FsRtlProcessFileLock(&Fcb->FileLock, - IrpContext->Irp, - NULL - ); - - VfatFreeIrpContext(IrpContext); - return Status; - -Fail:; - IrpContext->Irp->IoStatus.Status = Status; - IofCompleteRequest(IrpContext->Irp, NT_SUCCESS(Status) ? IO_DISK_INCREMENT : IO_NO_INCREMENT); - VfatFreeIrpContext(IrpContext); - return Status; -} - NTSTATUS STDCALL VfatBuildRequest ( IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp) @@ -152,7 +152,7 @@ VOID VfatFreeIrpContext (PVFAT_IRP_CONTEXT IrpContext) PVFAT_IRP_CONTEXT VfatAllocateIrpContext(PDEVICE_OBJECT DeviceObject, PIRP Irp) { PVFAT_IRP_CONTEXT IrpContext; - PIO_STACK_LOCATION Stack; + /*PIO_STACK_LOCATION Stack;*/ UCHAR MajorFunction; DPRINT ("VfatAllocateIrpContext(DeviceObject %x, Irp %x)\n", DeviceObject, Irp);