Ao trabalhar com sistemas Windows, os desenvolvedores geralmente encontram a necessidade de interagir com o sistema de arquivos do sistema operacional e recuperar informações sobre volumes de armazenamento. Uma função essencial para essa finalidade é GetVolumeInformation, que fornece detalhes sobre um volume de disco especificado.
Neste artigo, exploramos como utilizar a função GetVolumeInformation no GoLang para determinar o nome de um volume de armazenamento específico.
Para recuperar o nome do volume usando a função GetVolumeInformation, precisamos seguir as seguintes etapas:
Aqui está um trecho de código de exemplo que demonstra como usar a função GetVolumeInformation no GoLang:
package main import ( "fmt" "syscall" "unsafe" ) func main() { var lpRootPathName = "C:\\" var lpVolumeNameBuffer = make([]uint16, syscall.MAX_PATH 1) var nVolumeNameSize = uint32(len(lpVolumeNameBuffer)) var lpVolumeSerialNumber uint32 var lpMaximumComponentLength uint32 var lpFileSystemFlags uint32 var lpFileSystemNameBuffer = make([]uint16, 255) var nFileSystemNameSize uint32 = syscall.MAX_PATH 1 kernel32, _ := syscall.LoadLibrary("kernel32.dll") getVolume, _ := syscall.GetProcAddress(kernel32, "GetVolumeInformationW") var nargs uintptr = 8 ret, _, callErr := syscall.Syscall9(uintptr(getVolume), nargs, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(lpRootPathName))), uintptr(unsafe.Pointer(&lpVolumeNameBuffer[0])), uintptr(nVolumeNameSize), uintptr(unsafe.Pointer(&lpVolumeSerialNumber)), uintptr(unsafe.Pointer(&lpMaximumComponentLength)), uintptr(unsafe.Pointer(&lpFileSystemFlags)), uintptr(unsafe.Pointer(&lpFileSystemNameBuffer[0])), uintptr(nFileSystemNameSize), 0) fmt.Println(ret, callErr, syscall.UTF16ToString(lpVolumeNameBuffer)) }
Um aspecto crucial a ser lembrado ao usar GetVolumeInformation é que ele opera em cadeias de caracteres largas (UTF-16). Como resultado, devemos garantir que todas as strings passadas e retornadas pela função estejam no formato UTF-16. Não fazer isso pode levar a resultados inesperados.
A função GetVolumeInformation fornece uma maneira eficaz de obter informações abrangentes sobre volumes de armazenamento no GoLang. Seguindo as etapas descritas neste artigo, você pode recuperar nomes de volumes e outros detalhes essenciais para atender às necessidades do seu aplicativo.
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