Golang을 사용하여 Windows에서 드라이브 목록 가져오기
특정 드라이브에 대해 Windows 시스템의 모든 드라이브를 검색하는 보다 효율적인 방법 찾기 파일 형식에 따라 Go 프로그래머는 사용자 지정 입력 없이 사용 가능한 드라이브 목록을 자동으로 얻는 것이 가능한지 궁금할 수 있습니다.
사용하는 솔루션 GetLogicalDrives 및 비트 조작:
Windows 시스템의 드라이브를 나열하려면 GetLogicalDrives 기능을 활용할 수 있습니다. 이 함수는 'A'에서 'Z'까지의 드라이브 문자의 가용성을 나타내는 각 비트가 포함된 비트 마스크를 반환합니다.
다음은 프로세스를 보여주는 Golang 코드 조각입니다.
package main
import (
"fmt"
"syscall"
)
func main() {
kernel32, _ := syscall.LoadLibrary("kernel32.dll")
getLogicalDrivesHandle, _ := syscall.GetProcAddress(kernel32, "GetLogicalDrives")
var drives []string
if ret, _, callErr := syscall.Syscall(uintptr(getLogicalDrivesHandle), 0, 0, 0, 0); callErr != 0 {
// handle error
} else {
drives = bitsToDrives(uint32(ret))
}
fmt.Printf("%v", drives)
}
func bitsToDrives(bitMap uint32) (drives []string) {
availableDrives := []string{"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"}
for i := range availableDrives {
if bitMap&1 == 1 {
drives = append(drives, availableDrives[i])
}
bitMap >>= 1
}
return
}
이 코드에서는 비트 마스크를 얻기 위해 GetLogicalDrives 함수가 호출됩니다. 그런 다음 비트 조작 기술을 사용하여 비트마스크를 처리하여 사용 가능한 드라이브 문자를 추출하고 드라이브 슬라이스에 저장합니다. 이 슬라이스를 반복하면 시스템에서 사용 가능한 모든 드라이브에 쉽게 액세스하고 처리할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3