第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在 Windows 中獲取驅(qū)動(dòng)器的總大小

如何在 Windows 中獲取驅(qū)動(dòng)器的總大小

Go
MMMHUHU 2023-06-05 18:30:33
我想使用標(biāo)準(zhǔn) Windows API 調(diào)用在 Windows 上的 Go 中獲取驅(qū)動(dòng)器的總大??;我發(fā)現(xiàn)這是為了獲得可用空間?,F(xiàn)在我想以特殊驅(qū)動(dòng)器的總空間大小為例C:\
查看完整描述

3 回答

?
鳳凰求蠱

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊

您鏈接的問(wèn)題+答案顯示了如何獲得可用空間。該解決方案使用 中的GetDiskFreeSpaceExW()Windows API 函數(shù)來(lái)kernel32.dll獲取它。

同樣的函數(shù)也可以用來(lái)獲取總大小。函數(shù)簽名GetDiskFreeSpaceExW()

BOOL?GetDiskFreeSpaceExW(
??LPCWSTR?????????lpDirectoryName,
??PULARGE_INTEGER?lpFreeBytesAvailableToCaller,
??PULARGE_INTEGER?lpTotalNumberOfBytes,
??PULARGE_INTEGER?lpTotalNumberOfFreeBytes
);

它有一個(gè)輸入?yún)?shù),路徑,它有 3 個(gè)輸出參數(shù),即空閑字節(jié)數(shù)(可供調(diào)用者使用)、總字節(jié)數(shù)(磁盤(pán)大?。┖涂偪臻e字節(jié)數(shù)。

因此,只需在您調(diào)用它時(shí),為您想要從中獲取的所有信息提供變量(指針)。

例如:

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)

運(yùn)行它,示例輸出:


1 0 Success.

Free: 16795295744 Total: 145545281536 Available: 16795295744


查看完整回答
反對(duì) 回復(fù) 2023-06-05
?
一只斗牛犬

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊

由于系統(tǒng)調(diào)用已棄用,其他回復(fù)已過(guò)時(shí)。


您現(xiàn)在必須使用 golang.org/x/sys/windows:


import (

? ? "fmt"

? ? "golang.org/x/sys/windows"


)


// print disk usage of path/disk

func DiskUsage(path string) bool {


? ? var free, total, avail uint64


? ? path = "c:\\"

? ? pathPtr, err := windows.UTF16PtrFromString(path)

? ? if err != nil{

? ? ? ? panic(err)

? ? }

? ? err = windows.GetDiskFreeSpaceEx(pathPtr, &free, &total, &avail)



? ? fmt.Println("Free:", free, "Total:", total, "Available:", avail)

}


查看完整回答
反對(duì) 回復(fù) 2023-06-05
?
莫回?zé)o

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

在GetDiskFreeSpraceExW的文檔中,該函數(shù)聲明為:

BOOL GetDiskFreeSpaceExW(

? LPCWSTR? ? ? ? ?lpDirectoryName,

? PULARGE_INTEGER lpFreeBytesAvailableToCaller,

? PULARGE_INTEGER lpTotalNumberOfBytes,

? PULARGE_INTEGER lpTotalNumberOfFreeBytes

);

因此,您可以在一次調(diào)用中獲得總大小和可用大小:


import "syscall"

import "os"


func main() {

? ? wd := os.Getwd()


? ? h := syscall.MustLoadDLL("kernel32.dll")

? ? c := h.MustFindProc("GetDiskFreeSpaceExW")


? ? var freeBytesAvailableToCaller int64

? ? var totalNumberOfBytes int64

? ? var totalNumberOfFreeBytes int64


? ? c.Call(

? ? ? ? uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(wd))),

? ? ? ? uintptr(unsafe.Pointer(&freeBytesAvailableToCaller)),?

? ? ? ? uintptr(unsafe.Pointer(&totalNumberOfBytes)),?

? ? ? ? uintptr(unsafe.Pointer(&totalNumberOfFreeBytes))

? ? )


? ? print(freeBytesAvailableToCaller, totalNumberOfBytes, totalNumberOfBytes)

}


查看完整回答
反對(duì) 回復(fù) 2023-06-05
  • 3 回答
  • 0 關(guān)注
  • 221 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)