Фсем здрасьте. плиз, обьясните дураку, как читать сектора физического диска под Win32, не разрабатывая свой дисковый драйвер и не работая с нулевым уровнем привилегий? можно как то получить доступ к "физике" с 3-го кольца? (админские права, ессно, есть) к примеру функой Код (Text): HANDLE WINAPI CreateFile( __in LPCTSTR lpFileName, __in DWORD dwDesiredAccess, __in DWORD dwShareMode, __in LPSECURITY_ATTRIBUTES lpSecurityAttributes, __in DWORD dwCreationDisposition, __in DWORD dwFlagsAndAttributes, __in HANDLE hTemplateFile ); читая\писАя Код (Text): \\.\PhysicalDriveX без того, что я сказал..? желательно с примитивный примерчик, типа прочитать\записать мбр, аля "int 13h, ah=2\3"
Код (Text): #pragma hdrstop #include <tchar.h> #include <stdio.h> #include <windows.h> #include <iostream> //--------------------------------------------------------------------------- # define _UNICODE #pragma argsused using namespace std; int _tmain(int argc, _TCHAR* argv[]) { FILE *file; const int len = 512; char buf[len]; unsigned long n = 0; // открыть флешку на запись wcout.imbue(locale(".866")); wcout << L"открытие флешки... " << endl; HANDLE disk = CreateFile("\\\\.\\E:", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ); if (disk == INVALID_HANDLE_VALUE) { wcout << L"Не могу открыть диск!"<<endl; return 1; } wcout << L"Диск открыт\n"<<endl; // открыть файл на чтение wcout << L"фаил sektor.bin...открыт\n"<<endl; file = fopen("sektor.bin", "rb"); if (!file) { wcout << L"Ошибка чтения!\n"<<endl; return 1; } // последние два байта сектора buf[510] = 0x55; buf[511] = 0xaa; // прочитать фаил в буфер wcout << L"фаил успешно прочитан\n"<<endl; fread(buf, sizeof(char), len - 2, file); fclose(file); // записать sektor.bin в загрузочный сектор if (!WriteFile(disk, buf, len, &n, NULL)) { wcout << L"фаил не записан!"<<endl; return 1; } CloseHandle(disk); wcout << L"ВСЕ ХОРОШО ФЛЕШКА ЗАПИСАНА!"<<endl; return 0; } //--------------------------------------------------------------------------- Вот пример записи MBR физического диска E