ابحث عن محرك الأقراص الذي يتوافق مع جهاز تخزين كتلة USB في WinXP

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

سؤال

لدي العديد من محركات أقراص USB متصلة بجهاز كمبيوتر WinXP SP3، وأحتاج إلى إخبارهم بصرف النظر - أحتاج إلى العثور على حرف محرك الأقراص يتوافق مع الجهاز (في هذه الحالة، جهاز واحد ~ وحدة تخزين واحدة). يمكنني الحصول على معرفات حجمها وقيادة الحروف باستخدام mountvol, ، تبحث شيئا مثل هذا:

C:\WINDOWS\> mountvol
\\?\Volume{bdb681b2-1ddf-11dd-bf71-806d6172696f}\
    C:\

\\?\Volume{6a8784f8-7406-11dd-a8c3-001e8c829b67}\
    A:\

أيضا، باستخدام ديفكون أو مدير الجهاز، أستطيع أن أرى معرفات الجهاز:

C:\WINDOWS\> devcon resources *STOR*
STORAGE\REMOVABLEMEDIA\7&190C24E5&0&RM
    Name: Generic volume
STORAGE\VOLUME\1&30A96598&0&SIGNATURED84ED84EOFFSET7E00LENGTH2543150400
    Name: Generic volume
USBSTOR\DISK&VEN_KINGSTON&PROD_DATATRAVELER2.0&REV_1.00\0803240752536&0
    Name: Kingston DataTraveler2.0 USB Device

ومع ذلك، لم أجد طريقة لربط معرف الجهاز ومعرف وحدة التخزين / الحرف، مثل مربع حوار "إزالة الأجهزة بأمان" (لذلك أفترض أنه ممكن):

Generic volume - A:
(مصدر: piskvor.org.)

كما قد ترى، هذه هي نفس الأجهزة التي أراها في Devcon ونفس الحجم الذي يراه MountVol؛ ولكن حتى الآن لم أجد الرابط بينهما.

لقد وجدت بعضا ذات صلة أسئلة, ، ولكن يبدو أن تلك تستخدم النهج "مهما وجدت أولا هو جهاز USB الخاص بك"، وهو غير مفيد للغاية في حالتي، حيث سيكون هناك العديد من الأجهزة المشابهة (نفس البائع، في كثير من الأحيان نوع المنتج في كثير من الأحيان).


يحرر:

alters.الإجابة تبدو واعدة: على XP، HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices لديها REG_BINARY القيم \DosDevices\x: (أين x هو [AZ])؛ التعليق هو اسم (UTF-16) للجهاز الصحيح (على سبيل المثال
\DosDevices\A: = "\??\STORAGE#RemovableMedia#7&190c24e5&0&RM#{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}\", ، الذي يتوافق مع
STORAGE\REMOVABLEMEDIA\7&190C24E5&0&RM ينظر أعلاه في قائمة الجهاز).

سوف نرى ما إذا كانت هذه هي الطريقة للذهاب.

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

المحلول

إنه سؤال غير تافه. لا يوجد API الرسمي لذلك، بقدر ما أستطيع أن أقول. لذلك، تحتاج إلى API غير موثقة: التسجيل. HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices يحتوي على إدخالات لكلا حرف محرك الأقراص ومعرفات الصوت. إذا نظرت إلى البيانات الفعلية، ستجد أنه يحدد محرك الأقراص. انظر إلى البيانات الثنائية كسلسلة Unicode. سوف يشير لك إلى HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ENUM\. وبعد ومع ذلك، تختلف XP و Vista في بالضبط ما يتم الرجوع إليه الفرعية المفاتيحية هناك، وكيف. (Vista أسهل، لذلك حاول ذلك أولا).

نصائح أخرى

هناك API الرسمي للقيام بذلك. انظر هذه العينة:http://www.codeProject.com/kb/system/removedrivebyletter.aspx.

المبدأ هو أن كل وحدة تخزين وحدة تخزين على Windows تم تعيين رقم عالمي. أولا، تسأل محرك الأقراص الخاص بك عن رقمها (عن طريق فتح " x:" وإرسال IOCTL_STORAGE_GET_DEVICE_NUMBER طلب). ثانيا، تذهب إلى جميع أجهزة القرص واطلب من كل واحد عن رقمها (عن طريق فتحه، من خلال مسار مختلف، لذلك لا يمكنك فقط تحديد مقارنة).

بمجرد العثور على جهاز قرص يحمل نفس الرقم الذي تساعد فيه محرك الأقراص، فأنت تعلم أن يكون لديك فائز.

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