C# ManagementObject返回错误的总扇区数

C# ManagementObject返回错误的总扇区数,c#,C#,此代码给出了错误的扇区数。 我有3个磁盘: 0. 468.862.128 sectors - program shows 7.887.915 1. 3.907.029.168 sectors - program shows 3.907.024.065 2. 7.897.088 sectors - program shows 468.857.025 int driveCount = 0; try { Management

此代码给出了错误的扇区数。
我有3个磁盘:

0.   468.862.128 sectors - program shows     7.887.915  
1. 3.907.029.168 sectors - program shows 3.907.024.065  
2.     7.897.088 sectors - program shows   468.857.025



    int driveCount = 0;
    try
    {
        ManagementObjectSearcher searcher =
            new ManagementObjectSearcher("root\\CIMV2",
            "SELECT * FROM Win32_DiskDrive");

        foreach (ManagementObject queryObj in searcher.Get())
        {
            if (driveCount == drive)
            {
                var t = queryObj["TotalSectors"];
                return long.Parse(t.ToString());

            }
            driveCount++;
        }
    }
    catch (ManagementException)
    {
        return -1;
    }
    return -1;

看起来有些地方大小不一,但值也略有不同,这是错误的

            int driveCount = 0;
            try
            {
                ManagementObjectSearcher searcher =
                    new ManagementObjectSearcher("root\\CIMV2",
                    "SELECT * FROM Win32_DiskDrive");

                driveCount = searcher.Get().Count - 1;
                foreach (ManagementObject queryObj in searcher.Get())
                {
                    if (driveCount == drive)
                    {
                        var t = queryObj["TotalSectors"];
                        return long.Parse(t.ToString());

                    }
                    driveCount--;
                }
            }