1.文件系统
文件系统时操作系统用于管理磁盘上文件的方法和数据结构;简单点说就是在磁盘上如何组织文件的方法(可以理解为:任何东西存到硬盘上都是0和1不过怎么组织由文件系统决定)
文件系统 | NTFS | FAT32 |
---|---|---|
磁盘分区容量 | 2T | 32G |
单个文件容量 | 4G以上 | 最大4G |
EFS加密 | 支持 | 不支持 |
磁盘配额 | 支持 | 不支持 |
那么在哪看我们的硬盘是什么文件系统?
就比如我的C盘:我们右键点击属性
看到是NTFS。
1.NTFS磁盘最大2T,FAT32最大32G
2.NTFS单个文件容量4G以上,FAT32最大4G
3.接下来什么是EFS加密呢?
我们随意创建一个文件,右键属性点击高级
这里就是EFS加密。不过我的win10家庭版不能勾选,网上也有解决方案,可以网上查找。
加密后如果你切换一个用户那么他就无法打开了。
4.磁盘配额:我们右键C盘->属性
使用磁盘配额,我们可以限制别人使用磁盘空间。
2.卷相关API:NTFS和FAT32最上层的组织形式称为卷
卷:我们可以理解为虚拟逻辑驱动器(你真正的硬盘可能是80G,在装系统是可能分成4份每个20G我们把这每份称为卷)
文件系统三次结构:卷->目录->文件
<1>获取卷
GetLogicalDrives()
这个API是有返回值的我们查看官方文档:如果函数成功,则返回值是表示当前可用磁盘驱动器的位掩码。位位置 0(最低有效位)是驱动器 A,位位置 1 是驱动器 B,位位置 2 是驱动器 C,依此类推。
这句话什么意思呢?我们看代码
#include"stdafx.h"
#include<stdio.h>
#include<Windows.h>
VOID TestVolumn()
{
//1.获取卷
DWORD dwLogicalDrives = GetLogicalDrives();
printf("%x", dwLogicalDrives);
}
int main(int argc, char* argv[])
{
//1.系统驱动器
TestVolumn();
return 0;
}
输出:
输出的值是c转换为二进制为1100最低位为0接着是0 1 1也就是说我的电脑有C盘和D盘没有AB盘
<2>获取一个所卷的盘符的字符串
GetLogicalDrives():获取逻辑驱动器字符串
DWORD GetLogicalDriveStringsA(
[in] DWORD nBufferLength,//要获取多少
[out] LPSTR lpBuffer//设定一个缓冲,把得到的串放到缓冲
);
示例代码:
#include"stdafx.h"
#include<stdio.h>
#include<Windows.h>
VOID TestVolumn()
{
//1.获取卷
/*DWORD dwLogicalDrives = GetLogicalDrives();
printf("%x", dwLogicalDrives);*/
//2.获取一个所卷的盘符的字符串
DWORD dwMaxLength = 100;
char szBuffer[100];
GetLogicalDriveStringsA(dwMaxLength, szBuffer);
}
int main(int argc, char* argv[])
{
//1.系统驱动器
TestVolumn();
return 0;
}
我们在调试的时候监视
可以看到C : \\结束 D : \\结束
<3>获取卷的类型:每一个卷都有类型你是光驱还是硬盘可以由下面的函数获取
GetDriveType()
UINT GetDriveTypeA(
[in, optional] LPCSTR lpRootPathName
);
这个函数有返回值,查询官方文档
代码如下
#include"stdafx.h"
#include<stdio.h>
#include<Windows.h>
VOID TestVolumn()
{
//1.获取卷
/*DWORD dwLogicalDrives = GetLogicalDrives();
printf("%x", dwLogicalDrives);*/
//2.获取一个所卷的盘符的字符串
/*DWORD dwMaxLength = 100;
char szBuffer[100];
GetLogicalDriveStringsA(dwMaxLength, szBuffer);*/
//3.获取卷的类型
UINT uType = GetDriveTypeA("C:\\");
printf("%d", uType);
}
int main(int argc, char* argv[])
{