CreateFile使用方法和样例

 

函数原型: 

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使用方法和样例,布布扣,bubuko.com

时间: 2024-11-05 11:28:06

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

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

为了适应各种屏幕尺寸,iOS 6后引入了自动布局(Auto Layout)的概念,通过使用各种 Constraint(约束)来实现页面自适应弹性布局. 在 StoryBoard 中使用约束实现自动布局很方便,但如果用纯代码来设置约束就很麻烦了.这里向大家推荐一个好用的第三方布局库:SnapKit(其前身是 Masonry,一个OC版的布局库) 1.SnapKit介绍 SnapKit是一个优秀的第三方自适应布局库,它可以让iOS.OS X应用更简单地实现自动布局(Auto Layout).GtiH

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

一.前述 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大. 模式匹配机制相当于java中的switch-case. 使用了case关键字的类定义就是样例类(case classes),样例类是种特殊的类. Actor相当于Java中的多线程. 二.具体阐述 trait特性 1.概念理解 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大. 与接口不同的是,它还可以定义属性和方法的实现. 一般情况下Scala的类可以继承多个Tra

Android Studio下Android应用开发集成百度语音合成使用方法样例

转载请注明来源: http://blog.csdn.net/kjunchen/article/details/51093134 Android Studio下Android应用开发集成百度语音合成使用方法样例 首先,语音合成是指将文本信息转换成声音.意思就是将文本转化为声音,让你的应用开口说话.国内在业内比较有名的第三方语音合成平台有百度语音和科大讯飞. 本博文集成的是百度语音合成,其主要特点是: 完全永久免费 业界首创完全永久免费新形式,为开发者提供最流畅最自然的语音合成服务.完全免费,永久使

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

在iOS中,实现动画有两种方法.一个是统一的animateWithDuration,另一个是组合出现的beginAnimations和commitAnimations.这三个方法都是类方法. 一,使用animateWithDuration来实现动画 (1)此方法共有5个参数: duration:动画从开始到结束的持续时间,单位是秒 delay:动画开始前等待的时间 options:动画执行的选项.里面可以设置动画的效果.可以使用UIViewAnimationOptions类提供的各种预置效果 a

Python Socket 编程——聊天室演示样例程序

上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的样例,就是同意多个人同一时候一起聊天.每一个人发送的消息全部人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.例如以下图: 图来自:http://www.ibm.com/developerworks/linux/tu

ADF Faces导出Excel文件【附样例工程】

本文提供一个基于ADF Face组件开发样例工程,工程的实现过程分为3个部分以应对Excel导出开发中常见的处理. 1.空模版文件下载:将Excel文件视为普通文件提供下载操作. 2.数据文件输出,将数据内容输出为Excel文件,目标文件尽在服务端内存中存在,这种方式需要对Excel文件的内容处理,需要引入响应的类库. 3.模版文件填充数据后下载,基于服务端的物理文件为模板,将业务数据填入约定位置后提供下载,在实现方面需要为工作簿对象指定源文件输入流,并完成后续内容处理. 实现的基本思路,由AD

Java向上转型和向下转型(附具体样例)

                                            Java向上转型和向下转型(附具体样例) 熬夜整理的关于Java向上和向下转型的样例,很的通俗易懂哦~~~~ 一.向上转型 package com.sheepmu; class Animal { public void eat() { System.out.println("父类的 eating..."); } } class Bird extends Animal { @Override publ

Relation Extraction中SVM分类样例unbalance data问题解决 -松弛变量与惩罚因子

转载自:http://blog.csdn.net/yangliuy/article/details/8152390 1.问题描述 做关系抽取就是要从产品评论中抽取出描述产品特征项的target短语以及修饰该target的opinion短语,在opinion mining里面属于很重要的task,很多DM.NLP相关的paper在做这方面的工作.基本的思路是: (1)从sentence的parse tree(比如stanford parser)中选取候选target结点和候选opinion结点,然

Python word_cloud 样例 标签云系列(三)

转载地址:https://zhuanlan.zhihu.com/p/20436642word_cloud/examples at master · amueller/word_cloud · GitHub 上面是官方样例.这一篇里的大部分尝试都基于这些样例进行修改.前提是你已经完成了安装,依照上一篇修改了 FONT_PATH . 还记得 http://zhuanlan.zhihu.com/666666/20432734 里提到的中文分词方法吧,这次我们就不再赘述对文本的预处理了.有所不同的是,在