Menentukan Kapasiti Pemacu dalam Windows Menggunakan API Go
Dalam soalan sebelumnya, anda mendapatkan panduan untuk mendapatkan ruang cakera yang tersedia dalam Go menggunakan Windows Panggilan API. Respons ini menunjukkan penggunaan fungsi GetDiskFreeSpaceExW() daripada kernel32.dll untuk mendapatkan maklumat ini.
Untuk meneruskan penerokaan anda, anda kini ingin menentukan jumlah saiz pemacu tertentu, seperti C:. Fungsi GetDiskFreeSpaceExW() boleh memenuhi keperluan ini juga.
Tandatangan GetDiskFreeSpaceExW()
Tandatangan fungsi ini adalah seperti berikut:
BOOL GetDiskFreeSpaceExW( LPCWSTR lpDirectoryName, PULARGE_INTEGER lpFreeBytesAvailableToCaller, PULARGE_INTEGER lpTotalNumberOfBytes, PULARGE_INTEGER lpTotalNumberOfFreeBytes );
Ia memerlukan parameter dalam (laluan pemacu) dan mengembalikan tiga out-parameters: bait percuma yang tersedia untuk pemanggil, jumlah saiz cakera dan jumlah bait percuma.
Penggunaan dalam Go
Untuk menggunakan fungsi ini dalam Go, anda boleh mengikuti langkah berikut:
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)
Contoh Output
Menjalankan kod yang disediakan akan menghasilkan output yang serupa dengan ini:
1 0 Success. Free: 16795295744 Total: 145545281536 Available: 16795295744
Output ini menunjukkan bahawa pemacu C: mempunyai jumlah saiz 145545281536 bait.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Jumlah Kapasiti Pemacu Menggunakan API Go dan Windows?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!