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

Function Ext2FastIoLock

Ext4Fsd/fastio.c:492–598  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

490}
491
492BOOLEAN
493Ext2FastIoLock (
494 IN PFILE_OBJECT FileObject,
495 IN PLARGE_INTEGER FileOffset,
496 IN PLARGE_INTEGER Length,
497 IN PEPROCESS Process,
498 IN ULONG Key,
499 IN BOOLEAN FailImmediately,
500 IN BOOLEAN ExclusiveLock,
501 OUT PIO_STATUS_BLOCK IoStatus,
502 IN PDEVICE_OBJECT DeviceObject
503)
504{
505 BOOLEAN Status = FALSE;
506 PEXT2_FCB Fcb;
507
508 __try {
509
510 FsRtlEnterFileSystem();
511
512 __try {
513
514 if (IsExt2FsDevice(DeviceObject)) {
515 IoStatus->Status = STATUS_INVALID_DEVICE_REQUEST;
516 __leave;
517 }
518
519 Fcb = (PEXT2_FCB) FileObject->FsContext;
520 if (Fcb == NULL || Fcb->Identifier.Type == EXT2VCB) {
521 IoStatus->Status = STATUS_INVALID_PARAMETER;
522 __leave;
523 }
524
525 ASSERT((Fcb->Identifier.Type == EXT2FCB) &&
526 (Fcb->Identifier.Size == sizeof(EXT2_FCB)));
527
528 if (IsDirectory(Fcb)) {
529 DbgBreak();
530 IoStatus->Status = STATUS_INVALID_PARAMETER;
531 __leave;
532 }
533#if EXT2_DEBUG
534 DEBUG(DL_INF, (
535 "Ext2FastIoLock: %s %s %wZ\n",
536 Ext2GetCurrentProcessName(),
537 "FASTIO_LOCK",
538 &Fcb->Mcb->FullName ));
539
540 DEBUG(DL_INF, (
541 "Ext2FastIoLock: Offset: %I64xh Length: %I64xh Key: %u %s%s\n",
542 FileOffset->QuadPart,
543 Length->QuadPart,
544 Key,
545 (FailImmediately ? "FailImmediately " : ""),
546 (ExclusiveLock ? "ExclusiveLock " : "") ));
547#endif
548
549 if (!FsRtlOplockIsFastIoPossible(&Fcb->Oplock)) {

Callers

nothing calls this directly

Calls 2

Ext2IsFastIoPossibleFunction · 0.85
Ext2NtStatusToStringFunction · 0.85

Tested by

no test coverage detected