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 );
in-パラメータ (ドライブパス) を受け取り、3 つの値を返します。 out-parameters: 呼び出し元が使用できる空きバイト数、ディスクの合計サイズ、および合計空きバイト数。
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
この出力は、C: ドライブの合計サイズが 145545281536 バイトであることを示します。
以上がGo と Windows API を使用してドライブの総容量を確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。