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

Function Ext2ProcessUserProperty

Ext4Fsd/devctl.c:566–613  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

564}
565
566NTSTATUS
567Ext2ProcessUserProperty(
568 IN PEXT2_IRP_CONTEXT IrpContext,
569 IN PEXT2_VOLUME_PROPERTY3 Property,
570 IN ULONG Length
571)
572{
573 NTSTATUS Status = STATUS_SUCCESS;
574 PEXT2_VCB Vcb = NULL;
575 PDEVICE_OBJECT DeviceObject = NULL;
576
577 __try {
578
579 ASSERT(IrpContext != NULL);
580 ASSERT((IrpContext->Identifier.Type == EXT2ICX) &&
581 (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT)));
582
583 if (Property->Magic != EXT2_VOLUME_PROPERTY_MAGIC) {
584 Status = STATUS_INVALID_PARAMETER;
585 __leave;
586 }
587
588 DeviceObject = IrpContext->DeviceObject;
589 if (IsExt2FsDevice(DeviceObject)) {
590 Status = Ext2ProcessGlobalProperty(DeviceObject, Property, Length);
591 } else {
592 Vcb = (PEXT2_VCB) DeviceObject->DeviceExtension;
593 if (!((Vcb) && (Vcb->Identifier.Type == EXT2VCB) &&
594 (Vcb->Identifier.Size == sizeof(EXT2_VCB)))) {
595 Status = STATUS_INVALID_PARAMETER;
596 __leave;
597 }
598 Status = Ext2ProcessVolumeProperty(Vcb, Property, Length);
599 }
600
601 if (NT_SUCCESS(Status)) {
602 IrpContext->Irp->IoStatus.Information = Length;
603 }
604
605 } __finally {
606
607 if (!IrpContext->ExceptionInProgress) {
608 Ext2CompleteIrpContext(IrpContext, Status);
609 }
610 }
611
612 return Status;
613}
614
615NTSTATUS
616Ex2ProcessUserPerfStat(

Callers 1

Ext2DeviceControlFunction · 0.85

Calls 3

Ext2CompleteIrpContextFunction · 0.85

Tested by

no test coverage detected