Добрый день. Никак не могу научиться писать на диск с Vista. Использую ZwCreate... ZwWrite..., Create проходит нормально Read - тоже нормально, а Write выдает ошибку c0000022 - access denied. Код (Text): RtlInitUnicodeString ( &ourFileName, L"\\??\\PhysicalDrive0" ); InitializeObjectAttributes( &oa, &ourFileName, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL ); status = ZwCreateFile ( &fileHandle, FILE_WRITE_DATA | FILE_READ_DATA | SYNCHRONIZE, &oa, &ioStatus, 0, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 ); if( !NT_SUCCESS( status ) ) { LogErr( "ZwCreateFile status = %08x\n", status ); return status; } status = ZwWriteFile( fileHandle, NULL, NULL, NULL, &ioStatus, &buffer, buffer_size, &offset, NULL ); if ( !NT_SUCCESS ( status ) ) { return STATUS_UNSUCCESS; } вот код зараннее спасибо.
Гук пишет: Следующим пунктом у него идет через int 13h, который нельзя использовать из режима ядра. Никто не писал функциональные драйвера? как же без прерываний? или нельзя вызывать только прерывания BIOS? Там же у Гука приведена система команд ATA/ATAPI и SATA. Команды вроде таких "Acnowledge Media Change Код BGh". "...Код содержит шестнадцатиричный код, загружаемый в регист команды..." Но как использовать эту команду? И вообще возможно ли это из режима ядра?