disk.cpp

来自「一个国人自己实现图像库的程序(有参考价值)」· C++ 代码 · 共 65 行

CPP
65
字号
#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 + =
减小字号Ctrl + -
显示快捷键?