Win32汇编——文件操作
来源:互联网 发布:airdrop 搜不到mac 编辑:程序博客网 时间:2024/06/02 12:30
一、创建和读写文件
打开、创建文件:CreateFile (文件名需全路径)
关闭: CloseHandle
调整文件指针: SetFilePointer
无GetFilePointer函数,可通过
invoke SetFilePointer,hFile,0,NULL,FILE_CURRENT
获得当前的文件指针。
设置文件结尾:SetEndOfFile
有截断文件和扩充文件的功能。常与SetFilePointer 配合。
读文件: ReadFile
写文件: WriteFile
(读写两函数可以是同步的也可以是异步的,读写的扩展函数EX只能用于异步读写文件)
强制清空数据缓冲区:FlushFileBuffers
加解锁:LockFile UnlockFile
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>; FormatText.asm; 文件读写例子 —— 将 Unix 格式的文本文件(以0ah换行)转换成 PC 格式; 的文本文件(以0dh,0ah换行),读写文件操作使用文件操作函数。;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>;重要部分:;********************************************************************; 循环读出文件并处理每个字节;********************************************************************xoreax,eaxmov@dwBytesRead,eax.whileTRUEinvokeReadFile,@hFile,addr @szReadBuffer,sizeof @szReadBuffer,addr @dwBytesRead,NULL.break.if! @dwBytesReadinvoke_FormatText,addr @szReadBuffer,@dwBytesRead,@hFileNew.endw;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>; 子程序:在缓冲区中找出一行数据,处理换行并保存;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>_FormatTextprocuses esi _lpData,_dwSize,_hFilelocal@szBuffer[128]:byte,@dwBytesWritemovesi,_lpDatamovecx,_dwSizeleaedi,@szBuffer;目的缓冲区,esx+edi xoredx,edxcld_LoopBegin:orecx,ecxjz_WriteLinelodsbdececxcmpal,0dh;遇到0dh则丢弃jz_LoopBegincmpal,0ah;遇到0ah则扩展为0dh,0ahjz_LineEndstosbincedxcmpedx,sizeof @szBuffer-2jae_WriteLine;行缓冲区满则保存jmp_LoopBegin_LineEnd:movax,0a0dhstoswincedxincedx_WriteLine:pushecx ;WriteFile函数内部使用ecx循环.ifedxinvokeWriteFile,_hFile,addr @szBuffer,edx,addr @dwBytesWrite,NULL.endifleaedi,@szBufferxoredx,edxpopecxorecx,ecxjnz_LoopBeginret_FormatTextendp
二、查找文件
通用结构:
invokeFindFirstFile,lpFindFile,lpFindFileData.ifeax !=INVALID_HANDLE_VALUEmovhFindFile,eax.repeat;处理文件invokeFindNextFile,hFindFile,lpFindFileData.untileax ==FALSEinvokeFindClose,hFindFile.endif
lpFindFileData 指向WIN32_FIND_DATA,该结构中cFileName字段只返回文件名,不包含路径信息。
三、一些文件操作函数
获取文件类型:GetFileType
获取文件长度:GetFileSize
获取文件时间:GetFileTime (存于FILETIME结构)
修改文件时间:SetFileTime
文件时间格式转为系统时间格式:FIleTimeToSystemTime
系统时间格式转为文件时间格式:SystemTimeToFileTime
修改文件属性:SetFileAttributes (不需要打开文件,只需指定全路径的文件名即可)
获取文件属性:GetFileAttributes
拷贝文件:CopyFile,CopyFileEx (CopyFileEx可指定回调函数对数据进行处理,如显示进度等,适合大型文件的拷贝)
移动文件:MoveFile、MoveFileEx (MoveFileEx可以实现让系统在下次启动时删除指定文件)
删除文件:DeleteFile (关闭的文件才能删除)
四、驱动器和目录
创建、修改、删除卷标:SetVolumeLabel
逻辑驱动器检测:GetLogicalDrives:无输入参数,返回值0~25位分别代表A~Z盘符
GetLogicaDriveStrings:返回所有盘符组成的字符串,以0间隔
检测驱动器类型:GetDriveType
获取逻辑驱动器更多属性:GetVolumeInformation
检测逻辑驱动器剩余空间:GetDiskFreeSpace
创建和删除目录:CreateDirectory、RemoveDirectory (诸多注意 P371)
获取和修改当前目录:GetCurrentDirectory、SetCurrentDirectory
获取临时目录:GetTempPath
获取Windows目录:GetWindowsDirectory
获取系统目录:GetSystemDirectory
- Win32汇编——文件操作
- Win32汇编——内存映射文件
- Win32汇编--操作注册表
- Win32汇编——钩子
- Win32汇编——多线程
- Win32汇编教程十三 INI 文件的操作
- How——如何学习Win32汇编
- Win32汇编——内存管理
- Win32汇编——动态链接库
- Win32汇编--使用资源—版本信息资源
- Win32汇编阶段总结——基于Win32汇编的文本编辑器
- Win32汇编教程十三 INI 文件的操作 选择自 ghj1976 的 Blog
- win32 api 文件操作
- win32 api 文件操作!
- win32 api 文件操作
- win32 api 文件操作
- win32 api 文件操作
- win32(7)--文件操作
- minit2440 开发板网络配置的解决
- C++ 对象的内存布局(下)
- winform 运行中使用控制台动态输出调试及运行信息
- 动态规划解游船费用问题
- 关于SQL Server还原错误:The backup set holds a backup of a database other than the existing database.
- Win32汇编——文件操作
- HDU/HDOJ 3264 计算几何+二分 2009 宁波区域赛
- CentOS 安装Oracle netca 产生错误
- Jave语言和C#语言
- 用malloc动态分配二维数组
- 《当程序员的那些狗日日子》(三十八)仓促中的选择
- Boost学习系列6-多线程(下)
- UNIX/LINUX编程学习之信号2
- 程序员面试宝典笔记