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的驱动程序和以 ...
随机推荐
- Could not resolve placeholder
使用spring的<context:property-placeholder location="/WEB-INF/redis.properties"/>读取prope ...
- iOS多线程自定义operation加载图片 不重复下载图片
摘要:1:ios通过抽象类NSOperation封装了gcd,让ios的多线程变得更为简单易用: 2:耗时的操作交给子线程来完成,主线程负责ui的处理,提示用户的体验 2:自定义operati ...
- java导出excel表格
java导出excel表格: 1.导入jar包 <dependency> <groupId>org.apache.poi</groupId> <artifac ...
- 深入浅出谈4G ─ 4G LTE网速到底有多快?
常说4G网速能达100MHz,实际感受远远没有这么快.今天和大家一起算算帐,算算4G LTE网速到底有多快. 基本概念1:资源粒子 个资源粒子就是用个子载波传送个OFDM符号. 1个子载波的带宽是15 ...
- Hibernate映射类型对照表
Hibernate映射类型对照表 java类型 Hibernate映射类型 SQL类型 java.math.BigDecimal big_decimal numeric byte[] binary ...
- UVA - 11478 Halum 二分+差分约束
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=34651 题意: 给定一个有向图,每一条边都有一个权值,每次你可以 ...
- zoj 2760 How Many Shortest Path 最大流
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 Given a weighted directed graph ...
- 【BZOJ】【4034】【HAOI2015】T2
树链剖分/dfs序 树上单点修改+子树修改+链查询 其实用dfs序做也可以…… 其实树链剖分就是一个特殊的dfs序嘛= =所以树链剖分也可以搞子树-(Orz ZYF) 至于为什么……你看在做剖分的时候 ...
- 玩具装箱 bzoj1010 斜率优化
斜率优化的题好像都是这样的方程:左边关于j,k的一个(...)/(...)的式子,右边是个只与i有关的可算的数字: 然后把它放到二维坐标轴上,用单调队列维护一个凸壳,O(n)的复杂度: 这道题但是我发 ...
- 从Theano到Lasagne:基于Python的深度学习的框架和库
从Theano到Lasagne:基于Python的深度学习的框架和库 摘要:最近,深度神经网络以“Deep Dreams”形式在网站中如雨后春笋般出现,或是像谷歌研究原创论文中描述的那样:Incept ...