الحصول على قائمة محركات الأقراص على نظام Windows باستخدام Golang
البحث عن طريقة أكثر فعالية للبحث عبر جميع محركات الأقراص على نظام Windows لـ معين نوع الملف، قد يتساءل مبرمجو Go عما إذا كان من الممكن الحصول تلقائيًا على قائمة بمحركات الأقراص المتوفرة دون إدخال يحدده المستخدم.
الحل باستخدام GetLogicalDrives ومعالجة البت:
لسرد محركات الأقراص على نظام Windows، يمكن للمرء الاستفادة من وظيفة GetLogicalDrives. تُرجع هذه الوظيفة قناع البت حيث يمثل كل بت توفر حرف محرك أقراص من "A" إلى "Z".
إليك مقتطف كود Golang الذي يوضح العملية:
package main
import (
"fmt"
"syscall"
)
func main() {
kernel32, _ := syscall.LoadLibrary("kernel32.dll")
getLogicalDrivesHandle, _ := syscall.GetProcAddress(kernel32, "GetLogicalDrives")
var drives []string
if ret, _, callErr := syscall.Syscall(uintptr(getLogicalDrivesHandle), 0, 0, 0, 0); callErr != 0 {
// handle error
} else {
drives = bitsToDrives(uint32(ret))
}
fmt.Printf("%v", drives)
}
func bitsToDrives(bitMap uint32) (drives []string) {
availableDrives := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
for i := range availableDrives {
if bitMap&1 == 1 {
drives = append(drives, availableDrives[i])
}
bitMap >>= 1
}
return
}
في هذا الكود، يتم استدعاء الدالة GetLogicalDrives للحصول على قناع البت. تتم بعد ذلك معالجة قناع البت باستخدام تقنيات معالجة البت لاستخراج أحرف محركات الأقراص المتوفرة وتخزينها في شريحة محركات الأقراص. من خلال تكرار هذه الشريحة، يمكنك الوصول بسهولة إلى كافة محركات الأقراص المتوفرة على النظام ومعالجتها.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3