Windows システムを使用する場合、開発者はオペレーティング システムのファイル システムと対話する必要があることがよくあります。ストレージボリュームに関する情報を取得します。この目的に不可欠な関数の 1 つは、指定されたディスク ボリュームに関する詳細を提供する GetVolumeInformation です。
この記事では、GoLang で GetVolumeInformation 関数を使用して特定のストレージ ボリュームの名前を確認する方法を検討します。
GetVolumeInformation 関数を使用してボリューム名を取得するには、次の手順に従う必要があります:
GoLang で 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)) }
GetVolumeInformation を使用する際に覚えておくべき重要な点の 1 つは、Get VolumeInformation がワイド文字列 (UTF-16) を操作するということです。そのため、関数に渡される文字列と関数から返される文字列がすべて UTF-16 形式であることを確認する必要があります。そうしないと、予期しない結果が生じる可能性があります。
GetVolumeInformation 関数は、GoLang のストレージ ボリュームに関する包括的な情報を取得する効果的な方法を提供します。この記事で説明されている手順に従うことで、ボリューム名やその他の重要な詳細を正常に取得して、アプリケーションのニーズを満たすことができます。
以上がWindows でストレージ ボリュームの名前を取得するには、GoLang の Get VolumeInformation 関数を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。