"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso obter com eficiência uma lista de unidades disponíveis no Windows usando Golang?

Como posso obter com eficiência uma lista de unidades disponíveis no Windows usando Golang?

Publicado em 2024-11-08
Navegar:124

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

Obtendo uma lista de unidades no Windows usando Golang

Buscando uma maneira mais eficiente de pesquisar em todas as unidades em um sistema Windows por um determinado tipo de arquivo, os programadores Go podem se perguntar se é possível obter automaticamente uma lista de unidades disponíveis sem entrada especificada pelo usuário.

Solução usando GetLogicalDrives e manipulação de bits:

Para listar as unidades em um sistema Windows, pode-se aproveitar a função GetLogicalDrives. Esta função retorna uma máscara de bits com cada bit representando a disponibilidade de uma letra de unidade de 'A' a 'Z.'

Aqui está um trecho de código Golang que demonstra o processo:

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
}

Neste código, a função GetLogicalDrives é chamada para obter a máscara de bits. A máscara de bits é então processada usando técnicas de manipulação de bits para extrair as letras de unidade disponíveis e armazená-las na fatia das unidades. Ao iterar por essa fatia, você pode acessar e processar facilmente todas as unidades disponíveis no sistema.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3