1. 注意:
  2. CreateFile fopen 不同,打开文件时不区分 文本方式 二进制 方式
  3. ReadFile WriteFile 都是对二进制数据进行操作
  4.  
  5. HANDLE WINAPI CreateFile(
  6. __in LPCTSTR lpFileName, // 文件路径
  7. __in DWORD dwDesiredAccess, // 访问权限,GENERIC_READ | GENERIC_WRITE
  8. __in DWORD dwShareMode, // 共享模式,NULL | FILE_SHARE_READ | FILE_SHARE_WRITE
  9. __in LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全属性
  10. __in DWORD dwCreationDisposition, // 创建配置,CREATE_ALWAYS | CREATE_NEW | OPEN_ALWAYS | OPEN_EXISTING
  11. __in DWORD dwFlagsAndAttributes, // 扩展属性,NULL | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY
  12. __in HANDLE hTemplateFile // 指定一个文件句柄,新文件将从这个文件中复制扩展属性。NULL
  13. );
  14.  
  15. BOOL WINAPI ReadFile(
  16. __in HANDLE hFile, // 文件句柄
  17. __out LPVOID lpBuffer, // 接收数据用的 buffer
  18. __in DWORD nNumberOfBytesToRead, // 要读取的字节数
  19. __out LPDWORD lpNumberOfBytesRead, // 实际读取到的字节数
  20. __in LPOVERLAPPED lpOverlapped // OVERLAPPED 结构,一般设定为 NULL
  21. );
  22.  
  23. BOOL WINAPI WriteFile(
  24. __in HANDLE hFile, // 文件句柄
  25. __in LPCVOID lpBuffer, // 要写入的数据
  26. __in DWORD nNumberOfBytesToWrite, // 要写入的字节数
  27. __out LPDWORD lpNumberOfBytesWritten, // 实际写入的字节数
  28. __in LPOVERLAPPED lpOverlapped // OVERLAPPED 结构,一般设定为 NULL
  29. );
  30.  
  31. DWORD WINAPI GetFileSize(
  32. __in HANDLE hFile, // 文件句柄
  33. __out LPDWORD lpFileSizeHigh // high-order 的返回值,一般设定为 NULL
  34. );
  35.  
  36. 读文件:
  37. void read(const wchar_t* strPath)
  38. {
  39. HANDLE hFile = ::CreateFile(strPath, GENERIC_READ, , NULL, OPEN_EXISTING, NULL, NULL);
  40. if (hFile != INVALID_HANDLE_VALUE)
  41. {
  42. DWORD nFileSize = ::GetFileSize(hFile, NULL);
  43. char* lpBuffer = new char[nFileSize];
  44. DWORD nNumberOfBytesRead;
  45. BOOL bRet = ::ReadFile(hFile, lpBuffer, nFileSize, &nNumberOfBytesRead, NULL);
  46.  
  47. // TODO ...
  48.  
  49. delete[] lpBuffer;
  50. CloseHandle(hFile);
  51. }
  52. }
  53.  
  54. 写文件:
  55. void write(const wchar_t* strPath, const wchar_t* strContent, const int nContentSize)
  56. {
  57. HANDLE hFile = ::CreateFile(strPath, GENERIC_WRITE, , NULL, CREATE_ALWAYS, NULL, NULL);
  58. if (hFile != INVALID_HANDLE_VALUE)
  59. {
  60. DWORD nNumberOfBytesWritten;
  61. ::WriteFile(hFile, strContent, nContentSize, &nNumberOfBytesWritten, NULL);
  62.  
  63. // TODO ...
  64.  
  65. CloseHandle(hFile);
  66. }
  67. }

CreateFile,WriteFile,ReadFile的更多相关文章

  1. VC++ 利用CreateFile、ReadFile和WriteFile实现CopyFile

    1. CreateFile:这是一个多功能的函数,可打开或创建以下对象,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道. 参照:http://www.cppblo ...

  2. WriteFile,CreateFile,ReadFile

    原文链接:https://blog.csdn.net/Jeanphorn/article/details/44982273 将数据写入一个文件.该函数比fwrite函数要灵活的多.也可将这个函数应用于 ...

  3. 第三十二篇 -- CreateFile、ReadFile、WriteFile

    一.CreateFile 这是一个多功能的函数,可打开或创建文件或者I/O设备,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道. 函数原型: HANDLE WIN ...

  4. Printing Architecture

    Printing Architecture http://www.codeproject.com/Articles/8916/Printing-Architecture     This articl ...

  5. [WinAPI] API 10 [创建、打开、读写文件,获取文件大小]

    在Windows系统中,创建和打开文件都是使用API函数CreateFile,CreateFile通过指定不同的参数来表示是新建一个文件,打开已经存在的文件,还是重新建立文件等.读写文件最为直接的方式 ...

  6. 派遣例程与IRP结构

    提到派遣例程,必须理解IRP(I/O Request Package),即"输入/输出请求包"这个重要数据结构的概念.Ring3通过DeviceIoControl等函数向驱动发出I ...

  7. OD: Ring0 & Kernel

    开发技术讲究封装与模块化,安全技术强调底层安全性.安全技术需要打开封装.追根溯源! <0day 安全:软件漏洞分析技术(第2版)> 第21章 探索 Ring0 笔记 Intel x86 系 ...

  8. IRP 与 派遣函数

    什么是派遣函数: 派遣函数是 WIndows 驱动程序中的重要概念.驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的.也就是说,派遣函数是用来处理驱动程序提交过来的 I ...

  9. usb驱动开发篇简易介绍

    我这里重点的介绍如何写驱动程序,对于一些应用程序我就不做介绍了,因为我对于那些高层的东西写得很少.倘若再讲,有班门弄斧之嫌,呵呵! 作为WIN98和WIN2K推荐的一项新技术来说,USB的驱动程序和以 ...

随机推荐

  1. 用vs2013编译lua源码方法

    1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下,这里假设解压到  F:\lua-5.2.3  注意下载的版本,如果是 ...

  2. 关于BaseAdapter的使用及优化心得(一)

    对于Android程序员来说,BaseAdapter肯定不会陌生,灵活而优雅是BaseAdapter最大的特点.开发者可以通过构造BaseAdapter并搭载到ListView或者GridView这类 ...

  3. 我给女朋友讲编程html系列(2) --Html标题标签h1

    Html是一门标签语言,因此学习Html最快的方式就是学习使用html标签. html标题标签:h1,h2,h3,h4,h5,h6 标题标签总共有6个,h1,h2,h3,h4,h5,h6,从h1到h6 ...

  4. volley框架 出现at com.android.volley.Request.<init>

    请求json数据的时候出现这种情况: 原因: // 访问网络,初始化详情 JsonObjectRequest jr = new JsonObjectRequest(Request.Method.GET ...

  5. Java 7 中 NIO.2 的使用——第二节 元数据文件的属性

    如果你有很多疑问关于一个文件或目录,它是否是隐藏的,它的大小是多少,谁拥有它,你可以从元数据中得到这些信息.所谓的元数据,就是描述数据的数据. NIO.2组织了这些原数据的属性的概念,并提供了java ...

  6. 使用python远程登录

    最近要使用python做一个在web上管理交换机的程序,需要远程登录,就查了点资料,由于还没有搞到交换机,就先用自己的机器测试一下. 首先python的标准库中包含telnet,用起来也很方便,查看一 ...

  7. 单点登录(iwantmoon.com出品)

    早年便听到单点登录,一直因为感觉很简单,就没有动手去弄,正好现在公司有要求,那么OK,直接做了一个单机版的单点登录. 原理,可以参考SSO. Now,我们来看看我的实现吧.看下图 我们平时所做的登录, ...

  8. RobotFramework-登录

    *** Settings *** Library Selenium2Library *** Test Cases *** login [Setup] open browser http://XXX/X ...

  9. 单点登录的原理与CAS技术的研究

    1.什么是单点登录? 关于单点登录技术的说明参考文章:http://www.cnblogs.com/yupeng/archive/2012/05/24/2517317.html 一般来说,整个原理大家 ...

  10. web前端网页特效大全导航列表

    CSS3和Html5 图表与图形 表单验证 导航菜单 table选项卡 视频播放器 日期和时间 返回顶部 图层代码 滚动代码 幻灯片 文字特效 图片放大镜 juqery焦点图 瀑布流 广告悬浮代码 在 ...