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

Function Ex2ProcessUserPerfStat

Ext4Fsd/devctl.c:615–693  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

613}
614
615NTSTATUS
616Ex2ProcessUserPerfStat(
617 IN PEXT2_IRP_CONTEXT IrpContext,
618 IN PEXT2_QUERY_PERFSTAT QueryPerf,
619 IN ULONG Length
620)
621{
622 PEXT2_VCB Vcb = NULL;
623 PDEVICE_OBJECT DeviceObject = NULL;
624
625 BOOLEAN GlobalDataResourceAcquired = FALSE;
626 NTSTATUS Status = STATUS_SUCCESS;
627
628 __try {
629
630 ASSERT(IrpContext != NULL);
631 ASSERT((IrpContext->Identifier.Type == EXT2ICX) &&
632 (IrpContext->Identifier.Size == sizeof(EXT2_IRP_CONTEXT)));
633
634 DeviceObject = IrpContext->DeviceObject;
635 if (IsExt2FsDevice(DeviceObject)) {
636
637 if (QueryPerf->Magic != EXT2_QUERY_PERFSTAT_MAGIC) {
638 Status = STATUS_INVALID_PARAMETER;
639 __leave;
640 }
641
642 if (QueryPerf->Command != IOCTL_APP_QUERY_PERFSTAT) {
643 Status = STATUS_INVALID_PARAMETER;
644 __leave;
645 }
646
647 if (Length != EXT2_QUERY_PERFSTAT_SZV1 &&
648 Length != EXT2_QUERY_PERFSTAT_SZV2) {
649 Status = STATUS_INVALID_PARAMETER;
650 __leave;
651 }
652
653 ExAcquireResourceSharedLite(&Ext2Global->Resource, TRUE);
654 GlobalDataResourceAcquired = TRUE;
655
656 if (Length == EXT2_QUERY_PERFSTAT_SZV2) {
657 QueryPerf->Flags = EXT2_QUERY_PERFSTAT_VER2;
658 QueryPerf->PerfStatV2 = Ext2Global->PerfStat;
659 } else {
660 memcpy(&QueryPerf->PerfStatV1.Irps[0], &Ext2Global->PerfStat.Irps[0],
661 FIELD_OFFSET(EXT2_PERF_STATISTICS_V1, Unit));
662 memcpy(&QueryPerf->PerfStatV1.Unit, &Ext2Global->PerfStat.Unit,
663 sizeof(EXT2_STAT_ARRAY_V1));
664 memcpy(&QueryPerf->PerfStatV1.Current, &Ext2Global->PerfStat.Current,
665 sizeof(EXT2_STAT_ARRAY_V1));
666 memcpy(&QueryPerf->PerfStatV1.Size, &Ext2Global->PerfStat.Size,
667 sizeof(EXT2_STAT_ARRAY_V1));
668 memcpy(&QueryPerf->PerfStatV1.Total, &Ext2Global->PerfStat.Total,
669 sizeof(EXT2_STAT_ARRAY_V1));
670 }
671
672 } else {

Callers 1

Ext2DeviceControlFunction · 0.85

Calls 1

Ext2CompleteIrpContextFunction · 0.85

Tested by

no test coverage detected