#Windows I/O操作
在Windows 程序中,基础的运行单元位线程!为每一个线程分配一个处理器,可以让系统执行多个操作!当线程运行一个IO操作时,会被挂起,从而影响性能!位解决这类问题,Windows使用了一套非常好的机制I/O完成端口 接下来我们将学习Windows中的相关操作。
摘抄与维基百科 I/O(英语:Input/Output),即输入/输出,通常指数据在内部存储器和外部存储器或其他周边设备之间的输入和输出。 目录 [隐藏] 1 用途 2 输入 3 输出 4 双向 5 参见 用途[编辑] 输入[编辑] 键盘 定点装置 指点杆 鼠标 触控板 轨迹球 扫描仪 麦克风 相机 输出[编辑] 屏幕、投影机 打印机、 扬声器、耳机 闪光灯 双向[编辑] 存储设备,如RAM 一部分USB和火线设备 触摸屏 刻录机 ADSL ATM USB 参见[编辑] I/O总线 BIOS 计算机硬件
//IO操作 C++中的IO操作 printf scanf cout cin 操作语言的IO操作 都是从读取 写入操作 //windows操作系统下的 IO操作 对于文件的操作 I/O操作 对于外部设备的操作 I/O操作 USB 文件针对硬盘 目录 逻辑磁盘驱动器 物理磁盘驱动器 系统跟外部设备操作的统称位I/O操作
//Windows 是一个多任务多线程的操作系统 多进程 windows 下面可以执行多个进程 (代表当前程序的单位) 多线程 在一个进程下面可以执行多个线程(实际工作的工人) //CPU 多核心 编写程序的时候我们都可以调用当中的每一个内核 操作系统层面上每一个内核可以对应程序的每一个线程 在多核CPU下 我们可以让每一个核心 来帮我们运行一个线程,来做一件事情,我们就可以达到多任务同时并行处理
I/O完成端口
挂起
设备
//除了内存之外的其他系统中的都是设备
包括硬盘
外接设备 U盘 串口 并口设备
显卡也是设备(不属于标准的I/O操作)
//那为什么内存不是设备呢?
内存是我们运行所有程序的载体
文件
Windows编程中的文件定义
二进制数据集合
广义文件定义
根据文件格式定义不同意义的文件
目录
在计算机或相关设备中,一个"目录"或文件夹 就是一个装有数字文件系统的虚拟"容器"。在它里面保存着一组文件和其他一层目录(文件夹)。
一个典型的文件系统可能会包含成千上万的目录(文件夹),多个文件通过存储在一个目录(文件夹)中,可以达到有组织的存储文件的目的。在一个目录(文件夹)中的另外一个目录(文件夹)被称作它的子目录(子文件夹),这样,这些目录(文件夹)就构成了层次(hierarchy),或树形结构。
逻辑磁盘驱动器
可以将 Windows上的原始磁盘空间配置位裸辞驱动器或物理驱动器。逻辑驱动器在编程中常被用于格式化驱动器!
物理磁盘驱动器
常被用于获取分区表
串口 计算机和外部设备来数据交互的一种方式
通过点电话线发送型号,单通道!
并口 计算机和外部设备来数据交互的一种方式
8通道!
邮件槽
一对多,通过网络传输!
命名管道
一对一,通过网络传输
管道通信 一头进一头出
-> -> -> -> -> 单向的
匿名通道
一对一,本机传输!
套接字
报文或数据流传输,通过网络传输!
所有操作系统
网络设备都是用套接字
一对多 多对一
//还有控制台的I/O操作 现在用的不多了
打开方式
设备 打开方式 叙述
文件 CreateFile(路径或UNC路径)
目录 CreateFile(路径或UNC路径) 需要FILE_FLAG_BACKUP_SEMANTICS标志
逻辑磁盘 CreateFile(\.?:)
物理磁盘 CreateFile(\.PHYSICALDRIVE?)
串口 CreateFile(COM?)
并口 CreateFile(LPT?)
邮件槽服务器 CreateMailslot(\.mailslot(邮件槽名)
邮件槽客户端 CreateFile(\servernamemailslot(邮件槽名)
命名管道服务器 CreateNamePipe(\.pipe管道名)
命名管道客户端 CreateFile(\.servenamepipe(管道名)
匿名通道 CreatePipe
套接字 Socket,accept