الحصول على معلومات حول الجهاز الفعلي من مسار ملف معين

StackOverflow https://stackoverflow.com/questions/115874

  •  02-07-2019
  •  | 
  •  

سؤال

افترض أن لديك مسارًا كاملاً لملف أو مجلد يمكن الوصول إليه على النظام.كيف يمكنني الحصول على نوع من المعرف الفريد للجهاز الفعلي الذي يوجد عليه الملف (أو المجلد) بالفعل؟

كانت محاولتي الأولى للاستخدام 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

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