HANDLE hDisk = CreateFile( szDisk,
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH ,
NULL );
对磁盘操作,用createfile 创建一个handle,
先进行lock 然后 disamount
// lock it
bRet = DeviceIoControl( hDisk,
FSCTL_LOCK_VOLUME,
NULL, 0,
NULL, 0,
&cbRet, NULL );
//dismount it
bRet = DeviceIoControl( hDisk,<span style="font-family: Arial, Helvetica, sans-serif;"> FSCTL_DISMOUNT_VOLUME, NULL, 0, NULL, 0, &cbRet, NULL );</span>
然后就可以进行读写了。
注意,读写磁盘,必段以512倍数的大小来进行,不然会失败。
http://stackoverflow.com/questions/4718657/setfilepointerex-fails-to-read-physical-disk-beyond-size-of-long