C语言 获取磁盘可用空间
给,在VC6上已经编译运行确认:
/*
* 获取硬盘分区序列号
* chen.brick@gmail.com 2007.5.28
*/
#include string.h
#include stdio.h
#include windows.h
int main() {
_ULARGE_INTEGER lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes;
DWORD serialNumber, maxComponentLength, fsFlags;
TCHAR szFileSystem[12];
TCHAR szVolumeName[24];
TCHAR szRoot[4] = “c:\\”;//这里写上你需要获取的磁盘的分区
if (!GetVolumeInformation(
szRoot,
szVolumeName,
sizeof(szVolumeName),
serialNumber,
maxComponentLength,
fsFlags,
szFileSystem,
sizeof(szFileSystem))) {
printf(“Failed to retrieve drive information\n”);
}
GetDiskFreeSpaceEx(szRoot, lpFreeBytesAvailableToCaller, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes);
//根据MSDN的说明,如果分区大于2G一定要用GetDiskFreeSpaceEx
printf(“卷标: %s$ %s\n分区类型: %s\n卷序列号: %04X-%04X\n”,
szRoot,
szVolumeName,
szFileSystem,
serialNumber 16,
serialNumber 0xFFFF
);
printf(“分区总空间大小: %d MB\n”,lpTotalNumberOfBytes.QuadPart / (1024 *1024));
printf(“分区剩余空间大小: %d MB\n”,lpTotalNumberOfFreeBytes.QuadPart / (1024 *1024));
printf(“调用者可用的空间大小: %d MB\n”,lpFreeBytesAvailableToCaller.QuadPart / (1024 *1024));
return(0);
}
c语言中有什么函数是可以在windows下读取磁盘扇区信息的
可以使用windows api CreateFile(…),使用磁盘模式,可以针对分区打开或者针对硬盘打开;之后用ReadFile(…) 按扇区读取磁盘数据;
这两个函数具体用法可以在一些编程论坛、博客中找到,很容易找到的。
如何用C语言读取U盘容量
char strdir[10];
for(char cc=’A’;cc=’Z’;cc++)
{
sprintf(strdir,”%c”,cc);
if(GetDriveType((LPCTSTR)strdir)==DRIVE_REMOVABLE)//移动盘
{
return strdir; //获取到U盘盘符
}
}
//在有外设安装的时候,一般都会向所有窗口广播 WM_DEVICECHANGE 消息,
处理这个消息,安装时候在 DBT_DEVICEARRIVAL 中
处理 DEV_BROADCAST_HDR, DEV_BROADCAST_VOLUME 就可以得到 U 盘的盘符。
C语言,获取硬盘剩余空间函数的使用方法。GetDiskFreeSpaceEx函数使用方法
GetDiskFreeSpaceEx是windows的API啊,调用之后就会获得信息。
说明
获取与一个磁盘的组织以及剩余空间容量有关的信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
lpRootPathName String,不包括卷名的磁盘根路径名
lpFreeBytesAvailableToCaller LARGE_INTEGER,指定一个变量,用于容纳调用者可用的字节数量
lpTotalNumberOfBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上的总字节数
lpTotalNumberOfFreeBytes LARGE_INTEGER,指定一个变量,用于容纳磁盘上可用的字节数
适用平台
Windows 95 OSR2,Windows NT 4.0
c语言如何得到磁盘分区名称
代码如下,VS2012亲测,可以运行,给你注释的很清楚了,不懂的地方可以问我。
#include windows.h
#include stdio.h
int main()
{
int DSLength = GetLogicalDriveStrings(0,NULL);
//通过GetLogicalDriveStrings()函数获取所有驱动器字符串信息长度。
char* DStr = new char[DSLength];//用获取的长度在堆区创建一个c风格的字符串数组
GetLogicalDriveStrings(DSLength,(LPTSTR)DStr);
//通过GetLogicalDriveStrings将字符串信息复制到堆区数组中,其中保存了所有驱动器的信息。
int DType;
int si=0;
for(int i=0;iDSLength/4;++i)
//为了显示每个驱动器的状态,则通过循环输出实现,由于DStr内部保存的数据是A:\NULLB:\NULLC:\NULL,这样的信息,所以DSLength/4可以获得具体大循环范围
{
char dir[3]={DStr[si],’:’,’\\’};
//coutdir;
DType = GetDriveType((LPCWSTR)DStr+i*4);
//GetDriveType函数,可以获取驱动器类型,参数为驱动器的根目录
if(DType == DRIVE_FIXED)
{
printf(“%c”,*dir);
printf(“硬盘\n”);
}
si+=4;
}
system(“pause”);//
return 1;
}