函数原型: 


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. jquery获取当前元素坐标

    1. jquery获取当前元素坐标 A) 获取对象

  2. Hacker(16)----防范端口扫描与嗅探

    端口扫描与嗅探都是黑客常用的招数,其目的是定位目标计算机和窃取隐私信息.为确保自己计算机的安全,用户需要掌握防范嗅探与端口扫描的常见措施,保障个人隐私信息安全. 一.掌握防范端口扫描的常用措施 防范端 ...

  3. .NET基础拾遗(6)特性

    1 神马是特性?如何自定义一个特性? (1)特性是什么     特性是一个对象,可以加载到程序集及程序集的对象中,这些对象包括 程序集本身.模块.类.接口.结构.构造函数.方法.方法参数等,加载了特性 ...

  4. 《第一行代码》学习笔记30-内容提供器Content Provider(3)

    1."如何在自己的程序中访问其他应用程序的数据",思路->获取到该应用程序的内容URI,再借助ContentResolver进行CRUD操作. 2.要实现跨程序共享数据-&g ...

  5. .net 调用Oracle.Data.Access 组件提供的用于批量操作的方法—获取数据库表结构方法和跟参数赋值方法

    1./// <summary> /// 获取当前目标表结构 /// </summary> /// <param name="tableName"> ...

  6. 0301——SearchController

    创建显示的页面 SearchViewController * searchVC = [[SearchViewController alloc]init]; 告诉搜索控制器将结果显示在创建的页面上 se ...

  7. iOS中发送xml给服务器

    转载自:http://www.cocoachina.com/bbs/read.php?tid-456019.html 一.用URLSession请求 NSString *soapStr = [NSSt ...

  8. hdu Repositoryti

    算法:字典树 题意:给你一些字符串,然后会有一些询问,输出询问在给定的字符串中出现了多少次(字串也是): 例如 add,子串有:a ,d,d,ad ,dd,add:你会发现子串d出现了两次,那么怎么办 ...

  9. webview 上 postUrl 发送参数过程中数据丢失或错误 的问题

    用到了android 的 webview 来展示页面.webview需要用post来传递参数.于是问题出现了,后台解析中发现参数错误. 之前有因为String 和byte[]转行时,数据丢失的问题,于 ...

  10. 自定义View—绘制基本图形

    一.Canvas能够绘制哪些图形 二.