MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2FastIoUnlockSingle

Function Ext2FastIoUnlockSingle

Ext4Fsd/fastio.c:600–701  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

598}
599
600BOOLEAN
601Ext2FastIoUnlockSingle (
602 IN PFILE_OBJECT FileObject,
603 IN PLARGE_INTEGER FileOffset,
604 IN PLARGE_INTEGER Length,
605 IN PEPROCESS Process,
606 IN ULONG Key,
607 OUT PIO_STATUS_BLOCK IoStatus,
608 IN PDEVICE_OBJECT DeviceObject
609)
610{
611 BOOLEAN Status = FALSE;
612 PEXT2_FCB Fcb;
613
614 __try {
615
616 FsRtlEnterFileSystem();
617
618 __try {
619
620 if (IsExt2FsDevice(DeviceObject)) {
621 IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST;
622 __leave;
623 }
624
625 Fcb = (PEXT2_FCB) FileObject->FsContext;
626 if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) {
627 DbgBreak();
628 IoStatus->Status = STATUS_INVALID_PARAMETER;
629 __leave;
630 }
631
632 ASSERT((Fcb->Identifier.Type == EXT2FCB) &&
633 (Fcb->Identifier.Size == sizeof(EXT2_FCB)));
634
635 if (IsDirectory(Fcb)) {
636 DbgBreak();
637 IoStatus->Status = STATUS_INVALID_PARAMETER;
638 __leave;
639 }
640
641#if EXT2_DEBUG
642 DEBUG(DL_INF, (
643 "Ext2FastIoUnlockSingle: %s %s %wZ\n",
644 (PUCHAR) Process + ProcessNameOffset,
645 "FASTIO_UNLOCK_SINGLE",
646 &Fcb->Mcb->FullName ));
647
648 DEBUG(DL_INF, (
649 "Ext2FastIoUnlockSingle: Offset: %I64xh Length: %I64xh Key: %u\n",
650 FileOffset->QuadPart,
651 Length->QuadPart,
652 Key ));
653#endif
654
655 if (!FsRtlOplockIsFastIoPossible(&Fcb->Oplock)) {
656 __leave;
657 }

Callers

nothing calls this directly

Calls 2

Ext2IsFastIoPossibleFunction · 0.85
Ext2NtStatusToStringFunction · 0.85

Tested by

no test coverage detected