Erhalten einer Liste von Laufwerken unter Windows mit Golang
Suche nach einer effizienteren Möglichkeit, alle Laufwerke auf einem Windows-System nach einem bestimmten zu durchsuchen Dateityp, fragen sich Go-Programmierer möglicherweise, ob es möglich ist, automatisch eine Liste der verfügbaren Laufwerke ohne benutzerdefinierte Eingabe zu erhalten.
Lösung mit GetLogicalDrives und Bit-Manipulation:
Zu Um die Laufwerke auf einem Windows-System aufzulisten, kann man die Funktion „GetLogicalDrives“ nutzen. Diese Funktion gibt eine Bitmaske zurück, wobei jedes Bit die Verfügbarkeit eines Laufwerksbuchstabens von „A“ bis „Z“ darstellt.
Hier ist ein Golang-Codeausschnitt, der den Prozess demonstriert:
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
}
In diesem Code wird die Funktion „GetLogicalDrives“ aufgerufen, um die Bitmaske abzurufen. Die Bitmaske wird dann mithilfe von Bitmanipulationstechniken verarbeitet, um die verfügbaren Laufwerksbuchstaben zu extrahieren und sie im Laufwerks-Slice zu speichern. Durch das Durchlaufen dieses Slice können Sie problemlos auf alle verfügbaren Laufwerke im System zugreifen und diese verarbeiten.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3