Go에서 GetVolumeInformation WinAPI 함수 호출
문제:
볼륨 검색을 시도하는 중 GetVolumeInformation WinAPI 함수를 사용하여 이름을 지정하면 예기치 않은 오류 오류로 인해 코드가 실패합니다.
답변:
이 오류는 unsafe.Pointer를 잘못 사용하여 발생합니다. 특히 unsafe.Pointer로 변환할 때 변수 이름에서 & 연산자를 제거해야 합니다.
해결 방법:
포인터 문제를 해결하려면 다음과 같이 코드를 수정하세요.
<code class="go">var nVolumeNameSize = uint32(len(VolumeNameBuffer)) ret, _, callErr := syscall.Syscall9(uintptr(getVolume), nargs, uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(RootPathName))), uintptr(unsafe.Pointer(&VolumeNameBuffer[0])), uintptr(nVolumeNameSize), uintptr(unsafe.Pointer(&VolumeSerialNumber)), uintptr(unsafe.Pointer(&MaximumComponentLength)), uintptr(unsafe.Pointer(&FileSystemFlags)), uintptr(unsafe.Pointer(&FileSystemNameBuffer[0])), uintptr(nFileSystemNameSize), 0)</code>
이 수정된 코드는 적절한 포인터를 올바르게 전달하여 오류 오류를 제거하고 볼륨 이름을 검색할 수 있습니다.
위 내용은 unsafe.Pointer와 함께 GetVolumeInformation을 사용할 때 Go 코드가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!