الحصول على معلومات حول الجهاز الفعلي من مسار ملف معين
سؤال
افترض أن لديك مسارًا كاملاً لملف أو مجلد يمكن الوصول إليه على النظام.كيف يمكنني الحصول على نوع من المعرف الفريد للجهاز الفعلي الذي يوجد عليه الملف (أو المجلد) بالفعل؟
كانت محاولتي الأولى للاستخدام System.IO.DriveInfo
والذي يعتمد على وجود حرف محرك الأقراص.لكن مسارات UNC ومحركات أقراص الشبكة المتعددة المعينة لنفس الجهاز الفعلي على الخادم تضيف بعض التعقيدات.على سبيل المثال، تشير جميع هذه المسارات الثلاثة إلى نفس المجلد على نفس الجهاز.
\\myserver\users\brian\public\music\
s:\users\brian\public\music\ (here s:\ is mapped to \\myserver\)
u:\public\users\music\ (here u:\ is mapped to \\myserver\users\brian\)
هدفي في النهاية هو اتباع هذه المسارات المتعددة والإبلاغ عن مقدار مساحة القرص المستخدمة والمجانية على كل جهاز.أريد دمج هذه المسارات الثلاثة في عنصر واحد في التقرير وليس 3 عناصر منفصلة.
هل هناك أي واجهة برمجة تطبيقات Windows يمكنها المساعدة في العثور على هذه المعلومات في ظل أي مسار كامل تعسفي؟
المحلول
يجب أن يوفر لك استدعاء API الفائز ما تحتاجه فيما يتعلق بمساحة القرص
GetDiskFreeSpaceEx
http://msdn.microsoft.com/en-us/library/aa364937(VS.85).aspx
أيضًا، لتحديد ما إذا كانت التعيينات الثلاثة كلها من نفس القرص الفعلي، قم بإجراء اتصال بـ
GetVolumeInformation
ومقارنة الأرقام التسلسلية للحجم الذي تم إرجاعه
http://msdn.microsoft.com/en-us/library/aa364993(VS.85).aspx