win32内核编程_09.pdf

上传人:qwe****56 文档编号:70012218 上传时间:2023-01-14 格式:PDF 页数:7 大小:67.13KB
返回 下载 相关 举报
win32内核编程_09.pdf_第1页
第1页 / 共7页
win32内核编程_09.pdf_第2页
第2页 / 共7页
点击查看更多>>
资源描述

《win32内核编程_09.pdf》由会员分享,可在线阅读,更多相关《win32内核编程_09.pdf(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、win32_09.txt=第九课 文件系统=一、文件系统基本概念-Windows操作系统管理磁盘数据的方式:FAT、FAT32、NTFS磁道:由若干扇区组成扇区:512字节文件系统的最小管理单位:簇连续的若干扇区 FAT32:1簇=32扇区=16K字节 NTFS :1簇=8扇区=4K字节 文件存储时,以簇为单位占用磁盘空间,即使只有1个字节,也要占用1簇空间。二、目录-1.获取磁盘驱动器信息DWORD WINAPI GetLogicalDrives(void);返回当前可用磁盘驱动器掩码位。高位-低位XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX .PONMLKJI H

2、GFEDCBA0:无此磁盘驱动器1:有此磁盘驱动器2.获取系统驱动器DWORD WINAPI GetLogicalDriveStrings(DWORD nBufferLength,/缓冲区大小(以字符为单位)LPTSTR lpBuffer /缓冲区指针);成功返回字符串长度,失败返回0。3.获取当前目录DWORD GetCurrentDirectory(DWORD nBufferLength,/缓冲区大小(以字符为单位)LPTSTR lpBuffer /缓冲区指针);成功返回字符串长度,失败返回0。4.设置当前目录第 1 页win32_09.txtBOOL SetCurrrentDirecto

3、ry(LPCTSTR lpPathName/当前目录路径);成功返回TRUE,失败返回FALSE。5.获取WINDOWS目录UINT GetWindowsDirectory(LPSTR lpBuffer,/缓冲区指针 UINT uSize /缓冲区大小(以字符为单位);成功返回字符串长度,失败返回0。6.获取系统(system32)目录UINT GetSystemDirectory(LPTSTR lpBuffer,/缓冲区指针 UINT uSize /缓冲区大小(以字符为单位);成功返回字符串长度,失败返回0。7.获取临时目录DWORD GetTempPath(DWORD nBufferLen

4、gth,/缓冲区大小(以字符为单位)LPTSTR lpBuffer /缓冲区指针);成功返回字符串长度,失败返回0。8.创建目录BOOL CreateDirectory(LPCTSTR lpPathName,/目录路径 LPSECURITY_ATTRIBUTES lpSecurityAttributes /安全属性,置NULL);成功返回TRUE,失败返回FALSE。9.删除空目录BOOL RemoveDirectory(LPCTSTR lpPathName/目录路径);第 2 页win32_09.txt成功返回TRUE,失败返回FALSE。10.目录/文件修改BOOL MoveFile(LP

5、CTSTR lpExistingFileName,/当前路径 LPCTSTR lpNewFileName /目标路径);成功返回TRUE,失败返回FALSE。注意:不能跨驱动器移动目录,但是可以跨驱动器移动文件。范例:WinDir三、文件-1.创建/打开文件HANDLE CreateFile(LPCTSTR lpFileName,/文件路径 DWORD dwDesiredAccess,/访问方式 DWORD dwShareMode,/共享方式 /其它进程以何种方式打开此文件 LPSECURITY_ATTRIBUTES lpSecurityAttributes,/安全属性(NULL)DWORD

6、dwCreationDisposition,/创建/打开方式 DWORD dwFlagsAndAttributes,/文件属性 HANDLE hTemplateFile /文件句柄模板 /磁盘文件设NULL同步传输,/打印机同步或异步传输);成功返回文件句柄,失败返回INVALID_HANDLE_VALUE(-1)。dwDesiredAccess为以下值的位或:0 -质询(判断文件是否存在)GENERIC_READ -读取 GENERIC_WRITE-写入dwShareMode为以下值的位或:FILE_SHARE_DELETE-允许其它进程删除 FILE_SHARE_READ -允许其它进程读

7、取 FILE_SHARE_WRITE -允许其它进程写入dwCreationDisposition取值:CREATE_NEW -不存在就创建,已存在就失败 CREATE_ALWAYS -不存在就创建,已存在就删除原文件再创建 OPEN_EXISTING -已存在就打开,不存在就失败 OPEN_ALWAYS -已存在就打开,不存在就创建新文件再打开 TRUNCATE_EXISTING-已存在就先清空再打开,不存在就失败2.写文件第 3 页win32_09.txtBOOL WriteFile(HANDLE hFile,/文件句柄 LPCVOID lpBuffer,/数据缓冲区 DWORD nNum

8、berOfBytesToWrite,/期望写入的字节数 LPDWORD lpNumberOfBytesWritten,/实际写入的字节数,/可为NULL LPOVERLAPPED lpOverlapped /NULL(同步传输);成功返回TRUE,失败返回FALSE。3.获取文件大小DWORD GetFileSize(HANDLE hFile,/文件句柄 LPDWORD lpFileSizeHigh/文件字节数的高32位,可为NULL);返回文件字节数的低32位。32位-4G64位-16E,实际2T小知识:数量单位的中英文表示法英文表示法:K,Kilo -103 -210M,Mega -106

9、 -220G,Giga -109 -230T,Tera -1012-240P,Peta -1015-250E,Exa -1018-260B,Bronto-1021-270中文表示法:个 -100十 -101百 -102千 -103万 -104亿 -108兆 -1012京 -1016垓 -1020秭 -1024穰 -1028沟 -1032涧 -1036正 -1040载 -1044第 4 页win32_09.txt极 -1048恒河沙 -1052阿僧只 -1056那由他 -1060不可思议-1064无量 -1068大数 -10724.读文件BOOL ReadFile(HANDLE hFile,/文

10、件句柄 LPVOID lpBuffer,/数据缓冲区 DWORD nNumberOfBytesToRead,/期望读取的字节数 LPDWORD lpNumberOfBytesRead,/实际读取的字节数 LPOVERLAPPED lpOverlapped /NULL(同步传输);成功返回TRUE,失败返回FALSE。5.设置文件指针DWORD SetFilePointer(HANDLE hFile,/文件句柄 LONG lDistanceToMove,/偏移量低32位 PLONG lpDistanceToMoveHigh,/偏移量高32位(输入输出),/可为NULL DWORD dwMoveM

11、ethod /偏移量相对位置);成功返回新位置的低32位(高32位通过lpDistanceToMoveHigh输出),失败返回-1。dwMoveMethod取值:FILE_BEGIN -从文件头 FILE_CURRENT-从当前位置 FILE_END -从文件尾四、拷贝、移动和删除-1.拷贝文件BOOL CopyFile(LPCTSTR lpExistingFileName,/源路径 LPCTSTR lpNewFileName,/目标路径 BOOL bFailIfExists /TRUE存在就失败,/FALSE存在就覆盖);成功返回TRUE,失败返回FALSE。2.移动(改名)目录/文件第 5

12、 页win32_09.txtBOOL MoveFile(LPCTSTR lpExistingFileName,/当前路径 LPCTSTR lpNewFileName /目标路径);成功返回TRUE,失败返回FALSE。注意:不能跨驱动器移动目录,但是可以跨驱动器移动文件。3.删除文件BOOL DeleteFile(LPCTSTR lpFileName/路径);成功返回TRUE,失败返回FALSE。即使打开的文件也可以删除。五、属性-1.设置目录/文件属性BOOL SetFileAttributes (LPCTSTR lpFileName,/目录/文件路径 DWORD dwFileAttribu

13、tes/目录/文件属性);成功返回TRUE,失败返回FALSE。dwFileAttributes为以下值的位或:FILE_ATTRIBUTE_ARCHIVE -归档 FILE_ATTRIBUTE_COMPRESSED-压缩 FILE_ATTRIBUTE_OFFLINE -离线 FILE_ATTRIBUTE_DIRECTORY -目录 FILE_ATTRIBUTE_ENCRYPTED -加密 FILE_ATTRIBUTE_HIDDEN -隐藏 FILE_ATTRIBUTE_NORMAL -普通 FILE_ATTRIBUTE_READONLY -只读 FILE_ATTRIBUTE_SYSTEM -

14、系统 FILE_ATTRIBUTE_TEMPORARY -临时注意:增加属性应该先获取属性,位或上新属性,再一并设置。2.获取目录/文件属性DWORD GetFileAttributes(LPCTSTR lpFileName/目录/文件路径);第 6 页win32_09.txt成功返回文件属性,失败返回-1。3.获取目录/文件扩展属性(创建时间、最后访问时间、最后修改时间)BOOL GetFileAttributesEx(LPCTSTR lpFileName,GET_FILEEX_INFO_LEVELS fInfoLevelId,LPVOID lpFileInformation);成功返回TR

15、UE,失败返回FALSE。六、遍历-1.查找第一个目录/文件HANDLE FindFirstFile(LPCTSTR lpFileName,/查找路径 LPWIN32_FIND_DATA lpFindFileData/查找信息);typedef struct _WIN32_FIND_DATA DWORD dwFileAttributes;/属性 FILETIME ftCreationTime;/创建时间 FILETIME ftLastAccessTime;/最后访问时间 FILETIME ftLastWriteTime;/最后修改实现 DWORD nFileSizeHigh;/文件字节数高32

16、位 DWORD nFileSizeLow;/文件字节数低32为 DWORD dwReserved0;/保留 DWORD dwReserved1;/保留 TCHAR cFileNameMAX_PATH;/目录/文件名 TCHAR cAlternateFileName14;/8.3格式的目录/文件名 WIN32_FIND_DATA,*PWIN32_FIND_DATA,*LPWIN32_FIND_DATA;成功返回查找句柄,用于后续函数调用的参数,失败返回INVALID_HANDLE_VALUE(-1)2.查找下一个目录/文件BOOL WINAPI FindNextFile(HANDLE hFindFile,/查找句柄(FindFirstFile函数的返回值)LPWIN32_FIND_DATA lpFindFileData/查找信息);成功返回TRUE,失败返回FALSE。GetLastError函数返回ERROR_NO_MORE_FILES表示没有下一个目录/文件了。范例:WinFile第 7 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁