CreateFile用法和例子

函数原型:123456789HANDLE CreateFile(LPCTSTR lpFileName,//指向文件名的指针DWORD dwDesiredAccess,//访问模式(写/读)DWORD dwShareMode,//共享模式LPSECURITY_ATTRIBUTES lpSecurityAttributes,//指向安全属性的指针DWORD dwCreationDisposition,//如何创建DWORD dwFlagsAndAttributes,//文件属性HANDLE hTemplateFile//用于复制文件句柄);

参数列表

lpFileName String 要打开的文件的名字

dwDesiredAccess Long 如果为 GENERIC_READ 表示允许对设备进行读访问;如果为 GENERIC_WRITE 表示允许对设备进行写访问(可组合使用);如果为零,表示只允许获取与一个设备有关的信息

dwShareMode Long, 零表示不共享; FILE_SHARE_READ 和/或 FILE_SHARE_WRITE 表示允许对文件进行共享访问

lpSecurityAttributes SECURITY_ATTRIBUTES, 指向一个SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性(如果操作系统支持的话)

dwCreationDisposition Long,下述常数之一:

CREATE_NEW 创建文件;如文件存在则会出错

CREATE_ALWAYS 创建文件,会改写前一个文件

OPEN_EXISTING 文件必须已经存在。由设备提出要求

OPEN_ALWAYS 如文件不存在则创建它

TRUNCATE_EXISTING 讲现有文件缩短为零长度

dwFlagsAndAttributes Long, 一个或多个下述常数

FILE_ATTRIBUTE_ARCHIVE 标记归档属性

FILE_ATTRIBUTE_COMPRESSED 将文件标记为已压缩,或者标记为文件在目录中的默认压缩方式

FILE_ATTRIBUTE_NORMAL 默认属性

FILE_ATTRIBUTE_HIDDEN 隐藏文件或目录

FILE_ATTRIBUTE_READONLY 文件为只读

FILE_ATTRIBUTE_SYSTEM 文件为系统文件

FILE_FLAG_WRITE_THROUGH 操作系统不得推迟对文件的写操作

FILE_FLAG_OVERLAPPED 允许对文件进行重叠操作

FILE_FLAG_NO_BUFFERING 禁止对文件进行缓冲处理。文件只能写入磁盘卷的扇区块

FILE_FLAG_RANDOM_ACCESS 针对随机访问对文件缓冲进行优化

FILE_FLAG_SEQUENTIAL_SCAN 针对连续访问对文件缓冲进行优化

FILE_FLAG_DELETE_ON_CLOSE 关闭了上一次打开的句柄后,将文件删除。特别适合临时文件

也可在Windows NT下组合使用下述常数标记:1SECURITY_ANONYMOUS, SECURITY_IDENTIFICATION, SECURITY_IMPERSONATION, SECURITY_DELEGATION, SECURITY_CONTEXT_TRACKING, SECURITY_EFFECTIVE_ONLY

hTemplateFile Long, 如果不为零,则指定一个文件句柄。新文件将从这个文件中复制扩展属性

返回值

如执行成功,则返回文件句柄。

INVALID_HANDLE_VALUE表示出错,会设置GetLastError。即使函数成功,但若文件存在,且指定了CREATE_ALWAYS 或 OPEN_ALWAYS,GetLastError也会设为ERROR_ALREADY_EXISTS

(以上摘自百度百科)

实例:

1、直接在函数内指定文件地址:123456789101112131415void playCEwav(){CHAR *pBuffer;DWORD RSize;int fileSize = 0;int i;HANDLE hOpenFile = (HANDLE)CreateFile(L"E:\\a.text", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);if (hOpenFile == INVALID_HANDLE_VALUE){hOpenFile = NULL;MessageBoxA(NULL,"Can not open the file","Playwav", MB_OK);}fileSize = GetFileSize(hOpenFile, NULL);pBuffer = (CHAR *)malloc(fileSize);ReadFile(hOpenFile, pBuffer, fileSize, &RSize, NULL);//可将pBuffer显示在某区域或写入另一个文件来检查读出是否正确

free(pBuffer);

}

2、把文件地址通过参数传入:1234567891011121314151617181920void playwav(TCHAR * path){CHAR *pBuffer;DWORD RSize;int fileSize = 0;int i;TCHAR szPath[100];memset(szPath, 0,sizeof(szPath));_tcscpy(szPath, path);HANDLE hOpenFile = (HANDLE)CreateFile(szPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);if (hOpenFile == INVALID_HANDLE_VALUE){hOpenFile = NULL;MessageBoxA(NULL,"Can not open the file","Playwav", MB_OK);}fileSize = GetFileSize(hOpenFile, NULL);pBuffer = (CHAR *)malloc(fileSize);ReadFile(hOpenFile, pBuffer, fileSize, &RSize, NULL);free(pBuffer);}

linux中creat-file函数,c语言createfile函数用法?相关推荐

  1. 【Rust 日报】2021-11-11 保持冷静,学习Rust,我们很快就会在Linux中更多的看到这种语言...

    为Rust有很多字符串类型而烦恼吗?好吧,它没有必要 众所周知Rust有几种不同的字符串类型.两个主要的竞争者是: &str是一个 "字符串引用".它是不可调整大小的,它的 ...

  2. 在Linux 中编写并运行C语言

    在Linux 中编写并运行C语言 流程 后续 流程 首先我们创建一个C语言文件 vim 1.c 我们进行相关程序的编写(我们以简单的输入输出为例) #include <stdio.h> i ...

  3. c语言文件打开函数,C语言fopen函数中文件打开方式(参数值)

    满意答案 keaichengb.. 推荐于 2017.09.05 采纳率:40%    等级:12 已帮助:3704人 C语言fopen函数用于打开文件. 函数原型:FILE * fopen(cons ...

  4. c语言createfile函数,c ++ CreateFile函数错误[关闭](c++ CreateFile function error [closed])

    c ++ CreateFile函数错误[关闭](c++ CreateFile function error [closed]) 我想使用函数CreateFile来创建一个文件,但有些东西是错的,我不知 ...

  5. c语言timer linux 回调函数_C语言回调函数详解

    1. 什么是回调函数? 回调函数,光听名字就比普通函数要高大上一些,那到底什么是回调函数呢?恕我读得书少,没有在那本书上看到关于回调函数的定义.我在百度上搜了一下,发现众说纷纭,有很大一部分都是使用类 ...

  6. c语言中求大于的函数,c语言编写函数,求一组数中大于平均值的数的个数.

    C语言编写程序 给定一组数,求大于0,等于0,小于0的数据个数 #define N 10 main(){int num1=0,num2=0,num3=0,i;for(i=0;i 一道C语言题目:求一组 ...

  7. 使用gcc与makefile在linux中运行简单的c语言程序

    目录 使用GCC编译C语言程序 示例代码 main1.c sub1.c 编译与链接 使用Makefile 在Windows下运行程序 使用GCC编译C语言程序 示例代码 main1.c 说明:主程序文 ...

  8. linux怎么看go写的程序进程,Linux中查看进程状态信息-Go语言中文社区

    Linux中查看进程状态信息 一.常用命令总结 ps -l   列出与本次登录有关的进程信息: ps -aux   查询内存中进程信息: ps -aux | grep ***   查询***进程的详细 ...

  9. linux c语言 休眠函数,c语言sleep函数报错

    关于sleep()函数在windows系统和linux系统下是两个不同的函数,差别较大,但功能是相同的,都是将进程挂起一段时间. windows系统下函数名为Sleep(),其函数原型为: #incl ...

最新文章

  1. 数据库-数据库的介绍
  2. linux查找influx的安装位置,InfluxDB学习之InfluxDB的安装和简介 | Linux大学
  3. 常用SQL语句实例 11
  4. bzoj1038 [ZJOI2008]瞭望塔 枚举
  5. fib函数用python编写求第n项_第6章函数-4 使用函数输出指定范围内Fibonacci数的个数|简明python教程|python入门|python教程...
  6. helm安装_安装 helm 包管理工具
  7. jquery ajax实例 php,jquery中各个ajax实例操作
  8. 27. netstat
  9. python计算机视觉编程——sift特征提取和ransac减少错配
  10. 小米便签源码分析——data包
  11. 企业级大数据智能分析平台 -- DataA
  12. oracle11g64位怎么用sql,plsql32 位连接oracle11g64位方法
  13. 浅谈选择示波器时的“5倍法则”
  14. Tensorflow Serving部署模型
  15. STM32仿真器下载配置
  16. HTML Table之展开收起
  17. html表格背景图片格式,css背景颜色、背景图片,以及列表的多种样式
  18. Konga面板接入LDAP踩坑实战
  19. 中兴手机、泰康:微信营销的妙用与滥用
  20. 时间的基本概念及GPS北斗卫星时钟授时技术

热门文章

  1. 服务器环境部署:Redis布隆过滤器使用
  2. BP神经网络原理详解
  3. Android Studio Electric Eel 起支持手机投屏
  4. SuspendLayout()用处
  5. NVIDIA Jetson TX1介绍(一)
  6. 最新PHP栀子花授权系统源码+功能强大
  7. [转载]钟茂森博士出家,净空老法师现场见证出家盛况_huadingjin_新浪博客
  8. 520怎么过?用代码把她感动哭~~
  9. 查询和 01 号的同学学习的课程完全相同的其他同学的信息
  10. 2021年福州大学物信/先进学院866(信号与系统)报录分析