发信人: tjam()
整理人: wenbobo(2002-12-27 15:55:46), 站内信件
|
BOOL GetDiscFreeSpace(LPCTSTR lpszPath, DWORDLONG* pnFree)
{
BOOL bRet = FALSE;
// We need to determine whether GetDiskFreeSpaceEx is available by calling LoadLibrary
// or LoadLibraryEx, to load Kernel32.DLL, and then calling the Get ProcAddress to
// obtain an address for GetDiskFreeSpaceEx. If GetProcAddress fai ls, or if
// GetDiskFreeSpaceEx fails with the ERROR_CALL_NOT_IMPLEMENTED cod e, we use the
// GetDiskFreeSpace function instead.
HINSTANCE hInstance = LoadLibrary("KERNEL32.DLL");
if(hInstance) // If we got the library
{
typedef BOOL (FAR WINAPI *MYFARPROC)(LPCSTR,ULARGE_INTEGER*,ULARG E_INTEGER*,ULARGE_INTEGER*);
MYFARPROC lpfnDLLProc=NULL;
//(LPCSTR,ULARGE_INTEGER*,ULARGE_INTEGER*,ULARGE_INTEGER*);
//= NULL;
lpfnDLLProc = (MYFARPROC)GetProcAddress(hInstance, "GetDiskFreeSp aceExA");
if(lpfnDLLProc) // If we got an address to the function
{
ULARGE_INTEGER nTotalBytes, nTotalFreeBytes, nTotalAvailable;
if((*lpfnDLLProc)(lpszPath, &nTotalAvailable, &nTotalBytes, &nTotalFr eeBytes))
// if(GetDiskFreeSpaceEx(lpszPath, &nTotalAvailable, &nTotalBytes, & nTotalFreeBytes))
{
*pnFree = nTotalAvailable.QuadPart;
bRet = TRUE;
}
}
FreeLibrary(hInstance);
}
if(!bRet) // We have to try and use GetDiskFreeSpace()
{
ULONG secpercluster, bytespersec, nooffreeclusters, totaln oofclusters;
if(GetDiskFreeSpace(lpszPath, &secpercluster, &bytespersec,
&nooffreeclusters, &totalnoofclusters))
{
*pnFree = (nooffreeclusters * secpercluster * bytespersec);
bRet = TRUE;
}
}
return bRet;
}
-- 春风再美也比不上你的笑,
没见过你的人不会明了!
--
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
^v^ Name:James Tan ^o^
^v^ E-mail:[email protected] ^o^
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.101.14.205]
|
|