HANDLE CreateFile(

LPCTSTR lpFileName, //指向文件名称的指针

DWORD dwDesiredAccess, //訪问模式(写/读)

DWORD dwShareMode, //共享模式

LPSECURITY_ATTRIBUTES lpSecurityAttributes, //指向安全属性的指针

DWORD dwCreationDisposition, //怎样创建

DWORD dwFlagsAndAttributes, //文件属性

HANDLE hTemplateFile //用于拷贝文件句柄

);

參数列表:

lpFileName

//指向一个空结尾字符串。

该參数指定了用于创建或打开句柄的对象。假设lpFileName的对 象是一个路径,则有一个最大字符数的限制。

不能超过常量(MAX_PATH).这个限制指示了CreateFile函数怎样解析路径.

dwDesiredAccess

//指定对象的訪问方式,程序能够获得读訪问权,写訪问权,读写訪问权或者是询问设备("device query") 訪问权.

这个參数能够是下列值的随意组合:

0             //指定询问訪问权.程序能够在不直接訪问设备的情况下查询设备的属性.

GENERIC_READ //指定读訪问权.能够从文件里读取数据,而且移动文件指针.能够和GENERIC_WRITE组合成为"读写訪问权". GENERIC_WRITE //指定写訪问权.能够从文件里写入数据,而且移动文件指针.能够和GENERIC_READ组合成为"读写訪问权".

dwShareMode

//设置位标志指明对象如休共享.假设參数是0, 对象不可以共享. 兴许的打开对象的操作将会失败,直到该对象的句柄关闭.

使用一个或多个下列值的组合来共享一个对象:

FILE_SHARE_DELETE //WINDOWS NT:兴许的只请求删除訪问权的打开操作将会成功.

FILE_SHARE_READ //兴许的只请求读訪问权的打开操作将会成功.

FILE_SHARE_WRITE //兴许的只请求写訪问权的打开操作将会成功.

lpSecurityAttributes

//指向一个 SECURITY_ATTRIBUTES 结构的指针用于确定怎样在子进程中继承这个句柄.假设这个參数是NULL,则该句柄不可继承.

dwCreationDisposition

//指定当文件存在或者不存在时怎样动作。

关于这个參数很多其它的信息。參考批注部分。这个參数必须是一个或多个下列值:

CREATE_NEW //创建一个新文件. 假设该文件已经存在函数则会失败.

CREATE_ALWAYS //创建一个新文件.假设该文件已经存在,函数将覆盖已存在的文件并清除已存在的文件属性

OPEN_EXISTING //打开一个文件,假设文件不存在函数将会失败.如查你使用CreateFile函数为设备装载控制台.请查看批注中的"为什么使用OPEN_EXISTING标志"的部分.

OPEN_ALWAYS //假设文件存在,打开文件. 假设文件不存在,而且參数中有CREATE_NEW标志,则创建文件.

TRUNCATE_EXISTING //打开一个文件,每次打开,文件将被截至0字节.调用进程必须用GENERIC_WRITE訪问模式打开文件.假设文件不存在则函数就会失败.

dwFlagsAndatributes

//为文件指定属性和标志位

该參数能够接收下列属性的随意组合.除非其他全部的文件属性忽略FILE_ATTRIBUTE_NORMAL.

FILE_ATTRIBUTE_ARCHIVE //文件将被存档,程序使用此属性来标志文件去备份或移除

FILE_ATTRIBUTE_HIDDEN //文件被隐藏,它不会在一般目录列表中被装载.

FILE_ATTRIBUTE_NORMAL //文件没有被设置不论什么属性.

FILE_ATTRIBUTE_OFFLINE //文件的数据没有被马上用到。指出正在脱机使用该文件。

FILE_ATTRIBUTE_READONLY //这个文件仅仅可读取.程序能够读文件,但不能够在上面写入内容,也不可删除.

FILE_ATTRIBUTE_SYSTEM //文件是系统的一部分,或是系统专用的.

FILE_ATTRIBUTE_TEMPORARY //文件被使用后。文件系统将努力为(文件的)全部数据的迅迅訪问保持一块内存。暂时文件应当在程序不用时及时删除。

dwFlagAndAttributes能够接受下列标志的随意组合。

FILE_FLAG_WRITE_THROUGH //指示系统通过高速缓存直接写入磁盘,

FILE_FLAG_OVERLAPPED //指示系统初始化对象, 此操作将对进程设置一个引用计数并返回ERROR_IO_PENDING.处理完毕后, 指定对象将被设置为信号状态.

当你指定FILE_FLAG_OVERLAPPED时,读写文件的函数必须指定一个OVERLAPPED结构.

而且,当FILE_FLAG_OVERLAPPED被指定, 程序必须运行重叠參数(指向OVERLAPPED 结构)去进行文件的读写.

这个标志也能够有超过一个操作去运行.

FILE_FLAG_NO_BUFFERING //指示系统不使用高速缓冲区或缓存,当和FILE_FLAG_OVERLAPPED组合,该标志给出最大的异步操作量, 由于I/O不依赖内存管理器的异步操作.然而,一些I/O操作将会执行得长一些,由于数据没有控制在缓存中.

当使用FILE_FLAG_NO_BUFFERING打开文件进行工作时,程序必须达到下列要求:

文件的存取开头的字节偏移量必须是扇区尺寸的整倍数.

文件存取的字节数必须是扇区尺寸的整倍数.比如,假设扇区尺寸是512字节 程序就行读或者写512,1024或者2048字节,但不可以是335,981或者7171 字节.

进行读和写操作的地址必须在扇区的对齐位置,在内存中对齐的地址是扇区 尺寸的整倍数.

一个将缓冲区与扇区尺寸对齐的途径是使用VirtualAlloc函数. 它分配与操作系统 内存页大小的整倍数对齐的内存地址.由于内存页尺寸和扇区尺寸--2都是它们的幂. 这块内存在地址中相同与扇区尺寸大小的整倍数对齐.

程序能够通过调用GetDiskFreeSpace来确定扇区的尺寸.

FILE_FLAG_RANDOM_ACCESS //指定文件是随机訪问,这个标志能够使系统优化文件的缓冲.

FILE_FLAG_SEQUENTIAL_SCAN //指定文件将从头到尾连续地訪问.这个标志能够提示系统优化文件缓冲. 假设程序在随机訪问文件里移动文件指针,优化可能不会发生;然而,正确的操作仍然能够得到保证

指定这个标志能够提高程序以顺序訪问模式读取大文件的性能, 性能的提高在很多 程序读取一些大的顺序文件时是异常明显的.可是可能会有小范围的字节遗漏.

FILE_FLAG_DELETE_ON_CLOSE 指示系统在文件全部打开的句柄关闭后马上删除文件.不仅仅有你能够指定FILE_FLAG_DELETE_ON_CLOSE

假设没有使用FILE_SHARE_DELETE,兴许的打开文件的请求将会失败.

FILE_FLAG_BACKUP_SEMANTICS //WINDOWS NT:指示系统为文件的打开或创建运行一个备份或恢复操作. 系统保证调用进程忽略文件的安全选项,倘若它必须有一个特权.则相关的特权则是SE_BACKUP_NAME和SE_RESTORE_NAME.

你也可以使用这个标志获得一个目录的句柄,一个目录句柄可以象一个文件句柄

一样传给某些Win32函数。

FILE_FLAG_POSIX_SEMANTICS //指明文件符合POSIX标准.这是在MS-DOS与16位Windows下的标准.

FILE_FLAG_OPEN_REPARSE_POINT //指定这个标志制约NTFS分区指针.该标志不可以和CREAT_ALWAYS一起使用.

FILE_FLAG_OPEN_NO_RECALL //指明须要文件数据,可是将继续从远程存储器中接收.它不会将数据存放在本地存储器中.这个标志由远程存储系统或等级存储管理器系统使用.

hTemplateFile

//为GENERIC_READ訪问的模式指定一个句柄到模板文件.模板文件在文件開始创建后提供文件属性和扩展属性.

返回值

//假设函数成功,返回一个打开的指定文件的句柄.假设指定文件在函数调用前已经存在而且dwCreation參数是CREATE_ALWAYS 或者OPEN_ALWAYS,调用GetLastError就会返回ERROR_ALREADY_EXISTS(表示函数成功). 假设函数文件在调用前不存在则会返回0.

//假设函数失败,返会值会是INVALID_HANDLE_VALUE. 很多其它的错误信息能够调用GetLastError来获得.

串口之CreateFile 函数具体解释的更多相关文章

  1. 第10章 同步设备I/O和异步设备I/O(1)_常见设备及CreateFile函数

    10.1 打开和关闭设备 10.1.1 设备的定义——在Windows中可以与之进行通信的任何东西. (1)常见设备及用途 设备 用途 用来打开设备的函数 文件 永久存储任何数据 CreateFile ...

  2. CreateFile函数详解

    CreateFile函数详解 CreateFile The CreateFile function creates or opens the following objects and returns ...

  3. CreateFile函数详解(确实很详细)

    CreateFile The CreateFile function creates or opens the following objects and returns a handle that ...

  4. CreateFile函数使用方法详细介绍

    CreateFileThe CreateFile function creates or opens the following objects and returns a handle that c ...

  5. Windows下createfile函数用GENERIC_READ访问模式打不开磁盘

    这两天做毕设,快气死了!想读写磁盘扇区,我就百度了,都是这样写的: HANDLE hDevice = CreateFile(TEXT("\\\\.\\PhysicalDrive1" ...

  6. openssl之EVP系列之8---EVP_Digest系列函数具体解释

    openssl之EVP系列之8---EVP_Digest系列函数具体解释     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译和自己的理解写成     (作 ...

  7. scanf函数具体解释与缓冲区

    1.基本信息 函数原型: int scanf( char *format, args, ...); 函数返回值: 读入并赋给args的数据个数.遇到文件结束返回EOF,出错返回0. 函数功能: sca ...

  8. 经常使用socket函数具体解释

    经常使用socket函数具体解释 关于socket函数,每一个的意义和基本功能都知道,但每次使用都会去百度,參数究竟是什么,返回值代表什么意义.就是说用的少,也记得不够精确. 每次都查半天.常常烦恼于 ...

  9. openssl之EVP系列之5---EVP_Encrypt系列函数具体解释(二)

    openssl之EVP系列之5---EVP_Encrypt系列函数详细解释(二)    ---依据openssl doc/crypto/EVP_EncryptInit.pod和doc/ssleay.t ...

随机推荐

  1. java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'user'

    转自: https://blog.csdn.net/Winter_chen001/article/details/77332944

  2. 实现第三方登录(QQ、微信、微博)

    第三方登录,就是使用大家比较熟悉的比如QQ.微信.微博等第三方软件登录自己的网站,这可以免去注册账号.快速留住用户的目的,免去了相对复杂的注册流程.下边就给大家讲一下怎么使用PHP开发QQ登录的功能. ...

  3. WPF 资源管理器 WPF Explorer

    最近项目中有个功能是读取外部设备的中的文件,同时由于项目样式限制,因此需要需要简单实现一个Window资源管理器功能. 由于为了接下来工作更好地完善功能,因此先一步做了一个DEMO用于参照和不断的修正 ...

  4. 以shareExtension为例学习iOS扩展开发

    整体介绍 phone Extension 用法基础详解 share Extension 用法基础详解 demo链接   密码: i72z

  5. NagiosQL安装

        NagiosQL和Nconf是比较好用的Nagios配置工具. 一.安装NagiosQL 1.在服务器终端运行以下命令: ##YUM安装PHP模块yum -y install --disabl ...

  6. Java入门第一季——从此投身Java??

    找工作告一段落. 最后的工作呢,和java紧密相关,也是阴差阳错,不过都是软件开发,都好了,不过以后侧重点肯定是在java这边,php有机会还是一直学下去的,那么美的说~ Java开发第一季  一.简 ...

  7. C# DataTable 转 json

    public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //窗体 ...

  8. 应用五:Vue之ElementUI 表格Table与分页Pagination组件化

    (注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的) 在平时的web项目开发过程中,列表分页查询展示应用的很频繁,为了便于阅读并减少代码的冗余,所 ...

  9. layer弹出框的用法

    页面中引入  layer.js 就行了 1.弹出一个提示信息: layer.msg("我是哦提示信息"); 2.弹出一个带选择的按钮的框 layer.open({ title: ' ...

  10. MongoDB_"Error parsing YAML config file: yaml-cpp: error at line 3, column 9: illegal map value"解决方法

    在启动配置文件的时候,系统报错:Error parsing YAML config file: yaml-cpp: error at line 3, column 9: illegal map val ...