再谈关于VXD 方面的问题?????

hk318 2000-05-21 03:10:00
感谢DingBoy的复杂帮助!小弟看的咪咪糊糊,还是不知如何下手。
(不好意思!以前未使用过MS DDK)

另:能否简化叙述一下如何使用(VToolsD 工具)完成读磁盘物理扇区的功能?
比如声明一个自定义函数在VDrive派生类中
bool myDrive::ReadPhyDisk(char *buffer);
//buffer 为Win32 程序传来的线形地址 ,将磁盘扇区的数据放入其中,
//再传给Win32程序使用.

再一次致谢!!!!
hk318
...全文
184 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangledong 2001-09-01
  • 打赏
  • 举报
回复
我推~~~
yushaofeng 2001-09-01
  • 打赏
  • 举报
回复
up
shak 2001-09-01
  • 打赏
  • 举报
回复
我帮你推上去
DingBoy 2000-05-21
  • 打赏
  • 举报
回复
哎~~~~~~~vxd调用就是这么麻烦的! :(
下面这种方式比较简单些! 但。。。。。好象只能读软盘,而且不能用什么特殊的格式!

还有TBSoft的Win95Enc,Bitlok for Win 2.04采用这种读盘方法,允许更进一步的控制.
http://zzh2000.edu.chinaren.com/others/win95enc.zip

嘻嘻~~~~~这是我主叶的另一win下直接读软盘的asm程序! 用下面的原理!
http://202.103.134.11/~fsdb/source/diskscan_asm.htm

#include <windows.h>
#include "vmm.h"
#include "vwin32.h"
int WINAPI WinMain(HINSTANCE hCurrentInst,
HINSTANCE hPrevInstance, PSTR lpszCmdLine,
int nCmdShow)
{
HANDLE handle=CreateFile("\\\\.\\vwin32", 0, 0, NULL,
0, OPEN_EXISTING, NULL
);
char *buffer=new char[8192];
DIOC_REGISTERS registers;
registers.reg_EAX=0x201;
registers.reg_ECX=0x4f01;
registers.reg_EDX=0x0000;
registers.reg_EBX=(unsigned long)buffer; //读盘地址
DeviceIoControl(handle,VWIN32_DIOC_DOS_INT13,®isters,sizeof(DIOC_REGISTERS),
®isters,sizeof(DIOC_REGISTERS),NULL, 0);
if(registers.reg_Flags&1!=0) //CF is set
{
}
delete buffer;
CloseHandle(handle);
return 0;

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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