"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo puedo obtener de manera eficiente una lista de unidades disponibles en Windows usando Golang?

¿Cómo puedo obtener de manera eficiente una lista de unidades disponibles en Windows usando Golang?

Publicado el 2024-11-08
Navegar:550

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

Obtener una lista de unidades en Windows usando Golang

Buscar una forma más eficiente de buscar en todas las unidades de un sistema Windows una unidad específica tipo de archivo, los programadores de Go pueden preguntarse si es posible obtener automáticamente una lista de unidades disponibles sin la entrada especificada por el usuario.

Solución usando GetLogicalDrives y manipulación de bits:

Para enumerar las unidades en un sistema Windows, se puede aprovechar la función GetLogicalDrives. Esta función devuelve una máscara de bits en la que cada bit representa la disponibilidad de una letra de unidad de la 'A' a la 'Z'.

Aquí hay un fragmento de código de Golang que demuestra el proceso:

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
}

En este código, se llama a la función GetLogicalDrives para obtener la máscara de bits. Luego, la máscara de bits se procesa utilizando técnicas de manipulación de bits para extraer las letras de unidad disponibles y almacenarlas en el segmento de unidades. Al recorrer este segmento, puede acceder y procesar fácilmente todas las unidades disponibles en el sistema.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3