DeviceIoControl( )可以選擇讀取硬碟某個磁區的內容嗎 |
尚未結案
|
bosswang919
一般會員 ![]() ![]() 發表:5 回覆:4 積分:1 註冊:2004-09-08 發送簡訊給我 |
在
hDevice = CreateFile("\\\\.\\PhysicalDrive0", // drive to open
0|GENERIC_READ, // no access to the drive
FILE_SHARE_READ | // share mode
FILE_SHARE_WRITE,
NULL, // default security attributes
OPEN_EXISTING, // disposition
0, // file attributes
NULL); // do not copy file attributes
之後 DeviceIoControl( )可以選擇讀取硬碟某個磁區的內容嗎 DeviceIoControl(
hDevice,
IOCTL_DISK_GET_DRIVE_GEOMETRY,
NULL,
0,
pdg,
sizeof(*pdg),
&junk,
(LPOVERLAPPED) NULL); 之中的 IOCTL_DISK_GET_DRIVE_GEOMETRY 可以是其他硬碟的參數
但是有其他的參數可以直接讀取某個磁區的內容嗎
|
bosswang919
一般會員 ![]() ![]() 發表:5 回覆:4 積分:1 註冊:2004-09-08 發送簡訊給我 |
小弟找到以下參數,不知道其功用是否跟
SetFilePointer(hFile, bytNumOffset , &dwSet , FILE_BEGIN);
的意義類似請各位大大不吝指教 The IOCTL_DISK_REASSIGN_BLOCKS DeviceIoControl operation directs the disk device to map one or more blocks to its spare-block pool. dwIoControlCode = IOCTL_DISK_REASSIGN_BLOCKS; // operation code
lpInBuffer; // address of input buffer
nInBufferSize; // size of input buffer
lpOutBuffer = NULL; // address of output buffer; not used; must be NULL
nOutBufferSize = 0; // size of output buffer; not used; must be zero
lpBytesReturned; // address of actual bytes of output
|
blk5743
高階會員 ![]() ![]() ![]() ![]() 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
|
kopin
一般會員 ![]() ![]() 發表:1 回覆:2 積分:0 註冊:2005-03-01 發送簡訊給我 |
最近剛好我也對這個主題有興趣
我所了解的是DeviceIoControl是無法直接access HDD sector(不知道正不正確)
必須使用其他的function:SetFilePointer() , 以及ReadFile()
(在Win2000, XP之下) 1. 先使用SetFilePointer 設定要access 的sector
ex: SetFilePointer(hDevice,512*SecNum,0,FILE_BEGIN); 2. 再利用ReadFile 讀取sector 到你指定的Buffer
ex: bResult=ReadFile(hDevice,Buf,512,&dwRet,NULL);
同樣的, 如要寫入HDD, 則可使用WriteFile() 來完成
|
harrypp
中階會員 ![]() ![]() ![]() 發表:7 回覆:124 積分:61 註冊:2006-08-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |