سؤال

وعن طريق فكرة من بوب الملك فكرة كتبت الطريقة التالية.

ويعمل كبيرة على الأقراص المدمجة، والأقراص القابلة للإزالة، والأقراص العادية.

ولكن بالنسبة لقرص مرن دائما العودة "غير متوفر". أي أفكار؟

public static void TestFloppy( char driveLetter ) {
    using( var searcher = new ManagementObjectSearcher(  @"SELECT * FROM Win32_LogicalDisk WHERE DeviceID = '" + driveLetter + ":'" ) )
    using( var logicalDisks = searcher.Get() ) {
        foreach( ManagementObject logicalDisk in logicalDisks ) {  
          var fs = logicalDisk[ "FreeSpace" ];
            Console.WriteLine( "FreeSpace = " + ( fs ?? "Not Available" ) );
            logicalDisk.Dispose();
        }
    }
}
هل كانت مفيدة؟

المحلول

وأنا آسف أنني لم يكن لديك إجابة أفضل، ولكن اعتدت أن تفعل الشيء نفسه (استخدم ManagementObjectSearcher) وجدت أن في كل مرة ركض رمز محرك الأقراص المرنة ستفعل نوعا من السعي تسلسل / الحرف الأول.

وبدلا من ذلك لقد غيرت لinterate أدناه و:

ManagementClass comp = new ManagementClass(scope, new ManagementPath(obj), null);
comp.Get();
objs = comp.GetInstances();

وأريد أن أقول هذا هو خطأ معروفة في WMI ولكن للأسف تعليقات التعليمات البرمجية لا تترك أي تلميحات: (

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top