Абсолютное чтение диска
От: VitaliyV  
Дата: 24.07.04 17:46
Оценка:
Подскажите пожалуйста, как в Windows прочитать заданный сектор диска.

Заранее спасибо.
Re: Абсолютное чтение диска
От: Stanky  
Дата: 24.07.04 18:00
Оценка:
> Подскажите пожалуйста, как в Windows прочитать заданный сектор диска.
>
HANDLE hDrv=CreateFile("\\\\.\\PhysicalDriveX", 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
SetFilePointer(hDrv, dwSectorNumber*512, NULL, FILE_BEGIN);
ReadFile(hDrv, vBuffer, 512, &dwBytesRead, NULL);


Но в 9x это не работает!!!
Posted via RSDN NNTP Server 1.9 beta
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[2]: Абсолютное чтение диска
От: VitaliyV  
Дата: 24.07.04 20:14
Оценка:
Здравствуйте, Stanky, Вы писали:

>> Подскажите пожалуйста, как в Windows прочитать заданный сектор диска.

>>
S>
S>HANDLE hDrv=CreateFile("\\\\.\\PhysicalDriveX", 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
S>SetFilePointer(hDrv, dwSectorNumber*512, NULL, FILE_BEGIN);
S>ReadFile(hDrv, vBuffer, 512, &dwBytesRead, NULL);
S>


S>Но в 9x это не работает!!!



Огромное спасибо!
Re[2]: Абсолютное чтение диска
От: VitaliyV  
Дата: 25.07.04 05:19
Оценка:
Здравствуйте, Stanky, Вы писали:

>> Подскажите пожалуйста, как в Windows прочитать заданный сектор диска.

>>
S>
S>HANDLE hDrv=CreateFile("\\\\.\\PhysicalDriveX", 0, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
S>SetFilePointer(hDrv, dwSectorNumber*512, NULL, FILE_BEGIN);
S>ReadFile(hDrv, vBuffer, 512, &dwBytesRead, NULL);
S>


S>Но в 9x это не работает!!!


А что бы писать на диск нужно использовать WriteFile?
С какими параметрами нужно тогда вызвать CreateFile?
С этими ошибка ERROR_ACCESS_DENIED.
Re[3]: Абсолютное чтение диска
От: Stanky  
Дата: 25.07.04 06:50
Оценка:
> А что бы писать на диск нужно использовать WriteFile?
>
Именно!!!

> С какими параметрами нужно тогда вызвать CreateFile?

> С этими ошибка ERROR_ACCESS_DENIED.
>
Упс!!! Сорри — мой косяк!!!

HANDLE hDrv=CreateFile("\\\\.\\PhysicalDriveX", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
Posted via RSDN NNTP Server 1.9 beta
Не бойся выглядеть глупо, от этого ты выглядишь ещё глупей!!!
Re[3]: Абсолютное чтение диска
От: Valerio Россия linkedin.com/in/boronin
Дата: 25.07.04 07:03
Оценка:
VV>А что бы писать на диск нужно использовать WriteFile?
да

VV>С какими параметрами нужно тогда вызвать CreateFile?

выше написали, подробности — в MSDN в комментариях для CreateFile

VV>С этими ошибка ERROR_ACCESS_DENIED.

нужны права админа

The caller must have administrative privileges.
The dwCreationDisposition parameter must have the OPEN_EXISTING flag.
When opening a volume or floppy disk, the dwShareMode parameter must have the FILE_SHARE_WRITE flag.


последнее условие — ели Вы открываете не физический диск, а том (логический диск), например используя строку
вида _T("\\.\<x>:"), где x- буква диска (допустимо открывать по Volume name/GUID)

следует помнить что если Вы откроете том, то буфера для ф-ий чтения-записи нужно выравнивать на границу равную размеру сектора — и соотв их размер тем более:

Volume handles may be opened as noncached at the discretion of the file system, even when the noncached option is not specified with CreateFile. You should assume that all Microsoft file systems open volume handles as noncached. The restrictions on noncached I/O for files apply to volumes as well.

A file system may or may not require buffer alignment even though the data is noncached. However, if the noncached option is specified when opening a volume, buffer alignment is enforced regardless of the file system on the volume. It is recommended on all file systems that you open volume handles as noncached and follow the noncached I/O restrictions.

... << Rsdn@Home 1.1.4 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Re[2]: Абсолютное чтение диска
От: Slicer [Mirkwood] Россия https://ru.linkedin.com/in/maksim-gumerov-039a701b
Дата: 26.07.04 07:56
Оценка:
Здравствуйте, Stanky, Вы писали:

S>Но в 9x это не работает!!!

В 9x можно попробовать IOCTL-запросы к блочным устройствам (см. DeviceIoControl в варианте 9x).

Slicer
Специалист — это варвар, невежество которого не всесторонне :)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.