我们在进行Windows核心编程,经常要用到获取磁盘可用空间信息。我们来亲自编程实践获取磁盘可用空间信息,请见代码实现与注释讲解
/* 头文件 */ #include <windows.h> #include <stdio.h> /* ************************************ * BOOL GetDiskSpaceInfo(LPCSTR pszDrive * 功能 根据输入的驱动器,获取磁盘总容量 * 空闲空间、簇数量等磁盘信息 * 参数 驱动器根路径,比如“D:\”。 **************************************/ BOOL GetDiskSpaceInfo(LPCSTR pszDrive) { DWORD64 qwFreeBytesToCaller, qwTotalBytes, qwFreeBytes; DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters, dwTotalClusters; 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); } //使用GetDiskFreeSpace获取磁盘信息并打印结果 bResult = GetDiskFreeSpace (pszDrive, &dwSectPerClust, &dwBytesPerSect, &dwFreeClusters, &dwTotalClusters); if(bResult) { printf("\n使用GetDiskFreeSpace获取磁盘空间信息\n"); printf("空闲的簇数量 : \t\t\t%d\n",dwFreeClusters); printf("总簇数量 : \t\t\t%d\n",dwTotalClusters); printf("每簇的扇区数量 : \t\t%d\n",dwSectPerClust); printf("每扇区的容量(字节): \t\t%d\n",dwBytesPerSect); printf("空闲空间(字节): \t\t%I64d\n", (DWORD64)dwFreeClusters* (DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect); printf("磁盘总容量(字节): \t\t%I64d", (DWORD64)dwTotalClusters* (DWORD64)dwSectPerClust*(DWORD64)dwBytesPerSect); } return bResult; } /* ************************************ * int main( int argc, PCHAR argv[] ) * 功能 应用程序主函数,根据输入参数 * 调用GetDiskSpaceInfo函数获取 * 磁盘空间信息 * 参数 驱动器根路径,比如“D:\”。 **************************************/ int main(int argc, PCHAR argv[]) { GetDiskSpaceInfo (argv[1]); }