使用Go API 確定Windows 中的驅動器容量
在上一個問題中,您尋求有關使用Windows 獲取Go 中的可用磁碟空間的指導API 呼叫。此回應示範如何使用 kernel32.dll 中的 GetDiskFreeSpaceExW() 函數來擷取此資訊。
為了進一步探索,您現在希望確定特定磁碟機(例如 C:)的總大小。 GetDiskFreeSpaceExW()函數也可以滿足這個需求。
GetDiskFreeSpaceExW()的簽章
函數的簽章如下:
BOOL GetDiskFreeSpaceExW( LPCWSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes );
它接受一個內參數(驅動路徑)並傳回三子個外參數:自由呼叫者可用的位元組數、磁碟的總大小以及總的可用位元組數。
Go 中的用法
要在 Go中使用此函數,您可以按照這些步驟:
kernelDLL := syscall.MustLoadDLL("kernel32.dll")
GetDiskFreeSpaceExW := kernelDLL.MustFindProc("GetDiskFreeSpaceExW")
var free, total, avail int64
path := "c:\" r1, r2, lastErr := GetDiskFreeSpaceExW.Call( uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(path))), uintptr(unsafe.Pointer(&free)), uintptr(unsafe.Pointer(&total)), uintptr(unsafe.Pointer(&avail)), )
fmt.Println(r1, r2, lastErr) fmt.Println("Free:", free, "Total:", total, "Available:", avail)
檢查回傳值並列印結果:
1 0 Success. Free: 16795295744 Total: 145545281536 Available: 16795295744
運作提供的程式碼將產生類似下列內容的輸出this:此輸出顯示 C: 磁碟機的總大小為 145545281536 位元組。
以上是如何使用 Go 和 Windows API 來決定磁碟機的總容量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!