Cuando trabajan con sistemas Windows, los desarrolladores a menudo encuentran la necesidad de interactuar con el sistema de archivos del sistema operativo y recuperar información sobre volúmenes de almacenamiento. Una función esencial para este propósito es GetVolumeInformation, que proporciona detalles sobre un volumen de disco específico.
En este artículo, exploramos cómo utilizar la función GetVolumeInformation en GoLang para determinar el nombre de un volumen de almacenamiento en particular.
Para recuperar el nombre del volumen usando la función GetVolumeInformation, debemos cumplir con lo siguiente pasos:
Aquí hay un fragmento de código de ejemplo que demuestra cómo usar la función GetVolumeInformation en 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)) }
Un aspecto crucial a recordar al usar GetVolumeInformation es que opera en cadenas de caracteres anchas (UTF-16). Como resultado, debemos asegurarnos de que todas las cadenas pasadas y devueltas por la función estén en formato UTF-16. No hacerlo puede generar resultados inesperados.
La función GetVolumeInformation proporciona una manera efectiva de obtener información completa sobre los volúmenes de almacenamiento en GoLang. Si sigue los pasos descritos en este artículo, podrá recuperar con éxito los nombres de los volúmenes y otros detalles esenciales para satisfacer las necesidades de su aplicación.
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