h5开发网站优点,北斗手表官方网站,92素材网,世界各国足球联赛排名目录
一、函数原型与基本功能
二、参数详解
1. lpFileName#xff08;文件路径#xff09;
2. dwDesiredAccess#xff08;访问权限#xff09;
补充说明
3. dwShareMode#xff08;共享模式#xff09;
5. dwCreationDisposition#xff08;创建策略#xff09…目录
一、函数原型与基本功能
二、参数详解
1. lpFileName文件路径
2. dwDesiredAccess访问权限
补充说明
3. dwShareMode共享模式
5. dwCreationDisposition创建策略
6. dwFlagsAndAttributes属性标记
7. hTemplateFile模板文件句柄
三、返回值与错误处理
四、使用场景示例
场景1创建新文本文件
场景2异步读取串口数据
五、扩展注意事项 CreateFile函数是Windows API中用于文件/设备操作的核心接口支持创建、打开文件及多种I/O设备如串口、管道、磁盘等。本文将详细介绍。
一、函数原型与基本功能
HANDLE CreateFile(LPCTSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode,LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition,DWORD dwFlagsAndAttributes,HANDLE hTemplateFile
); 该函数返回对象的操作句柄失败时返回INVALID_HANDLE_VALUE需用GetLastError()获取错误码。
二、参数详解
1. lpFileName文件路径
作用指定操作对象的名称文件、设备、命名管道等特性 支持绝对/相对路径可用/或\分隔符最大长度限制为MAX_PATH260字符Unicode版本可突破此限制特殊设备名如COM1串口、LPT1并口需遵循MS-DOS设备命名规则
2. dwDesiredAccess访问权限 以下是 CreateFile 函数中 dwDesiredAccess 参数的可能值、用途、适用场景及组合使用的详细表格总结 参数值用途适用场景组合使用示例0仅允许查询元数据如属性、大小不进行实际读写操作获取文件信息GetFileSize、GetFileTime时无需读写权限单独使用GENERIC_READ允许读取文件或设备数据支持移动文件指针读取文件内容ReadFile、查看日志、复制文件GENERIC_READ | GENERIC_WRITE读写权限组合GENERIC_WRITE允许写入数据支持移动文件指针或调整文件大小写入文件WriteFile、修改设备配置如串口通信GENERIC_READ | GENERIC_WRITE常见组合、GENERIC_WRITE | GENERIC_ALLGENERIC_EXECUTE保留值通常用于可执行文件或驱动程序的执行权限需设备支持注册表操作、可执行文件加载实际文件操作中较少使用通常单独使用需参考具体设备文档GENERIC_ALL授予完全控制权限读、写、执行、删除需配合安全描述符使用管理员操作修改系统文件、磁盘格式化单独使用或与 0 组合查询元数据 完全控制 补充说明
权限冲突若请求的访问权限与 dwShareMode 参数指定的共享模式冲突函数将返回 ERROR_SHARING_VIOLATION。设备兼容性如串口设备通常需同时指定 GENERIC_READ \| GENERIC_WRITE 以支持双向通信。特殊权限要求GENERIC_ALL 需管理员权限或安全描述符支持否则可能失败。
3. dwShareMode共享模式
控制其他进程的并发访问权限
值说明FILE_SHARE_READ允许其他进程读取FILE_SHARE_WRITE允许其他进程写入FILE_SHARE_DELETE允许其他进程删除或重命名需NTFS支持30独占模式阻止其他进程访问
4. lpSecurityAttributes安全属性
结构体
typedef struct _SECURITY_ATTRIBUTES {DWORD nLength;LPVOID lpSecurityDescriptor;BOOL bInheritHandle;
} SECURITY_ATTRIBUTES;
作用
bInheritHandle控制句柄是否被子进程继承lpSecurityDescriptor设置NTFS权限需管理员权限
5. dwCreationDisposition创建策略
决定文件存在与否时的处理方式
值行为CREATE_NEW新建文件若存在则失败CREATE_ALWAYS覆盖已有文件清空属性OPEN_EXISTING打开已存在文件不存在则失败OPEN_ALWAYS文件存在时打开否则创建TRUNCATE_EXISTING截断已有文件需GENERIC_WRITE权限
6. dwFlagsAndAttributes属性标记
包含文件属性与操作标志的位组合
常见文件属性 属性说明FILE_ATTRIBUTE_HIDDEN隐藏文件FILE_ATTRIBUTE_READONLY只读文件FILE_ATTRIBUTE_TEMPORARY临时文件优先内存缓存1 操作标志 标志说明FILE_FLAG_OVERLAPPED启用异步I/O操作FILE_FLAG_DELETE_ON_CLOSE关闭后自动删除
7. hTemplateFile模板文件句柄
作用复制已有文件的扩展属性如创建时间、压缩标志限制仅当dwCreationDisposition为CREATE_NEW或OPEN_ALWAYS时生效8
三、返回值与错误处理
成功时返回有效的句柄需用CloseHandle()关闭失败时返回INVALID_HANDLE_VALUE值为-1 典型错误码 错误码说明ERROR_FILE_NOT_FOUND文件不存在且未指定创建策略ERROR_ACCESS_DENIED权限不足或文件被占用ERROR_SHARING_VIOLATION共享模式与其他进程冲突3
四、使用场景示例
场景1创建新文本文件
HANDLE hFile CreateFile(Lexample.txt, // 文件名GENERIC_WRITE, // 写权限0, // 独占模式NULL, // 默认安全属性CREATE_ALWAYS, // 覆盖创建FILE_ATTRIBUTE_NORMAL, // 普通文件NULL
);
场景2异步读取串口数据
HANDLE hCom CreateFile(LCOM1, // 串口设备GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_FLAG_OVERLAPPED, // 异步模式NULL
);
五、扩展注意事项
句柄泄漏必须通过CloseHandle()释放资源否则导致系统资源耗尽路径规范化建议使用\\?\前缀绕过MAX_PATH限制仅Unicode版本事务操作需使用CreateFileTransacted()实现原子文件操作3设备兼容性部分标志如FILE_FLAG_NO_BUFFERING对物理磁盘有特殊要求
完整参数列表及系统级限制可参考Microsoft官方文档