阅读:2568回复:24
谁能给我指点,指点
老板要我快速开发一个硬盘驱动程序,用wdm方式,我不知如何下手,本站的倒子又用不上,不知如何是好??
|
|
沙发#
发布于:2002-06-02 15:08
你说的硬盘驱动程序是什么方面的啊?
|
|
板凳#
发布于:2002-06-02 15:12
买回一个新硬盘,挂到电脑上没经格式化和分区,在2000下能直接对其物理扇区进行读和写操作
|
|
地板#
发布于:2002-06-02 15:44
这个可以做到啊!每一个硬盘都会有一个\\??\\PhysicalDriveX,对应的,后面的X就是数字0,1这些的了!你要看你要写的硬盘是那个了,然后用CREATEFILE()和READFILE(),WRITEFILE()就可以直接进行读写了啊!也不用驱动程序了
|
|
地下室#
发布于:2002-06-02 15:47
主要是因为硬盘里面的内容不以我们自已的文件格式,我必须要对其物理扇区进行该问
|
|
5楼#
发布于:2002-06-02 16:03
对啊!我说的就是以物理扇区来进行读写的啊!
|
|
6楼#
发布于:2002-06-02 16:17
这两个函数不能对硬盘进行直接扇区读写,比如我要读0磁道的第3个扇区该怎么办,因我们的硬盘里面的内容是以自已定的文件结构,目录区和数据区都由自已定,哪些扇区放数据,哪些扇区放目录,只能是向硬盘发送读,写命令才行。
|
|
7楼#
发布于:2002-06-02 16:25
本站有个硬盘驱动的倒子,叫\"一个WDM硬盘驱动的倒子\",我觉了其是以PIO型式驱动,但里面一些函数不知为何只能在以C了型式下连接才能通过(如 IoGetConfigurationInformation())以C++形式连接其所在了库找不到,不知为何
|
|
8楼#
发布于:2002-06-02 16:28
这个函数是可以的啊!从物理的0扇区到最后都可以的啊!
|
|
9楼#
发布于:2002-06-02 16:32
我看了MSDN,里面找不到该函数的用法只有WriteFile(),ReadFile()
,你能不能举个例子如何使用。 |
|
10楼#
发布于:2002-06-02 16:38
有啊!MSDN上面有说明的啊!
CreateFile The CreateFile function creates or opens the following objects and returns a handle that can be used to access the object: Consoles Communications resources Directories (open only) Disk devices Files Mailslots Pipes 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 ); |
|
11楼#
发布于:2002-06-02 16:43
我以为这个决不能直接对其物理扇区进行读和写,能不能举个例子说明如何使用。
|
|
12楼#
发布于:2002-06-02 17:03
晕,你在SDK的例子里面搜索一下啊!\\\\??\\\\Phy
|
|
13楼#
发布于:2002-06-02 17:12
这些函数我当然会用,是基于WIN的文件系统的读和写,但如何能直接对物理扇区进行读写呢,有这样的例子吗。
|
|
14楼#
发布于:2002-06-02 18:36
晕,你自己研究吧,告诉你方法了!要不自己去找吧!本站好象有例子的啊!只要你用createfile(硬盘的名称(\\??\\Physical0),.......),然后就可以进行readfile和writefile()了,他的物理扇区和要读写的扇区长度用字节来计算啊!一个扇区是512啊!
|
|
15楼#
发布于:2002-06-02 19:07
guardee的方法理论上是没有问题的。实际上大约也有90%以上的可行性。
打开磁盘设备,读写自然不通过文件系统。 如果不幸失败了,大约是disk upper filter的原因。这从情况下,通过试用deviceiocontrol自己发送scsi_path_though可以搞定的。 先试一下readfile,writefile,那样要容易得多。 |
|
16楼#
发布于:2002-06-02 19:17
楼上的大虾,看到你回答的问题,太佩服你了!不知道能否赐教交流呢?
|
|
17楼#
发布于:2002-06-02 19:29
这样毕竟不是正规的方法,对于要访问100G或120G的大硬盘可行吗,
我没有太多的时间去尝试啊。 |
|
18楼#
发布于:2002-06-02 19:40
老兄,你说的正规方法是什么呀?
凡是支持lba方式的块设备,没有不支持scsi_path_though的(nt,2k,xp)。反过来你要是要支持20M的硬盘,八成有这种方式有问题。 |
|
19楼#
发布于:2002-06-02 19:51
我知道在老DOS下对硬盘直接操作可以能过BIOS调用,也可以根据协议自已编驱动(用PIO方式),但在视窗下我不是很熟,你能保证这种方法的可行性吗,会不会有致命的问题,这和用PIO方式有何区别
|
|
上一页
下一页