📄 disk.cpp
字号:
#include "stdafx.h"
#include "..\Include\C_Disk.h"
#include "..\Include\fooBit.h"
//===================================================================
BOOL fooGetDiskSpace (PCTSTR szDrive, __int64 * TotalSize,
__int64 * FreeSize)
{
ULARGE_INTEGER FreeBytesAvailable ;
ULARGE_INTEGER TotalNumberOfBytes ;
FreeBytesAvailable.QuadPart = TotalNumberOfBytes.QuadPart = 0 ;
BOOL bResult = ::GetDiskFreeSpaceEx (szDrive, &FreeBytesAvailable, &TotalNumberOfBytes, NULL) ;
if ( TotalSize != NULL ) *TotalSize = (__int64)TotalNumberOfBytes.QuadPart ;
if ( FreeSize != NULL ) *FreeSize = (__int64)FreeBytesAvailable.QuadPart ;
return bResult ;
}
//===================================================================
// 获得磁盘卷信息
BOOL fooGetVolumeInfo (PCTSTR szDrive, VOLUMEINFO * pvolinfo)
{
BOOL bResult = FALSE ;
if (pvolinfo != NULL)
{
DWORD MaximumComponentLength ; // 文件名的最长长度
DWORD FileSystemFlags ;
::ZeroMemory (pvolinfo, sizeof (*pvolinfo)) ;
bResult = ::GetVolumeInformation (szDrive, pvolinfo->VolumeName, 32,
&pvolinfo->dwVolumeSerialNumber, &MaximumComponentLength,
&FileSystemFlags, pvolinfo->FileType, 32) ;
if (bResult)
{
lstrcpy (pvolinfo->Driver, szDrive) ;
pvolinfo->DiskType = ::GetDriveType (szDrive) ;
}
}
return bResult ;
}
//===================================================================
BOOL fooEnumVolume (int iModeNum, VOLUMEINFO * pVolInfo)
{
static DWORD s_dwDriver = 0 ;
static unsigned char cIndex = 64 ;
if (iModeNum == 0)
{
s_dwDriver = ::GetLogicalDrives () ;
cIndex = 0 ;
}
if ((cIndex >= 32) || (pVolInfo == NULL))
return FALSE ;
while (!::fooTestBit (s_dwDriver, cIndex))
{
cIndex++ ;
if (cIndex == 32)
return FALSE ;
}
TCHAR root[] = TEXT("X:\\") ;
root[0] = TEXT('A') + cIndex++ ;
::fooGetVolumeInfo (root, pVolInfo) ;
return TRUE ;
}
//===================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -