gpt4 book ai didi

c++ - 我做错了什么? GetDiskFreeSpaceExA 的功能根本不起作用

转载 作者:行者123 更新时间:2023-11-28 01:31:25 24 4
gpt4 key购买 nike

我尝试使用 GetDiskFreeSpaceExA 函数,但它不起作用:

int drvNbr = PathGetDriveNumber(db7zfolderw);

if (drvNbr == -1) // fn returns -1 on error
{
const char * errmsg = "error occured during get drive number";
strcpy_s(retmsg, strlen(errmsg) + 1, errmsg);
return -3;
}

char driverletter = (char)(65 + drvNbr);
string driverstr(1, driverletter);
driverstr = driverstr + ":";

PULARGE_INTEGER freespace = 0;
PULARGE_INTEGER totalnumbtype = 0;
PULARGE_INTEGER totalnumberfreebyte = 0;


fileSize = SzArEx_GetFileSize(&db, i);
BOOL myresult=GetDiskFreeSpaceExA(
driverstr.c_str(),
freespace,
totalnumbtype,
totalnumberfreebyte
);

变量freespace 的值为0。我不知道为什么如果 driverstr.c_str() 变量的值是 D:?

为什么它不起作用

感谢您的帮助。

最佳答案

您需要提供指向将保存返回值的变量的指针。现在您重新提供空指针,因此不会返回任何内容:

::ULARGE_INTEGER freespace{};
::ULARGE_INTEGER totalnumbtype{};
::ULARGE_INTEGER totalnumberfreebyte{};

::BOOL myresult
{
::GetDiskFreeSpaceExA
(
driverstr.c_str()
, &freespace
, &totalnumbtype
, &totalnumberfreebyte
)
};

使用这些函数的宽字符版本也是一个好主意。

关于c++ - 我做错了什么? GetDiskFreeSpaceExA 的功能根本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51383511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com