C代码使用GetDiskFreeSpaceEx获得磁盘分区大小信息,返回值是以字节数表示,我想用字节数/512,表示成扇区数,为什么不成功?谢谢!

zhangcao2017 2018-02-01 05:23:52
#include<stdio.h>
#include<windows.h>
#include <stdlib.h>

CHAR buf1[52428800]; //定义全局字符数组变量,大小50M

BOOL GetDiskSpaceInfo(LPCWSTR pszDrive){
DWORD64 qwFreeBytesToCaller, qwTotalBytes, qwFreeBytes;
BOOL bResult;
//使用GetDiskFreeSpaceEx获取磁盘信息并打印结果
bResult = GetDiskFreeSpaceEx(pszDrive,
(PULARGE_INTEGER)&qwFreeBytesToCaller,
(PULARGE_INTEGER)&qwTotalBytes,
(PULARGE_INTEGER)&qwFreeBytes);
if (bResult){
printf("使用GetDiskFreeSpaceEx获取磁盘信息\n");
printf("可获得的空闲空间(字节):\t%I64d\n", qwFreeBytesToCaller);
printf("空闲空间(字节):\t\t%I64d\n", qwFreeBytes);
printf("磁盘总容量(字节):\t\t%I64d\n", qwTotalBytes);
}
return bResult;
}
int main(int argc, PCHAR argv[]){
//GetDiskSpaceInfo(argv[2]);

int i = 0;
int a = 0;
int num_str = 0;
DWORD RSize;

DWORD64 qwFreeBytesToCaller, qwTotalBytes, qwFreeBytes;
BOOL bResult;
//使用GetDiskFreeSpaceEx获取磁盘信息并打印结果
bResult = GetDiskFreeSpaceExA("G:",
(PULARGE_INTEGER)&qwFreeBytesToCaller,
(PULARGE_INTEGER)&qwTotalBytes,
(PULARGE_INTEGER)&qwFreeBytes);

if (bResult){
printf("使用GetDiskFreeSpaceEx获取磁盘信息\n");
printf("可获得的空闲空间(字节):\t%I64d\n", qwFreeBytesToCaller);
printf("空闲空间(字节):\t\t%I64d\n", qwFreeBytes);
printf("磁盘总容量(字节):\t\t%I64d\n", qwTotalBytes);
};
printf("磁盘总容量(扇区):\t\t%I64d\n", qwTotalBytes/512);
return 0;
}

我这是截选的部分代码,问题出在最后一个printf语句,不知道为什么qwTotalBytes/512不能成功?之前的语句都正确执行了
...全文
314 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2018-02-08
  • 打赏
  • 举报
回复
不能简单除以 512 的,用 GetDiskFreeSpace 获取扇区大小,再除。
super_admi 2018-02-02
  • 打赏
  • 举报
回复

#ifndef UNICODE
#define UNICODE
#endif // UNICODE

#include<stdio.h>
 #include<windows.h>
 #include <stdlib.h>

 CHAR buf1[52428800]; //定义全局字符数组变量,大小50M

 BOOL GetDiskSpaceInfo(LPCWSTR pszDrive){
 DWORD64 qwFreeBytesToCaller = 0, qwTotalBytes = 0, qwFreeBytes = 0;
 BOOL bResult = FALSE;
 //使用GetDiskFreeSpaceEx获取磁盘信息并打印结果
bResult = GetDiskFreeSpaceEx(pszDrive,
 (PULARGE_INTEGER)&qwFreeBytesToCaller,
 (PULARGE_INTEGER)&qwTotalBytes,
 (PULARGE_INTEGER)&qwFreeBytes);
 if (bResult){
 printf("使用GetDiskFreeSpaceEx获取磁盘信息\n");
 printf("可获得的空闲空间(字节):\t%I64d\n", qwFreeBytesToCaller);
 printf("空闲空间(字节):\t\t%I64d\n", qwFreeBytes);
 printf("磁盘总容量(字节):\t\t%I64d\n", qwTotalBytes);
 }
 return bResult;
 }
 int main(int argc, PCHAR argv[]){
 GetDiskSpaceInfo(L"D:");

 int i = 0;
 int a = 0;
 int num_str = 0;
 DWORD RSize = 0;

 DWORD64 qwFreeBytesToCaller = 0, qwTotalBytes = 0, qwFreeBytes = 0;
 BOOL bResult = FALSE;
 //使用GetDiskFreeSpaceEx获取磁盘信息并打印结果
bResult = GetDiskFreeSpaceExA("C:",
 (PULARGE_INTEGER)&qwFreeBytesToCaller,
 (PULARGE_INTEGER)&qwTotalBytes,
 (PULARGE_INTEGER)&qwFreeBytes);

 if (bResult){
 printf("使用GetDiskFreeSpaceEx获取磁盘信息\n");
 printf("可获得的空闲空间(字节):\t%I64d\n", qwFreeBytesToCaller);
 printf("空闲空间(字节):\t\t%I64d\n", qwFreeBytes);
 printf("磁盘总容量(字节):\t\t%I64d\n", qwTotalBytes);
 };
 printf("磁盘总容量(扇区):\t\t%I64d\n", qwTotalBytes/512);
         return 0;
 }

zhangcao2017 2018-02-02
  • 打赏
  • 举报
回复

就是这样,提示:未找到源
老马何以识途 2018-02-01
  • 打赏
  • 举报
回复
不成功是什麽意思?輸出不符合預期?還是segment fault?

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧