Lorsqu'ils travaillent avec des systèmes Windows, les développeurs ressentent souvent le besoin d'interagir avec le système de fichiers du système d'exploitation et récupérer des informations sur les volumes de stockage. Une fonction essentielle à cet effet est GetVolumeInformation, qui fournit des détails sur un volume de disque spécifié.
Dans cet article, nous explorons comment utiliser la fonction GetVolumeInformation dans GoLang pour déterminer le nom d'un volume de stockage particulier.
Pour récupérer le nom du volume à l'aide de la fonction GetVolumeInformation, nous devons respecter les étapes suivantes :
Voici un exemple d'extrait de code montrant comment utiliser la fonction GetVolumeInformation dans 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 aspect crucial à retenir lors de l'utilisation de GetVolumeInformation est qu'il fonctionne sur des chaînes de caractères larges (UTF-16). Par conséquent, nous devons nous assurer que toutes les chaînes transmises et renvoyées par la fonction sont au format UTF-16. Ne pas le faire peut entraîner des résultats inattendus.
La fonction GetVolumeInformation fournit un moyen efficace d'obtenir des informations complètes sur les volumes de stockage dans GoLang. En suivant les étapes décrites dans cet article, vous pouvez récupérer avec succès les noms de volumes et d'autres détails essentiels pour répondre aux besoins de votre application.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3