怎样在磁盘指定区域写入数据?如c中的biosdisk ?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 (转贴)用C++ BUILDER 编写如下的程序来读区物理磁盘的绝对扇区,对软盘可用,但对硬盘不管用不知问题出在哪里,请各位指教:void __fastcall TForm1::Button1Click(TObject *Sender){ DWORD w; int v; hDevice=CreateFile("\\\\.\\VWIN32",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(hDevice!=NULL) { w=1; w=w<<8; v=0x80; reg.reg_EAX=0x440D; reg.reg_EBX=v|w; reg.reg_ECX=0x084B; reg.reg_EDX=1; reg.reg_Flags=0x0001; fresult=DeviceIoControl(hDevice,VWIN32_DIOC_DOS_IOCTL,?,sizeof(reg),?,sizeof(reg),&cb1,0); if(!fresult||(reg.reg_Flags & 0x0001)) ShowMessage("Fail1"); reg.reg_EAX=0x0201; //读硬盘的0面0柱面1扇区,数量为一扇区. reg.reg_EBX=(DWORD)&boot; //定义为 BYTE boot[512]; reg.reg_ECX=0x0001;// reg.reg_EDX=v; reg.reg_Flags=0x0001; fresult=DeviceIoControl(hDevice,VWIN32_DIOC_DOS_INT13,?,sizeof(reg),?,sizeof(reg),&cb1,0); if(!fresult||(reg.reg_Flags & 0x0001)) ShowMessage("Fail2"); Edit2->Text=AnsiString(boot[StrToInt(Edit1->Text)]); reg.reg_EAX=0x440d; reg.reg_EBX=v; reg.reg_ECX=0x086b; reg.reg_Flags=0x0001; DeviceIoControl(hDevice,VWIN32_DIOC_DOS_IOCTL,?,sizeof(reg),?,sizeof(reg),&cb1,0); if(!fresult||(reg.reg_Flags & 0x0001)) ShowMessage("Fail3"); }} Win95和DOS不一样,不支持对硬盘BIOS函数的调用,不能从保护模式到V86模式BIOS硬盘请求的转化。调用ROM BIOS会变成使用了一个无效的地址。 在一个单元中如何控制另一窗体上的控件? VclSkin原理及相关问题 300分球:内猫编程 问一个关于RAVE的简单问题 请问大虾,我的程序已经做完了 其实是这样,见代码 ADO存取BLOB字段的问题~~~~~~~~~~~~~~~~~~~~~~ 如何控制记录的唯一性? 请问如何检测进程中是否存在某一程序 在DELPHI中使用ACCESS数据库是不是一定要装ACCESS呀?? install shield 下载 对于spcomm控件的OnReceiveData事件,怎么样得到com口的数据,并且利用?很急
不知问题出在哪里,请各位指教:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
DWORD w;
int v;
hDevice=CreateFile("\\\\.\\VWIN32",GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hDevice!=NULL)
{ w=1;
w=w<<8;
v=0x80;
reg.reg_EAX=0x440D;
reg.reg_EBX=v|w;
reg.reg_ECX=0x084B;
reg.reg_EDX=1;
reg.reg_Flags=0x0001;
fresult=DeviceIoControl(hDevice,VWIN32_DIOC_DOS_IOCTL,?,sizeof(reg),?,sizeof(reg),&cb1,0);
if(!fresult||(reg.reg_Flags & 0x0001))
ShowMessage("Fail1");
reg.reg_EAX=0x0201; //读硬盘的0面0柱面1扇区,数量为一扇区.
reg.reg_EBX=(DWORD)&boot; //定义为 BYTE boot[512];
reg.reg_ECX=0x0001;//
reg.reg_EDX=v;
reg.reg_Flags=0x0001;
fresult=DeviceIoControl(hDevice,VWIN32_DIOC_DOS_INT13,?,sizeof(reg),?,sizeof(reg),&cb1,0);
if(!fresult||(reg.reg_Flags & 0x0001))
ShowMessage("Fail2");
Edit2->Text=AnsiString(boot[StrToInt(Edit1->Text)]);
reg.reg_EAX=0x440d;
reg.reg_EBX=v;
reg.reg_ECX=0x086b;
reg.reg_Flags=0x0001;
DeviceIoControl(hDevice,VWIN32_DIOC_DOS_IOCTL,?,sizeof(reg),?,sizeof(reg),&cb1,0);
if(!fresult||(reg.reg_Flags & 0x0001))
ShowMessage("Fail3");
}}