wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Windows中获取驱动器的总大小大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我希望使用标准的 windows api调用在Go窗口中获取驱动器的总大小; 我找到this来获得免费空间. 现在我想要特殊驱动器的总空间大小 C:\ 您链接的问题答案显示了如何获得可用空间.该解决方案使用kernel32.dll中的 GetDiskFreeSpaceExW() windows API函数来获取它. 同样的功能也可用于获得总大小. GetDiskFreeSpaceExW()函数的签
我希望使用标准的 @L_673_0@ api调用在Go窗口中获取驱动器的总大小;

我找this来获得免费空间.

现在我想要特殊驱动器的总空间大小

解决方法

链接的问题答案显示了如何获得可用空间.该解决方案使用kernel32.dll中的 GetDiskFreeSpaceExW() windows API函数获取它.

同样的功能也可用于获得总大小. GetDiskFreeSpaceExW()函数的签名:

BOOL GetDiskFreeSpaceExW(
  LPCWSTR         lpDirectoryName,PULARGE_IntegeR lpFreeBytesAvailableToCaller,PULARGE_IntegeR lp@R_488_10586@lnumberOfBytes,PULARGE_IntegeR lp@R_488_10586@lnumberOfFreeBytes
);

它有一个参数,路径,它有3个输出参数,即空闲字节(可用于调用者),总字节数(磁盘大小)和总可用字节数.

因此,只需在调用它时,为您想要获取的所有信息提供变量(指针).

例如:

kernelDLL := syscall.MustLoadDLL("kernel32.dll")
GetDiskFreeSpaceExW := kernelDLl.MustFindProc("GetDiskFreeSpaceExW")

var free,@R_488_10586@l,avail int64

path := "c:\\"
r1,r2,lastErr := GetDiskFreeSpaceExW.Call(
    uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(path))),uintptr(unsafe.Pointer(&freE)),uintptr(unsafe.Pointer(&@R_488_10586@l)),uintptr(unsafe.Pointer(&avail)),)

fmt.Println(r1,lastErr)
fmt.Println("Free:",free,"@R_488_10586@l:","Available:",avail)

运行它,一个示例输出

1 0 success.
Free: 16795295744 @R_488_10586@l: 145545281536 Available: 16795295744

大佬总结

以上是大佬教程为你收集整理的如何在Windows中获取驱动器的总大小全部内容,希望文章能够帮你解决如何在Windows中获取驱动器的总大小所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。