win32 api 文件处理
2021-05-03 06:27
标签:读文件 pen obj buffer rom size stdio.h test while 编写winapi程序,要引入 windows.h 头文件 对于控制台程序来说,入口函数为 int main() , 对应的用于接受命令行的入口函数为 int main( int argc , LPTSTR argv[] ) , 其中的 LPTSTR 可视为 字符指针 windows的数据宏名命名有一定的规则 如 LPTSTR 中 LP为 long pointer长指针 ,T 为通用之意(ansi和unicode字符处理),STR即string 一般以LP和P开头的都为指针类型 对一个文件进行操作,首先要获得文件句柄,我理解这个句柄就是对文件的引用,句柄的类型为HANDLE 首先使用CreateFile函数创造句柄,函数原型如下 其中lpName为文件所在路径,LPCTRSTR与上面的类似,多出来的C表示常量const,所以此参数可以视为字符串,注意文件路径中的斜杠要转义 dwAccess为指定访问方式,可以输入GENERIC_READ或者GENERIC_WRITE,或GENERIC_READ | GENERIC_WRITE表示同时具有读写访问 dwShareMode为文件共享方式,输入0为不能共享,即只能打开这一个HANDLE。其他可选的参数有FILE_SHARE_READ和FILE_SHARE_WRITE lpSecurityAttribute指定安全性,可以使用NULL表示默认安全性 dwCreate的参数如下: CREATE_NEW 创建新文件,如果指定文件已经存在则创建失败 CREATE_ALWAYS 创建新文件,如果存在则覆盖 OPEN_EXISTING 打开现有文件,如果文件不存在则失败 OPEN_ALWAYS 打开现有文件,如果不存在则创建 TRUNCATE_EXISTING 需指定GENERIC_WRITE,文件存在则内容被销毁,文件不存在则失败 dwAttrsAndFlags 指定文件属性和标志,一般为FILE_ATTRIBUTE_NORMAL hTemplateFile 指定创建文件时的模板,通常为NULL 创建句柄后通过比较该句柄是否为 INVALID_HANDLE_VALUE 来判断是否创建成功 对文件的一些操作函数如下: 读文件 ReadFile 第一项是CreateFile创建的句柄 第二项为读字符存放的缓冲区,可自己定义一个字符数组传入,字符数组使用前用ZeroMemory函数将此区域清零 第三项为要读入字节的数量,为输入参数,第四项为实际读入字节的数量,为输出参数,可以比较这两个值是否相等判断操作是否失败 第五项目前传入NULL 写文件 WriteFile 与上一个函数类似,其中lpBuffer是要写入的字符 句柄创建使用后应该关闭,使用 BOOL CloseHandle ( HANDLE object ),关闭一个无效句柄或者关闭两个句柄将抛出异常,无须关闭也不应关闭标准设备句柄 示例程序:复制文件 命令行需要带两个参数,第一个参数为源文件路径,第二个参数为目的文件路径 win32 api 文件处理 标签:读文件 pen obj buffer rom size stdio.h test while 原文地址:http://www.cnblogs.com/nival/p/7750149.htmlHANDLE CreateFile (
LPCTSTR lpName,
DWORD dwAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreate,
DWORD dwAttrsAndFlags,
HANDLE hTempateFile )
BOOL ReadFile (
HANDLE hFile ,
LPVOID lpBuffer ,
DWORD nNumberOfBytesToRead ,
LPDWORD lpNumberOfBytesRead ,
LPOVERLAPPED lpOverlapped )
BOOL WriteFile (
HANDLE hFile ,
LPVOID lpBuffer ,
DWORD nNumberOfBytesToWrite ,
LPDWORD lpNumberOfBytesWrite ,
LPOVERLAPPED lpOverlapped )
#include
上一篇:[poj 2482] Stars in Your Window
下一篇:在 Windows Server Container 中运行 Azure Storage Emulator(三):运行在容器中