函数GetDiskFreeSpaceEx声明如下:


WINBASEAPI
BOOL
WINAPI
GetDiskFreeSpaceExA(
    __in_opt LPCSTR lpDirectoryName,
    __out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,
    __out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
    __out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
    );
WINBASEAPI
BOOL
WINAPI
GetDiskFreeSpaceExW(
    __in_opt LPCWSTR lpDirectoryName,
    __out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,
    __out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
    __out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
    );
#ifdef UNICODE
#define GetDiskFreeSpaceEx GetDiskFreeSpaceExW
#else
#define GetDiskFreeSpaceEx GetDiskFreeSpaceExA
#endif // !UNICODE
 
lpDirectoryName是驱动器的名称。
lpFreeBytesAvailableToCaller是用户可用的磁盘空间。
lpTotalNumberOfBytes是磁盘总共的空间。
lpTotalNumberOfFreeBytes是磁盘空闲的空间。以上都是字节为单位。
运行实例:



int DiskInfoManage::GetTotalSpaceEx(TCHAR *szDisk)
{
	ULARGE_INTEGER  dwAvailalbe, dwFree, dwTotal;
	BOOL bRet = GetDiskFreeSpaceEx(szDisk, &dwAvailalbe, &dwTotal, &dwFree);
	if (bRet)
	{
		return dwTotal.QuadPart;
	}
	return 0;
}