Win32文件系统编程

            Win32文件系统编程 一丶了解什么是文件系统

  文件系统是抽象的.是windows在软件层面提供的一层虚拟的数据结构.

文件系统分为NTFS 跟 FAT32. 具体看看两者的区别吧.

Win32文件系统编程

磁盘分区容量. 

单个文件容量.  意思就是一个文件可以是多大的. NTFS 是可以4G以上的大文件. FAT32则不可以.

EFS加密.  这个加密主要针对当前用户的(例如Admins 管理员账户)  具体可以 点击一个文件. 文件->属性 -> 高级 -> 加密保护文件内容.

如果在当前用户则不会有什么结果. 但是如果换了用户访问.则不可以访问这个加密文件了.

Win32文件系统编程

加密后的文件.

Win32文件系统编程

文件颜色都会改变.

 

磁盘配额  意思就是可以限制别的用户访问这个硬盘多少G内存. 

具体设置 xp下  盘符属性-> 配额 

关于上面的讲解我们只需要了解即可.不深究.具体的的是学习API. API为我们封装好了.我们并不用关心NTFS 或者FAT32

 

二丶Windows提供的操作 "文件" 的 API

   标题中文件为什么添加了引号. 意思是不光可以操作文件. 在windows系统中.一切东西都虚拟为了文件. 例如管道 等等.. 都可以使用这些API.

api具体介绍

1.了解卷 文件 跟目录的关系. 卷API

 卷指的就是我们的的逻辑硬盘. 例如C盘.

 目录则是C盘里面的文件夹. 文件夹里面可能还是以文件夹. 也可能是文件.

卷操作API 很简单. 常用的就四个.

DWORD GetLogIcalDrives()  获取卷    返回值是10进制.我们需要转化成16进制.然后转换成二进制查看.每一位为1代表有这个磁盘.否则则没有

GetLogIcalDriveStrings(buffsize,buf) 获取一个卷的盘符的字符串 

GetDriveType(""目录名称") 获取卷的类型

GetVolumeInformation() 获取卷的类型

如以下代码例子:

  

// A.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <Windows.h> int main() { //1.获取磁盘逻辑驱动卷 DWORD dwGetDrives = GetLogicalDrives(); /* 例如我的返回值是 252 转化为16进制 FC 转化为二进制 11111100 代表我们有六个磁盘. CDEFGH 而我的恰好就是 CDEFGH 盘. */ //2.获取磁盘卷字符串. TCHAR wszBuf[1024] = { NULL }; DWORD dwSize = sizeof(TCHAR) * 1024; GetLogicalDriveStringsW(dwSize, wszBuf); /* 逻辑驱动器返回后会存在wszBuf里面. 自己做分割即可. 例如 C:\ B:\ */ //3.根据指定盘符获取它的类型. 可以移除的还是不可以移除的. DWORD dwDriveType = GetDriveTypeW(TEXT("C:\\")); //具体返回值查询MSDN 注意从0开始 //4.获取卷的详细信息. DWORD dwVolumneSerial = 0; //驱动卷的序列号(不是硬盘序列号) DWORD dwFileMaxLen = 0; //系统允许的最大文件名的长度 DWORD dwFileSystem = 0; //文件系统标识. TCHAR dwFileSystemBuffer[255] = { 0 }; //文件操作系统的名称 TCHAR szVolName[255] = { 0 }; //返回的卷的别名 GetVolumeInformationW( TEXT("c:\\"), // IN参数 你要查看那个卷的信息 szVolName, // OUT参数. 查询到的卷的别名会给你.例如你的别名是C sizeof(TCHAR) * 255, // IN参数. 上面缓冲区的大小. &dwVolumneSerial, // OUT 驱动卷的序列号 &dwFileMaxLen, // OUT 写文件读文件等等文件名最大可以是多大. &dwFileSystem, // OUT 文件操作系统标识.有多中宏组合,具体可以查询MSDN. 标识你这个文件是 dwFileSystemBuffer, //你当前系统是 NTFS 还是FAT32 sizeof(TCHAR) * 255 //上面缓冲区的大小. ); return 0; }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzjxw.html