当前位置: 代码迷 >> 驱动开发 >> win2003上,直接写u盘0扇区的有关问题
  详细解决方案

win2003上,直接写u盘0扇区的有关问题

热度:83   发布时间:2016-04-28 10:49:44.0
win2003下,直接写u盘0扇区的问题.
我写了一个直接写U盘0扇区的程序,目的是对U盘的0扇区进行加密.流程如下:
1.取得u盘的句柄:
char szdrv[MAX_PATH] = {0};
sprintf(szdrv, "\\\\.\\physicaldrive%d", uDevIndex);

HANDLE hDrive = 
CreateFile(szdrv, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if(INVALID_HANDLE_VALUE == hDrive)
{
return false;
}

2.ReadFile
3.加密
4.WriteFile

但是通过一下流程的测试,会出现写不上的问题:(win2003 标准版 sp2)
1.格式化(格式化之后不拔出U盘)
2.进行上述的操作.

结果就是拔出U盘再插上,数据并没有写上.请高手帮忙分析下原因.多谢.

------解决方案--------------------
如果是没有分区表的情况,不要打开PhysicalDrive,用打开盘符设备的方式,CreateFile之后,先用DeviceControl FSCTL_LOCK_VOLUME锁定卷,如果不成功可以等待一下再试,成功后再进行读写,处理完后用DeviceControl FSCTL_DISMOUNT_VOLUME,然后再CloseHandle,最后安全拔除设备。
------解决方案--------------------
驱动可不可以调试
  相关解决方案