GetDiskFreeSpaceEx用于获取磁盘空间参数。
函数原型为:
C++
BOOL WINAPI GetDiskFreeSpaceEx( _In_opt_ LPCTSTR lpDirectoryName, _Out_opt_ PULARGE_INTEGER lpFreeBytesAvailable, _Out_opt_ PULARGE_INTEGER lpTotalNumberOfBytes, _Out_opt_ PULARGE_INTEGER lpTotalNumberOfFreeBytes );
参数lpDirectoryName为磁盘分区路径(可以兼容文件或目录所在磁盘分区);lpFreeBytesAvailable为可用字节数;lpTotalNumberOfBytes为该分区总大小;lpTotalNumberOfFreeBytes为该分区空闲字节数。
其中ULARGE_INTEGER结构定义如下(WinNT.h):
#if defined(MIDL_PASS)
typedef struct _ULARGE_INTEGER {
#else // MIDL_PASS
typedef union _ULARGE_INTEGER {
struct {
DWORD LowPart;
DWORD HighPart;
};
struct {
DWORD LowPart;
DWORD HighPart;
} u;
#endif //MIDL_PASS
ULONGLONG QuadPart;
} ULARGE_INTEGER;
其中QuadPart为ULONGLONG类型,为64位的无符号整型。
这里要注意的是:函数传入参数lpDirectoryName所对应的磁盘目录必须存在。如可以使用"C:\\"作为传入参数,也可以使用"C:\\Windows"作为传入参数。但如果传入"C:\\abc",而abc目录不存在,那么GetDiskFreeSpaceEx就会返回false。