CreateFile,WriteFile,ReadFile
- 注意:
- CreateFile 跟 fopen 不同,打开文件时不区分 文本方式 或 二进制 方式
- ReadFile 或 WriteFile 都是对二进制数据进行操作
- HANDLE WINAPI CreateFile(
- __in LPCTSTR lpFileName, // 文件路径
- __in DWORD dwDesiredAccess, // 访问权限,GENERIC_READ | GENERIC_WRITE
- __in DWORD dwShareMode, // 共享模式,NULL | FILE_SHARE_READ | FILE_SHARE_WRITE
- __in LPSECURITY_ATTRIBUTES lpSecurityAttributes, // 安全属性
- __in DWORD dwCreationDisposition, // 创建配置,CREATE_ALWAYS | CREATE_NEW | OPEN_ALWAYS | OPEN_EXISTING
- __in DWORD dwFlagsAndAttributes, // 扩展属性,NULL | FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_READONLY
- __in HANDLE hTemplateFile // 指定一个文件句柄,新文件将从这个文件中复制扩展属性。NULL
- );
- BOOL WINAPI ReadFile(
- __in HANDLE hFile, // 文件句柄
- __out LPVOID lpBuffer, // 接收数据用的 buffer
- __in DWORD nNumberOfBytesToRead, // 要读取的字节数
- __out LPDWORD lpNumberOfBytesRead, // 实际读取到的字节数
- __in LPOVERLAPPED lpOverlapped // OVERLAPPED 结构,一般设定为 NULL
- );
- BOOL WINAPI WriteFile(
- __in HANDLE hFile, // 文件句柄
- __in LPCVOID lpBuffer, // 要写入的数据
- __in DWORD nNumberOfBytesToWrite, // 要写入的字节数
- __out LPDWORD lpNumberOfBytesWritten, // 实际写入的字节数
- __in LPOVERLAPPED lpOverlapped // OVERLAPPED 结构,一般设定为 NULL
- );
- DWORD WINAPI GetFileSize(
- __in HANDLE hFile, // 文件句柄
- __out LPDWORD lpFileSizeHigh // high-order 的返回值,一般设定为 NULL
- );
- 读文件:
- void read(const wchar_t* strPath)
- {
- HANDLE hFile = ::CreateFile(strPath, GENERIC_READ, , NULL, OPEN_EXISTING, NULL, NULL);
- if (hFile != INVALID_HANDLE_VALUE)
- {
- DWORD nFileSize = ::GetFileSize(hFile, NULL);
- char* lpBuffer = new char[nFileSize];
- DWORD nNumberOfBytesRead;
- BOOL bRet = ::ReadFile(hFile, lpBuffer, nFileSize, &nNumberOfBytesRead, NULL);
- // TODO ...
- delete[] lpBuffer;
- CloseHandle(hFile);
- }
- }
- 写文件:
- void write(const wchar_t* strPath, const wchar_t* strContent, const int nContentSize)
- {
- HANDLE hFile = ::CreateFile(strPath, GENERIC_WRITE, , NULL, CREATE_ALWAYS, NULL, NULL);
- if (hFile != INVALID_HANDLE_VALUE)
- {
- DWORD nNumberOfBytesWritten;
- ::WriteFile(hFile, strContent, nContentSize, &nNumberOfBytesWritten, NULL);
- // TODO ...
- CloseHandle(hFile);
- }
- }
CreateFile,WriteFile,ReadFile的更多相关文章
- VC++ 利用CreateFile、ReadFile和WriteFile实现CopyFile
1. CreateFile:这是一个多功能的函数,可打开或创建以下对象,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道. 参照:http://www.cppblo ...
- WriteFile,CreateFile,ReadFile
原文链接:https://blog.csdn.net/Jeanphorn/article/details/44982273 将数据写入一个文件.该函数比fwrite函数要灵活的多.也可将这个函数应用于 ...
- 第三十二篇 -- CreateFile、ReadFile、WriteFile
一.CreateFile 这是一个多功能的函数,可打开或创建文件或者I/O设备,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道. 函数原型: HANDLE WIN ...
- Printing Architecture
Printing Architecture http://www.codeproject.com/Articles/8916/Printing-Architecture This articl ...
- [WinAPI] API 10 [创建、打开、读写文件,获取文件大小]
在Windows系统中,创建和打开文件都是使用API函数CreateFile,CreateFile通过指定不同的参数来表示是新建一个文件,打开已经存在的文件,还是重新建立文件等.读写文件最为直接的方式 ...
- 派遣例程与IRP结构
提到派遣例程,必须理解IRP(I/O Request Package),即"输入/输出请求包"这个重要数据结构的概念.Ring3通过DeviceIoControl等函数向驱动发出I ...
- OD: Ring0 & Kernel
开发技术讲究封装与模块化,安全技术强调底层安全性.安全技术需要打开封装.追根溯源! <0day 安全:软件漏洞分析技术(第2版)> 第21章 探索 Ring0 笔记 Intel x86 系 ...
- IRP 与 派遣函数
什么是派遣函数: 派遣函数是 WIndows 驱动程序中的重要概念.驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的.也就是说,派遣函数是用来处理驱动程序提交过来的 I ...
- usb驱动开发篇简易介绍
我这里重点的介绍如何写驱动程序,对于一些应用程序我就不做介绍了,因为我对于那些高层的东西写得很少.倘若再讲,有班门弄斧之嫌,呵呵! 作为WIN98和WIN2K推荐的一项新技术来说,USB的驱动程序和以 ...
随机推荐
- 用vs2013编译lua源码方法
1.下载lua源码:lua-5.2.3.tar.gz,解压 2.用vs2013建立一个win32工程: 1)下载后解压到一个目录下,这里假设解压到 F:\lua-5.2.3 注意下载的版本,如果是 ...
- 关于BaseAdapter的使用及优化心得(一)
对于Android程序员来说,BaseAdapter肯定不会陌生,灵活而优雅是BaseAdapter最大的特点.开发者可以通过构造BaseAdapter并搭载到ListView或者GridView这类 ...
- 我给女朋友讲编程html系列(2) --Html标题标签h1
Html是一门标签语言,因此学习Html最快的方式就是学习使用html标签. html标题标签:h1,h2,h3,h4,h5,h6 标题标签总共有6个,h1,h2,h3,h4,h5,h6,从h1到h6 ...
- volley框架 出现at com.android.volley.Request.<init>
请求json数据的时候出现这种情况: 原因: // 访问网络,初始化详情 JsonObjectRequest jr = new JsonObjectRequest(Request.Method.GET ...
- Java 7 中 NIO.2 的使用——第二节 元数据文件的属性
如果你有很多疑问关于一个文件或目录,它是否是隐藏的,它的大小是多少,谁拥有它,你可以从元数据中得到这些信息.所谓的元数据,就是描述数据的数据. NIO.2组织了这些原数据的属性的概念,并提供了java ...
- 使用python远程登录
最近要使用python做一个在web上管理交换机的程序,需要远程登录,就查了点资料,由于还没有搞到交换机,就先用自己的机器测试一下. 首先python的标准库中包含telnet,用起来也很方便,查看一 ...
- 单点登录(iwantmoon.com出品)
早年便听到单点登录,一直因为感觉很简单,就没有动手去弄,正好现在公司有要求,那么OK,直接做了一个单机版的单点登录. 原理,可以参考SSO. Now,我们来看看我的实现吧.看下图 我们平时所做的登录, ...
- RobotFramework-登录
*** Settings *** Library Selenium2Library *** Test Cases *** login [Setup] open browser http://XXX/X ...
- 单点登录的原理与CAS技术的研究
1.什么是单点登录? 关于单点登录技术的说明参考文章:http://www.cnblogs.com/yupeng/archive/2012/05/24/2517317.html 一般来说,整个原理大家 ...
- web前端网页特效大全导航列表
CSS3和Html5 图表与图形 表单验证 导航菜单 table选项卡 视频播放器 日期和时间 返回顶部 图层代码 滚动代码 幻灯片 文字特效 图片放大镜 juqery焦点图 瀑布流 广告悬浮代码 在 ...