ULARGE_INTEGER是一個共用體類型:
typedef union _ULARGE_INTEGER {
struct {
DWORD LowPart;
DWORD HighPart;
};
struct {
DWORD LowPart;
DWORD HighPart;
} u;
ULONGLONG QuadPart;
} ULARGE_INTEGER, *PULARGE_INTEGER;
如果編譯器支持64位的類型,那麼直接用x.QuadPart成員就行了,
如果不支持,就用x.LowPart和x.HighPart來訪問(和x.u.LowPart和x.u.HighPart等價)
因此獲取磁碟容量時可以不用memcpy,直接輸出就行了:
ULARGE_INTEGER FBAT, TNOB, TNOFB;
GetDiskFreeSpaceEx(TEXT("C:\\"), &FBAT, &TNOB, &TNOFB);
cout << "總可用字節數: " << FBAT.QuadPart << endl;
cout << "容量: " << TNOB.QuadPart << endl;
cout << "用戶可用字節數: " << TNOFB.QuadPart << endl;