"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني الحصول بكفاءة على قائمة محركات الأقراص المتوفرة في نظام التشغيل Windows باستخدام Golang؟

كيف يمكنني الحصول بكفاءة على قائمة محركات الأقراص المتوفرة في نظام التشغيل Windows باستخدام Golang؟

تم النشر بتاريخ 2024-11-08
تصفح:926

How Can I Efficiently Get a List of Available Drives in Windows Using Golang?

الحصول على قائمة محركات الأقراص على نظام 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