Windows 시스템을 사용할 때 개발자는 종종 운영 체제의 파일 시스템과 상호 작용하고 스토리지 볼륨에 대한 정보를 검색합니다. 이 목적을 위한 필수 기능 중 하나는 지정된 디스크 볼륨에 대한 세부 정보를 제공하는 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을 사용할 때 기억해야 할 중요한 측면 중 하나는 와이드 문자열(UTF-16)에서 작동한다는 것입니다. 결과적으로 함수에 전달되고 함수에서 반환되는 모든 문자열이 UTF-16 형식인지 확인해야 합니다. 그렇지 않으면 예상치 못한 결과가 발생할 수 있습니다.
GetVolumeInformation 함수는 GoLang의 저장소 볼륨에 대한 포괄적인 정보를 얻는 효과적인 방법을 제공합니다. 이 문서에 설명된 단계를 따르면 애플리케이션 요구 사항에 맞게 볼륨 이름과 기타 필수 세부 정보를 성공적으로 검색할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3