جهاز تخزين USB Serialnumber من برنامج تشغيل Minifilter (من واصف جهاز USB)
-
29-09-2019 - |
سؤال
أرغب في استخراج الرقم التسلسلي لجهاز تخزين USB من داخل برنامج تشغيل نظام ملفات Minifilter ، داخل رد الاتصال على الحالات باستخدام التقنية الموصوفة هنا الفرق الوحيد هو أنني أفعل ذلك في وضع kernel.
أنا أستعمل:
status = IoGetDeviceInterfaces(
&GUID_DEVINTERFACE_DISK,
NULL,
0,
&SymbolicLinkList
);
لتعداد واجهات محتملة (مثال على ذلك):
\??\SCSI#Disk&Ven_VMware_&Prod_VMware_Virtual_S&Rev_1.0#4&5fcaafc&0&000#{53f56307 -b6bf-11d0-94f2-00a0c91efb8b}
\??\USBSTOR#Disk&Ven_Kingston&Prod_DataTraveler_C10&Rev_1.00#001D92AD7568F030E3CC 0AFC&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}
\??\USBSTOR#Disk&Ven_USB_2.0&Prod_Flash_Disk&Rev_1100#AA04012700007777&0#{53f5630 7-b6bf-11d0-94f2-00a0c91efb8b}
وأريد أن أجد أي واحد منهم هو واجهة وحدة التخزين الخاصة بي عن طريق IOCTL_Storage_get_Device_Number.
لقد جربت Zwcreatefile & zwdeviceiocontrolfile لكن zwcreatefile إرجاع status_object_name_invalid.
كيف يمكنني إرسال IOCTLs إلى هذه الواجهات؟ في وضع المستخدم ، كل شيء على ما يرام ولكن في وضع kernel يفشل!
المحلول 2
لقد قمت بحل المشكلة المزعجة من خلال تفويض الحوسبة إلى خدمة وضع المستخدم والتحدث عبر منفذ. عرجاء ولكن مفيدة حقا.
نصائح أخرى
يجب عليك تغيير ؟؟ إلى dosdevices في أسماء الأجهزة. ينبغي أن يحل مشكلتك.