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

测试代码:

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盘,因为已经破坏了主引导扇区。

你可能感兴趣的:(null,存储,buffer,callback,WinCE,磁盘)