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…
1. CreateFile:这是一个多功能的函数,可打开或创建以下对象,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道. 参照:http://www.cppblog.com/yishanhante/articles/19545.html 2. ReadFile:从文件指针指向的位置开始将数据读出到一个文件中, 且支持同步和异步操作 BOOL ReadFile( HANDLEhFile,//文件的句柄 LPVOIDlpBuffer,//用于保存读入数据的一个缓…
原文链接:https://blog.csdn.net/Jeanphorn/article/details/44982273 将数据写入一个文件.该函数比fwrite函数要灵活的多.也可将这个函数应用于对通信设备.管道.套接字以及邮槽的处理.返回时,TRUE(非零)表示成功,否则返回零.会设置GetLastError. 函数声明定义: BOOL WINAPI WriteFile( __in HANDLE hFile, // 文件句柄 __in LPCVOID lpBuffer, // 要写入的数据…
一.CreateFile 这是一个多功能的函数,可打开或创建文件或者I/O设备,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件,邮槽,管道. 函数原型: HANDLE WINAPI CreateFile( _In_ LPCTSTR lpFileName, _In_ DWORD dwDesiredAccess, _In_ DWORD dwShareMode, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _In_…
Printing Architecture http://www.codeproject.com/Articles/8916/Printing-Architecture     This article explains about the components of printing architecture. Is your email address OK? You are signed up for our newsletters but your email address is ei…
在Windows系统中,创建和打开文件都是使用API函数CreateFile,CreateFile通过指定不同的参数来表示是新建一个文件,打开已经存在的文件,还是重新建立文件等.读写文件最为直接的方式是使用ReadFile和WriteFile函数,也可以使用文件镜像,获取文件大小一般使用GetFileSize函数,也可以使用GetFileAttributesEx等函数(在上节介绍).读写文件.获取文件大小之前都需要使用CreateFile创建或打开的文件,获得文件句柄.在文件操作中,文件句柄是一…
提到派遣例程,必须理解IRP(I/O Request Package),即"输入/输出请求包"这个重要数据结构的概念.Ring3通过DeviceIoControl等函数向驱动发出I/O请求后,在内核中由操作系统将其转化为IRP的数据结构,并"派遣"到对应驱动的派遣函数中,如图21.1.6所示. Ring3程序调用kernel32.dll导出的DeviceIoControl函数后,会调用到ntdll.dll导出的NtDeviceIoControlFile函数,进而调用…
开发技术讲究封装与模块化,安全技术强调底层安全性.安全技术需要打开封装.追根溯源! <0day 安全:软件漏洞分析技术(第2版)> 第21章 探索 Ring0 笔记 Intel x86 系列处理器使用"环"的概念来实施访问控制,共有 4 个权限级别,由高到低分别为 Ring0.Ring1.Ring2.Ring3,其中 Ring0 权限最高,Ring3 权限最低.Windows(从 NT 开始)和 Linux 等多数操作系统在 Intel x86 处理器上只使用了 Ring0…
什么是派遣函数: 派遣函数是 WIndows 驱动程序中的重要概念.驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的.也就是说,派遣函数是用来处理驱动程序提交过来的 I/O 请求. 那什么是 I/O 请求呢? 上层程序与驱动程序之间通信时,上层会发出I/O请求,即输入输出请求包(I/O Request package) 用户模式下(上层)与所有驱动程序之间的I/O请求,全部由操作系统转化为一个叫 IRP 的数据结构,不同的 IRP 会被派遣到不同的派遣函数(Dis…
我这里重点的介绍如何写驱动程序,对于一些应用程序我就不做介绍了,因为我对于那些高层的东西写得很少.倘若再讲,有班门弄斧之嫌,呵呵! 作为WIN98和WIN2K推荐的一项新技术来说,USB的驱动程序和以往的直接跟硬件打交道的WIN95的VXD的方式的驱动程序不同,它应该是WDM类型的. USB的WDM接口框图如下(这个图可以说是USB软件总体框图) 对于HID的设备,就可以采用上图左上边的结构,其它类的话采用右上的结构,其实右边的结构可以又细分成两层,一层是Class Driver,一层是Mini…
Win32 之中有三个基本的函数用来执行 I/O,它们是:        i CreateFile()        i ReadFile()        i WriteFile()    没有另外哪一个函数用来关闭文件,只要调用 CloseHandle() 即可.本章对于这些函数将只涵盖其与 overlapped I/O 有关的部分,至于其他和文件 I/O有关的部分,请参考 Win32 Programmer's Reference.        CreateFile() 可以用来打开各式各…
概要 Microsoft Windows上的文件I / O可以是同步或异步的.I / O的默认行为是同步的,其中调用I / O函数并在I / O完成时返回.异步I / O允许I / O函数立即将执行返回给调用者,但是在未来的某个时间之前不会假定I / O完成.I / O完成后,操作系统会通知调用方.或者,调用者可以通过使用操作系统的服务来确定未完成的I / O操作的状态. 异步I / O的优点是调用程序有时间完成其他工作或在I / O操作完成时发出更多请求.术语重叠I / O经常用于同步I /…
起因 近期在调试一个Android播放内核是遇到上层传递的是fd(file descriptor),但是在文件播放结束之后调用lseek却提示返回-1,errno=29(#define ESPIPE 29 /* Illegal seek */). 好吧.那就确定下原因. 在网上搜到有说lseek存在问题,"对于已经到达EOF的stream,使用lseek是不能让stream再次可读的".具体参考Android NDK之fseek, lseek.随即写了个命令行程序,在android s…
文章作者:grayfox作者主页:http://nokyo.blogbus.com原始出处:http://www.blogbus.com/nokyo-logs/34005738.html 此前我们可能曾经多次听说过IRP这个名词,那么它究竟是什么呢?      IRP的全名是I/O Request Package,即输入输出请求包,它是Windows内核中的一种非常重要的数据结构.上层应用程序与底层驱动程序通信时,应用程序会发出I/O请求,操作系统将相应的I/O请求转换成相应的IRP,不同的IR…
翻译自:ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.WIN32COM.v10.en/dnfiles/html/msdn_serial.htm 老外写的文章,虽比较全面,但很啰嗦,不如看各个函数的文档来得快.为方便以后查阅,列出本文涉及的主要函数如下: CreateFile.ReadFile.WriteFile.GetOverlappedResult.WaitForSingleObject SetCommMask.WaitCommEvent ClearC…
派遣例程与IRP结构   文章出处:http://www.cnblogs.com/zmlctt/p/3978124.html#commentform   提到派遣例程,必须理解IRP(I/O Request Package),即"输入/输出请求包"这个重要数据结构的概念.Ring3通过DeviceIoControl等函数向驱动发出I/O请求后,在内核中由操作系统将其转化为IRP的数据结构,并"派遣"到对应驱动的派遣函数中,如图21.1.6所示. Ring3程序调用k…
管道分为 匿名管道 和 命名管道 . 1.匿名管道仅仅能在父子进程间进行通信.不能在网络间通信,并且传输数据是单向的.仅仅能一端写,还有一端读. 2.命令管道能够在随意进程间通信.通信是双向的,随意一端都可读可写,可是在同一时间仅仅能有一端读.一端写. 每个 命名管道 都有一个唯一的名字以区分于存在于系统的命名对象列表中的其它命名管道.管道server在调用CreateNamedPipe()函数创建命名管道的一个或多个实例时为其指定了名称. 对于管道客户机.则是在调用CreateFile()或C…
派遣函数是Windows驱动程序中的重要概念.驱动程序的主要功能是负责处理I/O请求,其中大部分I/O请求是在派遣函数中处理的. 用户模式下所有对驱动程序的I/O请求,全部由操作系统转换为一个叫做IRP数据结构,不同的IRP会被“派遣”到不同的派遣函数中. IRP与派遣函数 IRP的处理机制类似于Windows应用程序中的“消息处理”,驱动程序接收到不同的IRP后,会进入不同的派遣函数,在派遣函数中IRP得到处理. 1.IRP 在Windows内核中,有一种数据结构叫做IRP(I/O Reque…
Windows完成端口编程目录一 基本概念二 OVERLAPPED数据结构三 完成端口的内部机制创建完成端口完成端口线程的工作原理线程间数据传递线程的安全退出 一 基本概念       设备---windows操作系统上允许通信的任何东西,比如文件.目录.串行口.并行口.邮件槽.命名管道.无名管道.套接字.控制台.逻辑磁盘.物理 磁盘等.绝大多数与设备打交道的函数都是CreateFile/ReadFile/WriteFile等.所以我们不能看到**File函数就只想到文件 设备. 与设备通信有两…
问题描述 完成一个目录复制命令mycp,包括目录下的文件和子目录, 运行结果如下: beta@bugs.com [~/]# ls –la sem total 56 drwxr-xr-x 3 beta beta 4096 Dec 19 02:53 ./ drwxr-xr-x 8 beta beta 4096 Nov 27 08:49 ../ -rw-r--r-- 1 beta beta 128 Nov 27 09:31 Makefile -rwxr-xr-x 1 beta beta 5705 No…
所有高级语言的运行时(runtime)都提供了执行I/O功能的机制. 例如,C语言中提供了包含像printf()和scanf()等这样的标准I/O库函数, C++语言中提供了如 <<和>>这样的重载操作符. 从高级语言程序中通过I/O函数或I/O操作符提出I/O请求,到设备响应并完成I/O请求,涉及到多层次I/O软件和I/O硬件的协作. I/O子系统和计算机系统一样也采用层次结构:封装+抽象+提供简单接口给上层使用. I/O软件被组织成从高到低的四个层次,层次越低,则越接近设备而越…
Windows内核开发-4-内核编程基础 这里会构建一个简单但是完整的驱动程序和一个客户端,部署内核执行一些平时user下无法执行的操作. 将通过以下内容进行讲解: 1 介绍 2 驱动初始化 3 Create和Close操作调度实例 4 DeviceIoControl操作调度实例 5 安装和测试驱动程序 整个完整源代码最后面 1 介绍 该驱动将解决Windows API设置线程优先级的不灵活性. 在User模式下,线程的优先级由其进程优先级类和基于每个线程的偏移量组合来确定,偏移量具有有限的级别…
Windows内核-7-IRP和派遣函数 IRP以及派遣函数是Windows中非常重要的概念.IRP 是I/O Request Pocket的简称,意思是I/O操作的请求包,Windows中所有User和Kernel之间的交流都会被封装成一个IRP结构体,然后不同的IRP会被派遣到不同的派遣函数里面,通过派遣函数来实现I/O操作. IRP typedef struct _IRP {  CSHORT                    Type;  USHORT                …
RandeomAccessFile虽然是java.io中的成员,但该类只继承了Object类,实现了DataOut, DataIn, Closeable等接口.此类的实例支持对文件的随机访问和读取.随机访问文件的行为类似存储在文件系统中的一个大型byte数组.存在指向该隐含数组的光标或者索引,称为文件指针. 输入操作从文件指针开始读取字节,并随着对字节的读取而前移文件指针.如果随机访问文件以读取/写入的模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而迁移此文件指针…
参考文章: 1-> http://www.cnblogs.com/phinecos/archive/2008/03/11/1100912.html 2-> http://blog.csdn.net/clever101/article/details/5334369 在日常开发过程中,常常需要用到xml文件的读写,tinyxml是一款轻量级的xml开源库,对于诸如程序配置,账单记录等常见的xml文件读写,tinyxml完全可以胜任. 1->代码下载:http://sourceforge.n…
文件IO续 File类    用来将文件和文件夹封装成对象 方便对文件和文件夹的属性信息进行操作    File对象可以作为参数传递给流的构造函数 Demo1 File的构造方法 public class FileDemo { public static void main(String[] args) { constructorDemo(); } public static void constructorDemo() { // 可以将一个已存在的,或者不存在的文件或者目录封装成file对象.…
字节流 字符流: FileReader FileWriter BufferedReader BufferedWriter 字节流: FileInputStream FileOutputStream BufferedInputStream BufferedOutputStream 想要操作图片数据,这时就要用到字节流. 示例代码如下: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IO…
转载请著名作者和地址http://www.cnblogs.com/scotth/p/3645489.html 1.关于 IO (fopen出现的错误 errorCode 183) 相关知识点: <UNIX环境高级编程>  ====网上说的有点不靠谱,很多都是copy,paste,说的很乱,所以不敢拿来分析,所幸这本书以前看过,出现问题之后,带着问题 再看一遍又是另一种境界,好书真的是越读越有味 开发到后面基础,和操作系统真的是越来越重要了. 1.4.3  不用缓存的I/O 函数open.rea…
概述 为什么开发npm包? 如何开发? 如何写单元测试? package.json 如何发布模块? 如何使用? 为什么开发npm模块? NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准. npm官网 如何开发? 接下来由带领大家完成一个简单的npm包,功能:读写文件 是不是很复杂呢??? npm init 创建基础目录或文件 mkdir tests lib touch index.js README.md…
文件的IO操作: 字节流: 输入字节流:  InputStream 所有输入字节流的基类,抽象类.  FileInputStream 读取文件的输入字节流.  BufferedInputStream 缓冲输入字节流.该类的内部就是维护了一个8kb的字节数组,为了提高读取文件效率.   输出字节流:  OutputStream 所有输出字节流的基类,抽象类.  FileOutputStream 文件的输出字节流.  BufferedOutputStream 缓冲输出字节流.该类的内部就是维护了一个…