سؤال

أحتاج إلى تحديد عدد القطاعات والرؤوس والأسطوانات الموجودة على القرص الفعلي لنظام التشغيل Windows XP برمجيًا.هل يعرف أحد واجهة برمجة التطبيقات (API) لتحديد ذلك؟أين يمكن أن يعرض Windows هذه المعلومات؟

هل كانت مفيدة؟

المحلول

يستخدم DeviceIoControl مع رمز التحكم IOCTL_DISK_GET_DRIVE_GEOMETRY أو IOCTL_DISK_GET_DRIVE_GEOMETRY_EX.

يوجد نموذج للتعليمات البرمجية في MSDN للقيام بذلك هنا.

نصائح أخرى

هناك رمز تحكم يمكنك المرور إليه DeviceIoControl للحصول على هندسة القرص الفعلي.

WMI جيد في هذا أيضًا، لقد استخدمته بنجاح كبير.

using( ManagementClass driveClass = new ManagementClass( "Win32_DiskDrive" ) )
{
    using( ManagementObjectCollection physicalDrives = driveClass.GetInstances( ) )
    {
        foreach( ManagementObject drive in physicalDrives )
        {
            string cylinders = ( string )drive["TotalCylinders"];
            // ... etc ...
            drive.Dispose( );
        }
    }
}

للحصول على قائمة بخصائص محرك الأقراص الإضافية التي يمكنك استخدامها، قم بمراجعة ذلك هذه الصفحة

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