Драйвер диска

Тема в разделе "WASM.NT.KERNEL", создана пользователем wingshaver, 20 окт 2009.

  1. wingshaver

    wingshaver New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2008
    Сообщения:
    29
    Добрый день.
    Никак не могу научиться писать на диск с Vista. Использую ZwCreate... ZwWrite..., Create проходит нормально Read - тоже нормально, а Write выдает ошибку c0000022 - access denied.


    Код (Text):
    1.     RtlInitUnicodeString    ( &ourFileName, L"\\??\\PhysicalDrive0" );
    2.  
    3.     InitializeObjectAttributes( &oa, &ourFileName, OBJ_CASE_INSENSITIVE | OBJ_KERNEL_HANDLE, NULL, NULL );
    4.  
    5.     status = ZwCreateFile ( &fileHandle, FILE_WRITE_DATA | FILE_READ_DATA | SYNCHRONIZE, &oa, &ioStatus, 0, FILE_ATTRIBUTE_NORMAL,
    6.         FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0 );
    7.     if( !NT_SUCCESS( status ) )
    8.     {
    9.         LogErr( "ZwCreateFile status = %08x\n", status );
    10.         return status;
    11.     }
    12.     status = ZwWriteFile( fileHandle, NULL, NULL, NULL, &ioStatus, &buffer, buffer_size, &offset, NULL );
    13.     if ( !NT_SUCCESS ( status ) )
    14.     {
    15.               return STATUS_UNSUCCESS;
    16.         }
    вот код :dntknw:
    зараннее спасибо.
     
  2. wingshaver

    wingshaver New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2008
    Сообщения:
    29
    Да.. код для Vista

    можно ли использовать WRITE_PORT_... ? я не нашел инфы по этому делу..
     
  3. wingshaver

    wingshaver New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2008
    Сообщения:
    29
    Гук пишет:
    Следующим пунктом у него идет через int 13h, который нельзя использовать из режима ядра.

    Никто не писал функциональные драйвера? как же без прерываний? или нельзя вызывать только прерывания BIOS?

    Там же у Гука приведена система команд ATA/ATAPI и SATA. Команды вроде таких "Acnowledge Media Change Код BGh". "...Код содержит шестнадцатиричный код, загружаемый в регист команды..." Но как использовать эту команду? И вообще возможно ли это из режима ядра?