在使用Windows 系統時,開發人員經常會發現需要與作業系統的檔案系統互動並取得卷名稱。檢索有關儲存卷的資訊。為此目的的一個重要函數是 GetVolumeInformation,它提供有關指定磁碟區的詳細資訊。
在本文中,我們將探討如何利用 GoLang 中的 GetVolumeInformation 函數來決定特定儲存磁碟區的名稱。
要使用GetVolumeInformation 函數檢索卷名稱,我們需要遵循以下步驟:
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)) }
以上是如何使用 GoLang 中的 GetVolumeInformation 函數檢索 Windows 中的儲存磁碟區名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!