句柄 - 维基百科,自由的百科全书 (wikipedia.org) SetHandleInformation: 设置指定句柄的当前标识 GetHandleInformation: 返回指定句柄的当前标识 HANDLE CreateFile( LPCTSTR,lpFileName, //指向文件名的指针 DWORD dwDesiredAccess, //访问模式(读/写/读写/0表示不读写仅获取文件信息) DWORD dwShareMode, //共享模式 LPSECURITY_ATTRIBUTES lpSecurityAttributes,//用于确定如何在子进程中继承这个句柄 DWORD dwCreationDisposition, // 文件存在或不存在时的操作 //CREATE_NEW:创建文件,如果文件存在会出错; //CREATE_ALWAYS:创建文件,如果该文件已经存在,函数将覆盖已存在的文件并清除已存在的文件属性 //OPEN_EXISTING:打开已存在文件; //OPEN_ALWAYS:如果不存在就创建; //TRUNCATE_EXISTING:将现有的文件缩短为零长度。调用进程必须用GENERIC_WRITE访问模式打开文件.如果文件不存在则函数就会失败. DWORD dwFlagAndAttributes, //指定新创建文件的属性;以及文件的标志位 //FILE_ATTRIBUTE_ARCHIVE:标记为归档属性; //FILE_ATTRIBUTE_NORMAL:默认属性;文件没有被设置任何属性;仅单独使用生效。 //FILE_ATTRIBUTE_HIDDEN:隐藏文件或目录; //FILE_ATTRIBUTE_OFFLINE 文件数据不可直接利用。指出文件数据已经在物理上移动到脱机存储。 //FILE_ATTRIBUTE_READONLY:文件为只读; //FILE_ATTRIBUTE_SYSTEM:文件为系统文件; //FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式 //FILE_ATTRIBUTE_TEMPORARY 文件用于临时存储;文件系统尽量把文件数据保存在内存而不是刷回主存储;临时文件不再使用后应用程序应该尽快删除临时文件。 //FILE_FLAG_WRITE_THROUGH 系统写通过任何中间缓存直接写入硬盘;系统仍然可以缓存写操作,但不得懒惰地刷回硬盘 //FILE_FLAG_OVERLAPPED 允许对文件进行[[重叠I/O]]操作 //FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块 //FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化 //FILE_FLAG_SEQUENTIAL_SCAN 针对从头到尾的顺序访问方式对大文件缓冲进行优化 //FILE_FLAG_DELETE_ON_CLOSE 关闭了所有打开的句柄后,文件立即被删除。特别适合临时文件。如果没有使用FILE_SHARE_DELETE,后续的打开文件的请求将会失败. //FILE_FLAG_BACKUP_SEMANTICS 指示系统文件的打开或创建将用于备份或恢复操作。系统保证调用进程如果有必要的特权(SE_BACKUP_NAME与SE_RESTORE_NAME),将忽略文件安全检查。这个标志也适用于文件夹句柄。 //FILE_FLAG_POSIX_SEMANTICS 指明文件基于POSIX规则被访问。例如多个文件使用只有大小写区别的文件名(如果文件系统支持的话)。在MS-DOS与16位Windows下,由于难以兼容,需谨慎使用。 //FILE_FLAG_OPEN_REPARSE_POINT 指出禁止[[NTFS重解析点]]的行为。标志不能够和CREAT_ALWAYS一起使用. //FILE_FLAG_OPEN_NO_RECALL 指明需要文件数据,但是将继续从远程存储器中读写,不会将数据存放在本地存储器中。这个标志由远程存储系统或分层存储管理器系统使用. HANDLE hTemplateFile //如果不为0,则指定一个文件句柄,新的文件将从这个文件中复制扩展属性 );//如果函数失败,返会值会是INVALID_HANDLE_VALUE SetFilePointer();//设置文件指针位置 BOOL WriteFile( HANDLE fFile, //文件句柄 LPCVOID lpBuffer, //数据缓存区指针 DWORD nNumberOfBytesToWrite, //所要写的字节数 LPDWORD lpNumberOfBytesWritten,//用于保存实际写入字节数的存储区的指针 LPOVERLAPPED lpOverlapped //OVERLAPPED结构体指针 ); BOOL ReadFile( HANDLE fFile, //文件句柄 LPCVOID lpBuffer, //数据缓存区指针 DWORD nNumberOfBytesToRead, //所要写的字节数 LPDWORD lpNumberOfBytesRead, //用于保存实际写入字节数的存储区的指针 LPOVERLAPPED lpOverlapped //OVERLAPPED结构体指针 ) ; CloseHandle(hFILE); //关闭句柄 GetDiskFreeSpace(); //确定扇区的尺寸