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

1、lpFileName
    一个指向无终结符的字符串的指针,来指明要创建或打开的对象的名字。

2、dwDesiredAccess
    指明对象的控制模式。一个应用程序可以包含读控制、写控制、读/写控制、设备查询控制。
这个参数的取值可以是下面这些的组合:
    0                                             指定设备查询控制:程序可以不访问设备就查询到设备属性。
    GENERIC_READ                指定读控制,可以从对象中读取数据(指针将可以移动)。
    GENERIC_WRITE               指定写控制,可以向对象中写数据(指针将可以移动)。
3、dwShareMode
    指定对象的共享模式。如果dwShareMode==0,表示是互斥使用的。如果CreateFile打开成功,则别的程序只能等到当前程序关闭对象句柄CloseHandle后才能在打开或使用。
    使用下面这些值的组合来表示对象的共享模式:
    FILE_SHARE_DELETE       Windows NT/2000/XP:打开操作只有在删除请求发生时才能返回成功。
    FILE_SHARE_READ                 打开操作只有在读控制请求发生时才能返回成功。
    FILE_SHARE_WRITE                打开操作只有在写控制请求发生时才能返回成功。
4、lpSecurityAttributes
    一个指向SECURITY_ATTRIBUTES结构对象的指针,决定返回的句柄是否被子进程所继承。如果lpSecurityAttributes参数为NULL,句柄就不能被子进程继承。
    在Windows NT/2000/XP平台下:lpSecurityDescriptor这个成员指明了这个对象的安全描述符。如果lpSecurityAttributes参数为NULL,对象将获得一个默认的安全描述符。目标文件系统必须为这个参数的在文件上的有效操作保证安全性。
5、dwCreationDisposition
    指明当打开的对象存在或不存在的时候各需怎样处理。这个参数必须是一下值的其中之一:
    CREATE_NEW            创建新文件/对象(当对象已经存在是将返回失败)。
    CREATE_ALWAYS         总是创建(如果对象存在就覆盖它,清除当前属性,把文件属性和dwFlagsAndAttributes指定的标志相结合)。
    OPEN_EXISTING         打开文件(如果不存在就返回失败)。
    OPEN_ALWAYS      存在就打开;若不存在,假如dwCreationDisposition==CREATE_NEW就创建一个新文件。
    TRUNCATE_EXISTING     存在就打开,且清空文件内容(至少要有GENERIC_WRITE权限);若文件不存在就返回失败。
6、dwFlagsAndAttributes
    指定文件属性和标志。

7、hTemplateFile
    把具有GENERIC_READ权限的句柄指定为一个模板文件。这个模板文件提供了文件属性和扩展属性,用于创建文件。在Windows95/98/Me平台上:这个参数必须为空。

调用如果成功,返回值时一个打开文件的句柄。
    调用如果失败,返回值是INVALID_HANDLE_VALUE。要进一步了解出错原因,调用GetLastError。

实例:

HANDLE g_hCom = INVALID_HANDLE_VALUE;

TCHAR tcCom[COM_NAME_SIZE];
 memset(tcCom,0,COM_NAME_SIZE);

g_hCom = CreateFile(tcCom,GENERIC_READ | GENERIC_WRITE ,0,NULL,OPEN_EXISTING,0,NULL);//一般都是这样,很好参考的。
 if(g_hCom == INVALID_HANDLE_VALUE )
 {
             RETAILMSG(TRUE,(TEXT("[VSP]Failed to open uart port!\r\n")));
             goto error;
 }
 else
 {
            g_bOpenUart = TRUE;
            RETAILMSG(TRUE,(TEXT("[VSP]Succeed to open uart port!\r\n")));
 }

大概记住这个就好:

  lpFileName是文件或设备的名称。

  dwDesiredAccess是访问属性。

  dwShareMode是共享属性。

  lpSecurityAttributes是安全属性。

  dwCreationDisposition是创建属性。

  dwFlagsAndAttributes是文件标志和属性。

  hTemplateFile是文件模板。

CreateFile函数理解相关推荐

  1. nodejs回调函数理解

    回调实例 问题:想要得到一秒后 计算出的结果 //错误写法function add(x,y) {console.log(1);setTimeout(function () {console.log(2 ...

  2. ML之MIC:利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数、最大信息系数MIC)

    ML之MIC:利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数.最大信息系数MIC) 目录 利用有无噪音的正余弦函数理解相关性指标的不同(多图绘制Pearson系数.最大信息系 ...

  3. 使用CreateFile函数打开COM10及以上串行口

    程序调试时发现,使用CreateFile()打开COM4时正常,打开COM10时却总是失败.这两个端口均为虚拟COM口,通过蓝牙仿真串口完成数据收发,除了命名不同外,本质上并无任何不同. 而MSDN上 ...

  4. 高频交易配对交易学习——Copulas函数理解

    Copulas函数理解 https://github.com/MalteKurz/VineCopulaCPP

  5. Pytorch中tensor.view().permute().contiguous()函数理解

    Pytorch中tensor.view().permute().contiguous()函数理解 yolov3中有一行这样的代码,在此记录一下三个函数的含义 # 例子中batch_size为整型,le ...

  6. 频繁通过win32api的createfile函数打开文件句柄导致内存泄漏

    1.通过win32的createfile.writefile函数打开写入文件 void WriteLogThread(void* lpParameter) {LPLogData pData = (LP ...

  7. pytorch中repeat()函数理解

    pytorch中repeat()函数理解 最近在学习过程中遇到了repeat()函数的使用,这里记录一下自己对这个函数的理解. 情况1:repeat参数个数与tensor维数一致时 a = torch ...

  8. SQLServer STUFF 函数理解

    SQLServer  CAST -- 转换数据类型 逗号表示分割 .     STUFF 函数理解 -- 第一个就是字符串 FOR XML PATH('') 必须用 , 第二个参数 负数或0空字符串, ...

  9. Java回调函数理解和应用

    #Java回调函数理解和应用 所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的. 在未理解之前,我也是一脸懵逼,等我理 ...

最新文章

  1. java was started but returned exit code = 1
  2. 接口测试工具postman安装及使用
  3. hihoCoder1228(2015北京网络赛B题)
  4. 第7步 mybatis-generator dao层生成器
  5. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·005【表的CRUD操作(DML语句)】
  6. amd显卡用黑苹果输出黑屏_教大家黑苹果英伟达免驱显卡黑屏怎么解决的方法
  7. 锂离子电池容量保持率和容量恢复率
  8. avr单片机c语言教程,十天学会AVR单片机和C语言视频教程
  9. ai人工智能电话机器人应用市场分析
  10. Linux驱动开发-编写W25Q64(Flash)驱动
  11. 记录一个小程序 input输入框格式手机号方法
  12. tp5restful API的搭建(2)
  13. 从AFX_MANAGE_STATE(AfxGetStaticModuleState())说起
  14. 透明显示屏(隐形显示屏)简述
  15. truffle init error,unbox Downloading报错问题
  16. 大型医院 HIS源码
  17. 致大学生——成为博主半年了,谈谈博客对于就业和考研的重要性
  18. Java在c盘fld目录下的文件名_VBS脚本常用代码大全2011整理.docx
  19. 面试题 10.11. 峰与谷
  20. 西门子200smart模拟量滤波防抖PLC程序,能实现电流电压和热电阻模拟量信号的采集

热门文章

  1. 12.11日个人工作总结
  2. 卡牌游戏的基本市场分析
  3. 微电影行业痛点解决方案
  4. 2017渐入正轨,2018放眼未来
  5. HBuilder开发PHP配置
  6. 上位机与下位机的区别
  7. YourBatman用趣味代码雨祝你:端午安康
  8. 杨森翔的书法-12爨体
  9. 远程诊断DoIP(笔记一)场景和原理
  10. 【转:好文章,必须收藏】史上最全!阿里智能人机交互的核心技术解析