如何直接向物理地址写数据?

时间:2022-07-14 17:41:06
问题是这样的,我的硬盘上有一个较小的逻辑分区,只有100M(相当于外接了一个U盘),现在我想对该盘进行读写操作(不使用File类),我要自己控制,比如我在物理地址1000H的地方开始写1M的数据,不对FAT表进行操作
我学习到好像使用SCSI命令可以完成这个事情,但我不清楚具体该怎么处理?
不知道大家有没有明白我的意思,请大家多多帮忙!health_xu@163.com

6 个解决方案

#1


gz  
记得win2k下可以以文件的方式 打开硬件来操作的

#2


win98/me下:VxD
win2000/xp下:WDM

#3


补充一下,windows应用程序工作在ring 3层,所以是不能直接访问硬件的,必须写工作在ring0的程序才可以

#4


两位能不能说的详细点啊,
偶不是太明白,不好意思。
我刚看了一下TC的函数,发现
#include "dos.h"
int  absread(int driver,int number_of_sectors, long starting_sector,void *buffer);
int abswrite(int driver,int number_of_sectors, long starting_sector,void *buffer);
这两个函数与我所要求的非常相近,只可惜它们只能在DOS下使用,而我要求在WIN9X和WIN2K下使用

#5


2k下只要你权限够高是可以做到的。
http://asp.6to23.com/nowcan/newweb/list.asp?id=252

#6


win9x
http://www.csdn.net/develop/article/20/20550.shtm
我看了一下上面的文章,读是应该没有问题,不过写就难说了。
如果是读写硬盘最好还是写一个vxd
win2000
http://www.copathway.com/wyy/paper/z_w2k_disk.asp

#1


gz  
记得win2k下可以以文件的方式 打开硬件来操作的

#2


win98/me下:VxD
win2000/xp下:WDM

#3


补充一下,windows应用程序工作在ring 3层,所以是不能直接访问硬件的,必须写工作在ring0的程序才可以

#4


两位能不能说的详细点啊,
偶不是太明白,不好意思。
我刚看了一下TC的函数,发现
#include "dos.h"
int  absread(int driver,int number_of_sectors, long starting_sector,void *buffer);
int abswrite(int driver,int number_of_sectors, long starting_sector,void *buffer);
这两个函数与我所要求的非常相近,只可惜它们只能在DOS下使用,而我要求在WIN9X和WIN2K下使用

#5


2k下只要你权限够高是可以做到的。
http://asp.6to23.com/nowcan/newweb/list.asp?id=252

#6


win9x
http://www.csdn.net/develop/article/20/20550.shtm
我看了一下上面的文章,读是应该没有问题,不过写就难说了。
如果是读写硬盘最好还是写一个vxd
win2000
http://www.copathway.com/wyy/paper/z_w2k_disk.asp