您的位置:首页 > 其它

WinCE系统下应用程序直接读写存储设备(U盘)磁盘扇区

2010-01-14 14:56 363 查看
测试代码:

filename = _T("//./DSK1:"); 
HANDLE hFile = CreateFile(filename, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_WRITE_THROUGH, NULL); 
if (hFile == INVALID_HANDLE_VALUE) 
{ 
MessageBox(_T("打开U盘失败!")); 
CloseHandle(hFile); 
return; 
} 
else 
{ 
MessageBox(_T("打开U盘成功!"));
m_edit = (long)hFile; 
UpdateData(false); 
} 
BYTE buffer[512]; 
for(int i=0;i < 512;i++) 
{ 
buffer[i] = 0xA5; 
} 
SG_REQ SG_req1; 
SG_req1.sr_start = 0; 
SG_req1.sr_num_sec = 1; 
SG_req1.sr_num_sg = 1; 
SG_req1.sr_status = 0; 
SG_req1.sr_callback = NULL; 
SG_req1.sr_sglist[0].sb_len = 512; 
SG_req1.sr_sglist[0].sb_buf = buffer; 
DWORD actnum; 
if(!DeviceIoControl(hFile,IOCTL_DISK_WRITE,&SG_req1,
sizeof(SG_req1),0,0,&actnum,0)) 
{ 
MessageBox(_T("写U盘失败!")); 
} 
else 
{ 
MessageBox(_T("写U盘成功!")); 
}


WinCE 5.0的板子插上U盘,运行程序,点击按钮,使上述代码得到执行。

拔下U盘,插到PC机,通过WinHex软件查看

已经成功将第0个扇区的512个字节全部写成了A5

此时PC机已经不能够识别该U盘,因为已经破坏了主引导扇区。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: