如何在NT下读写磁盘物理扇区?

mikew 2000-04-17 04:55:00
加精
如何在NT下读写磁盘物理扇区?
...全文
419 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoucaiming 2001-07-29
  • 打赏
  • 举报
回复
what to do thunk
DragonCheng 2000-07-28
  • 打赏
  • 举报
回复
.
whale 2000-04-19
  • 打赏
  • 举报
回复
这个方法只是用于NT/2000,如果要在95/98下直接访问磁盘,需要用到13h中断。但在95/98下直接使用13h中断肯定失败,需要通过一个thunk调用一个16位的dll,在16位的DLL程序里使用保护模式中断调用。
Thunk是95/98以及NT提供的32位程序与16位程序之间相互调用的机制,具体细节可以参考MSDN.
GreenStuff 2000-04-19
  • 打赏
  • 举报
回复
在95/98下也适用吗?
whale 2000-04-17
  • 打赏
  • 举报
回复
使用函数
HANDLE CreateFile(
LPCTSTR lpFileName, // file name
DWORD dwDesiredAccess, // access mode
DWORD dwShareMode, // share mode
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD
DWORD dwCreationDisposition, // how to create
DWORD dwFlagsAndAttributes, // file attributes
HANDLE hTemplateFile // handle to template file
);
其中lpFileName为\\\\.\\PHYSICALDRIVEx(x为磁盘号,0表示第一个盘)。然后使用函数
BOOL DeviceIoControl(
HANDLE hDevice, // handle to device
DWORD dwIoControlCode, // operation control code
LPVOID lpInBuffer, // input data buffer
DWORD nInBufferSize, // size of input data buffer
LPVOID lpOutBuffer, // output data buffer
DWORD nOutBufferSize, // size of output data buffer
LPDWORD lpBytesReturned, // byte count
LPOVERLAPPED lpOverlapped // overlapped information
);
其中hDevice为CreateFile返回的句柄。具体的用法可以参考MSDN.
一般要将硬盘分成主引导扇区、操作系统引导扇区、FAT表、DIR目录区和Data数据区等五部分,这里分别进行了介绍!硬盘的文件系统结构 • 新买的硬盘,是没有直接办法使用的,需要将它分区、格式化,然后再安装上操作系统才可以使用。就拿一直沿用到现在的Win9x/Me/2000/XP系列来说,一般要将硬盘分成主引导扇区、操作系统引导扇区、FAT表、DIR目录区和Data数据区等五部分。通常所说的主引导扇区MBR在一个硬盘中是是唯一的,MBR区的内容只有在硬盘启动时才读取其内容,然后驻留内存。其它几项内容随你的硬盘分区数的多少而异。 • 主引导扇区(MBR)。主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及判别哪个分区为可引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。 • 分区表(DPT)。在主引导区中,从地址BE开始,到FD结束为止的64个字节中的内容就是通常所说的分区表。分区表以80H或00H为开始标志,以55AAH为结束标志,每个分区占用16个字节,一个硬盘最多只能分成四个主分区,其中扩展分区也是一个主分区。随着硬盘容量的迅速扩大,引入的扩展分区可以不受四个主分区的限制,把硬盘分区数扩展到“Z”。值得一提的是,MBR是由分区程序(例如DOS的Fdisk.exe)产生的,不同的操作系统可能这个扇区的内容代码是不相同,但是实现的功能只有一个,使其中的一个活动分区获得控制区,正常启动系统。 • 主引导扇区(MBR)。主引导扇区位于整个硬盘的0磁道0柱面1扇区,包括硬盘主引导记录MBR(Main Boot Record)和分区表DPT(Disk Partition Table)。其中主引导记录的作用就是检查分区表是否正确以及判别哪个分区为可引导分区,并在程序结束时把该分区的启动程序(也就是操作系统引导扇区)调入内存加以执行。 • 主分区和扩展分区。主分区是一个比较单纯的分区,通常位于硬盘的最前面一块区域中,构成逻辑C磁盘。在主分区中,不允许再建立其它逻辑磁盘。也可以通过分区软件,在分区的最后建立主分区,或在磁盘的中部建立主分区。扩展分区的概念则比较复杂,也是造成分区和逻辑磁盘混淆的主要原因。由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计可以存储4个分区的数据。操作系统只允许存储4个分区的数据,如果说逻辑磁盘就是分区,则系统最多只允许4个逻辑磁盘。对于具体的应用,4个逻辑磁盘往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,系统引入了扩展分区的概念。 所谓扩展分区,严格地讲它不是一个实际意义的分区,它仅仅是一个指向下一个分区的指针,这种指针结构将形成一个单向链表。这样在主引导扇区中除了主分区外,仅需要存储一个被称为扩展分区的分区数据,通过这个扩展分区的数据可以找到下一个分区(实际上也就是下一个逻辑磁盘)的起始位置,以此起始位置类推可以找到所有的分区。无论系统中建立多少个逻辑磁盘,在主引导扇区中通过一个扩展分区的参数就可以逐个找到每一个逻辑磁盘。 • 操作系统引导扇区(OBR)。OBR(OS Boot Record)即操作系统引导扇区,通常位于硬盘的0磁道1柱面1扇区(这是对于DOS来说的,对于那些以多重引导方式启动的系统则位于相应的主分区/扩展分区的第一个扇区),是操作系统可直接访问的第一个扇区,它也包括一个引导程序和一个被称为BPB(BIOS Parameter Block)的本分区参数记录表。其实每个逻辑分区都有一个OBR,其参数视分区的大小、操作系统的类别而有所不同。引导程序的主要任务在当根目录中寻找系统文件IO.SYS,MSDOS.SYS和WINBOOT.SYS三个文件,如果存在,就把IO.SYS文件读入内存,并移交控制权予该文件。在WIN98的系统中,没有MSDOS.sys文件,系统能够正常启动,但是无法进入桌面;如果没有COMMAND.COM文件,能够正常启动到桌面,但是无法进入DOS字符方式。 BPB参数块:记录着本分区的起始扇区、结束扇区、文件存储格式、硬盘介质描述符、根目录大小、FAT个数、分配单元(Allocation Unit,以前也称之为簇)的大小等重要参数。OBR由高级格式化程序产生(例如DOS 的Format.com)。 • 文件分配表(FAT)。FAT(File Allocation Table)即文件分配表,是DOS/Win9x系统的文件寻址系统。为了防止意外损坏,FAT一般做两个(也可以设置为一个),第二FAT为第一FAT的备份, FAT区紧接在OBR之后(对于FAT32格式,位置是从引导扇区开始的第32个扇区就是第一个FAT表的位置),其大小由这个分区的空间大小及文件分配单元的大小决定。随着硬盘容量的迅速发展,Microsoft 的DOS及Windows也先后采用我们所熟悉的FAT12、FAT16和FAT32格式。不过Windows NT、OS/2、UNIX/Linux、Novell等都有自己的文件管理方式,不同于FAT文件格式。FAT12是使用12BIT来表示簇的位置,最大容量32M,FAT16是使用两个字节16BIT位来表示簇的位置,分区最大容量2G,而FAT32采用4个字节来表示簇的位置,分区最大容量65G。 • 目录区(DIR)。DIR是Directory即根目录区的简写,在FAT12和FAT16格式中,DIR紧接在第二FAT表之后,而在FAT32格式中,根目录区的位置可以在分区中的任意位置,其起始位置是由引导扇区给出的。单有FAT表还不能确定文件在磁盘中的具体位置,只有FAT表和DIR区配合使用,才能准确定位文件的确切位置。DIR记录着每个文件(目录)的文件名,扩展名,是否支持长文件各,起始单元(这是最重要的)、文件的属性,大小,创建日期,修改日期等住处内容。操作系统在读写文件时,根据DIR中的起始单元,结合FAT表就可以知道文件在磁盘的具体位置,然后顺序读取每个簇的内容就可以了。 • 数据区(DATA) 。在DIR区之后,才是真正意义上的数据存储区,即DATA区。DATA虽然占据了硬盘的绝大部分空间,但没有了前面的各部分,它对于我们来说,也只能是一些枯燥的二进制代码,没有任何意义。注意:我们通常所说的格式化程序(指高级格式化,例如DOS下的Format程序),并没有把DATA区的数据清除,只是重写了FAT表而已,除非你使用了“Format X: /U”命令,强制对每一扇区写“F6”。 至于硬盘分区,也只是修改了MBR和OBR,绝大部分的DATA区的数据并没有被改变,这也是许多硬盘数据能够得以修复的原因。但即便如此,MBR,OBR,FAT,DIR之一被破坏的话,我们的数据也无法正常读取。
服务器配置课程学习小结全文共12页,当前为第1页。服务器配置课程学习小结全文共12页,当前为第1页。服务器配置课程学习小结 服务器配置课程学习小结全文共12页,当前为第1页。 服务器配置课程学习小结全文共12页,当前为第1页。 在这门课中,老师从Windows server 2008 R2服务器管理基础、系统配置与管理、活动目录与域开始,经过DNS与WINS服务、DHCP服务、文件与打印服务、IIS服务器、证书服务器与SSL网络安全应用、邮件服务器、远程桌面服务、路由与远程访问服务到网络策略服务器结束,有条理的向我们讲述了网络服务器的全面基础知识及从安装到配置管理操作的过程与常见问题的解决。 一.Windows server 2008 R2服务器管理基础: 在本章中,主要是要了解网络服务器的基础知识,掌握Windows server 2008 R2服务器的安装和基本配置,熟悉服务器管理器和Windows power shell的使用。首先讲的是网络服务器的概述,在其中要了解服务器的定义、常见的网络服务、网络服务的模式、网络服务器的硬件、软件、操作系统及部署方案: 1.服务器指的是在网络环境中为用户计算机提供各种服务器的计算机,承担网络中数据的存储、转发和发布等,是网络应用的基础和核心。 2.常见的网络服务有WEB、FTP、域名等。在网络服务中有两种模式,一为客户/服务器(C/S)模式,是一种两层结构,客户端向服务器端请求信息或服务,服务器端则响应客户端的请求;另一种为浏览器/服务器(B/S)模式,是对C/S模式进行的改进,客户端与服务器之间物理上通过Internet或intranet相连,按照HTTP协议进行通信,便于实现基于Internet的网络应用。 3.在硬件上服务器大都采用了部件冗余技术、RAID技术、内存纠错技术和管理软件。 4.服务器同样拥有操作系统,又叫网络操作系统,是网络的灵魂,除了具有一般操作系统的功能外,还能够提供高效、可靠的网络通信能力和多种网络服务。 5.在网络服务器中的软件是用来接收来自第三方的请求,并提供某种特定形式的信息来应答这些请求。 6.在部署服务器时,可以面向内网部署,也可以面向Internet部署。 在Windows server2008 R2的安装中,需了解server 2008的多种版本,懂得如何组建网络测试及服务器的安装;在服务器安装完成后,需了解服务器的一些基本配置:初始配置任务、Windows激活、基本网络设置检查、硬件安装与设置、环境变量设置、虚拟内存设置、故障恢复设置。在服务器安装完成后,就可以在服务器配置课程学习小结全文共12页,当前为第2页。服务器配置课程学习小结全文共12页,当前为第2页。服务器上安装各种服务和应用程序,并且使用服务器管理器进行管理。Windows power shell,是一种专门为系统管理设计的、基于任务的命令行shell和脚本语言,主要是作为Windows管理员使用的专业工具。 服务器配置课程学习小结全文共12页,当前为第2页。 服务器配置课程学习小结全文共12页,当前为第2页。 二.系统配置与管理: 1.熟悉MMC控制台的操作:Microsoft管理控制台、控制面板、CMD命令行、注册表编辑器。 2.本地用户和组的创建和管理:在"计算机管理"工具中设置用户、组。 用户配置文件:是用户登录时定义系统加载所需环境的设置和文件的集合。 3.基本磁盘和动态磁盘的管理操作: 基本磁盘:平常使用的默认磁盘类型,通过分区来管理和应用磁盘空间。 每块基础磁盘最多可以划分4个主分区(用来启动操作系统的分区,即系统的引导文件存放的分区) 动态磁盘:使用卷来组织空间,使用方法与基本磁盘分区相似。 可建立在不连续的磁盘空间上,且空间大小可以动态的变更。 在磁盘分区时有两种形式: MBR:主引导扇区,是计算机开机后访问硬盘时所必须要读取的首个扇区 GPT:是一个实体硬盘的分区结构。它是EFI(可扩展固件接口标准)的一部分,用来替代BIOS中的主引导记录分区表 磁盘配额管理:管理员可以为用户所bai能使用的磁du盘空间进行配额限zhi制,每一用户只能使用最大配额范围内的磁盘空间。 4.文件系统管理: NTFS:是Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式,提供长文件名、数据保护和恢复,能通过目录和文件许可实现安全性,并支持跨越分区。 文件夹权限:对用户读写权限的管理。 5.网络连接配置管理: IPV6:是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址 服务器配置课程学习小结全文共12页,当前为第3页。服务器配置课程学习小结全文共12页,

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧