Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menentukan Jumlah Kapasiti Pemacu Menggunakan API Go dan Windows?

Bagaimana untuk Menentukan Jumlah Kapasiti Pemacu Menggunakan API Go dan Windows?

Mary-Kate Olsen
Lepaskan: 2024-11-28 02:28:11
asal
421 orang telah melayarinya

How to Determine a Drive's Total Capacity Using Go and Windows APIs?

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
);
Salin selepas log masuk

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:

  1. Muat pautan dinamik kernel32.dll perpustakaan:
kernelDLL := syscall.MustLoadDLL("kernel32.dll")
Salin selepas log masuk
  1. Dapatkan penuding fungsi ke fungsi GetDiskFreeSpaceExW():
GetDiskFreeSpaceExW := kernelDLL.MustFindProc("GetDiskFreeSpaceExW")
Salin selepas log masuk
  1. Buat pembolehubah untuk menerima keputusan:
var free, total, avail int64
Salin selepas log masuk
  1. Panggil fungsi dengan yang sesuai hujah:
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)),
)
Salin selepas log masuk
  1. Semak nilai pulangan dan cetak hasilnya:
fmt.Println(r1, r2, lastErr)
fmt.Println("Free:", free, "Total:", total, "Available:", avail)
Salin selepas log masuk

Contoh Output

Menjalankan kod yang disediakan akan menghasilkan output yang serupa dengan ini:

1 0 Success.
Free: 16795295744 Total: 145545281536 Available: 16795295744
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan