函数原型: 


HANDLE 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下组合使用下述常数标记:

  SECURITY_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、直接在函数内指定文件地址:



  1. void playCEwav()

  2. {

  3. CHAR *pBuffer;

  4. DWORD RSize;

  5. int fileSize = 0;

  6. int i;
  7. HANDLE hOpenFile = (HANDLE)CreateFile(L"E://a.text", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);

  8. if (hOpenFile == INVALID_HANDLE_VALUE)

  9. {

  10. hOpenFile = NULL;

  11. MessageBoxA(NULL, "Can not open the file", "Playwav", MB_OK);

  12. }

  13. fileSize = GetFileSize(hOpenFile, NULL);

  14. pBuffer = (CHAR *) malloc(fileSize);

  15. ReadFile(hOpenFile, pBuffer, fileSize, &RSize, NULL);

  16. //可将pBuffer显示在某区域或写入还有一个文件来检查读出是否正确

  17. free(pBuffer);

  18. }

2、把文件地址通过參数传入:



  1. void playwav(TCHAR * path)

  2. {

  3. CHAR *pBuffer;

  4. DWORD RSize;

  5. int fileSize = 0;

  6. int i;

  7. TCHAR szPath[100];
  8. memset(szPath, 0, sizeof(szPath));

  9. _tcscpy(szPath, path);
  10. HANDLE hOpenFile = (HANDLE)CreateFile(szPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, NULL, NULL);

  11. if (hOpenFile == INVALID_HANDLE_VALUE)

  12. {

  13. hOpenFile = NULL;

  14. MessageBoxA(NULL, "Can not open the file", "Playwav", MB_OK);

  15. }

  16. fileSize = GetFileSize(hOpenFile, NULL);

  17. pBuffer = (CHAR *) malloc(fileSize);

  18. ReadFile(hOpenFile, pBuffer, fileSize, &RSize, NULL);

  19. free(pBuffer);

  20. }

CreateFile使用方法和样例的更多相关文章

  1. Swift - 自动布局库SnapKit的使用详解1(配置、使用方法、样例)

    为了适应各种屏幕尺寸,iOS 6后引入了自动布局(Auto Layout)的概念,通过使用各种 Constraint(约束)来实现页面自适应弹性布局. 在 StoryBoard 中使用约束实现自动布局 ...

  2. Mockito的简单使用方法演示样例

    Mockito是一个流行的Mocking框架.它使用起来简单,学习成本非常低.并且具有非常简洁的API,測试代码的可读性非常高.因此它十分受欢迎,用 户群越来越多.非常多的开源的软件也选择了Mocki ...

  3. CSS3中transform,transition和animation的简单介绍和使用方法演示样例

    transform是一个属性,本质跟width,height是一样的,加上transform也就是为类添加一个变换属性. transition是一个属性.它是用来控制过渡效果的,由于用transfor ...

  4. C++ Primer中文本查询演示样例Query的实现

    近期在看C++ Primer复习C++的语法,看到书中15.9章中的文本查询演示样例时,认为设计得非常不错,于是便动手照着实现了一个,改动了非常久最终执行成功了,从中也学习到了非常多的语法.以下把实现 ...

  5. 【Scala篇】--Scala中Trait、模式匹配、样例类、Actor模型

    一.前述 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大. 模式匹配机制相当于java中的switch-case. 使用了case关键字的类定义就是样例类(case ...

  6. HBase总结(十一)hbase Java API 介绍及使用演示样例

    几个相关类与HBase数据模型之间的相应关系 java类 HBase数据模型 HBaseAdmin 数据库(DataBase) HBaseConfiguration HTable 表(Table) H ...

  7. extern外部方法使用C#简单样例

    外部方法使用C#简单样例 1.添加引用using System.Runtime.InteropServices; 2.声明和实现的连接[DllImport("kernel32", ...

  8. Swift - 动画效果的实现方法总结(附样例)

    在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimations.这三个方法都是类方法. 一,使用 ...

  9. SNF开发平台WinForm-审核流使用方法样例

    一.效果如下: 二.如何实现 1.程序的数据表设计规范,参考<09.SNF-C#编程规范V1.5.docx>文件. 2.程序操作程序 2.1.在程序页面拖拽控件 2.2.程序的Load事件 ...

随机推荐

  1. Linux的启动流程

    1.首先是bios加电自检.初始化,这个过程会检测相关硬件(cpu.内存.硬盘等),然后会读取硬盘中的MBR:2.加载内核,读取/boot里边的配置文件:3.启动初始化进程,开始运行/sbin/ini ...

  2. (转)SQL中的ISNULL函数介绍

    SQL中有多种多样的函数,下面将为您介绍SQL中的ISNULL函数,包括其语法.注释.返回类型等,供您参考,希望对您学习SQL能够有所帮助. ISNULL 使用指定的替换值替换 NULL. 语法ISN ...

  3. 《第一行代码》学习笔记6-活动Activity(4)

    1.SecondActivity不是主活动,故不需要配置标签里的内容. 2.Intent是Android程序中各组件之间进行交互的一种重要方式,一般可被用于 启动活动,启动服务,以及发送广播等.Int ...

  4. silverlight .net后台 设置visifire控件图表样式 属性说明

    .net后台 代码: 如图 Chart chart = new MyCharts();  //图表            //chart.Watermark = false;  //没好使       ...

  5. NSString 使用小结

    http://blog.csdn.net/ms2146/article/details/8654148

  6. C# 几十万级数据导出Excel,及Excel各种操作

    先上导出代码 /// <summary> /// 导出速度最快 /// </summary> /// <param name="list">&l ...

  7. ssh maven 搭建

    数据库建表脚本不带,是很简单的一个表,把数据库环境搭建起来即可. 1.项目结构(Eclipse) 2.pom.xml <project xmlns="http://maven.apac ...

  8. 解决django关于图片无法显示的问题

    http://python.usyiyi.cn/django/index.html http://m.blog.csdn.net/blog/qingyuanluofeng/44877399 http: ...

  9. js复制对象 和 节点类型和NodeList

    1. myList.cloneNode(true); 在参数为true的情况下,执行深复制,也就是复制节点及其整个子节点树,包括属性 2. myList.cloneNode(false); 在参数为f ...

  10. PHPexcel 判断日期类型

    若已经确定某列为日期型数据: for($currentRow=2;$currentRow <= $allRow;$currentRow++){ //从哪列开始,A表示第一列 for($curre ...