Состояние регистров при возврате из процедур драйвера

Тема в разделе "WASM.ZEN", создана пользователем Booster, 23 фев 2006.

  1. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Всем привет!

    При написании драйверов в XP SP2 обнаружилось, что необходимо сохранять значения некоторых регистров при входе в процедуры драйвера, и при выходе восстанавливать их.

    В DriverEntry - ebx, edi, ebp

    В процедурах диспетчеризации - edi, ebp

    В KmdTute об этом ни слова. Плиз подскажите какие регистры всё же необходимо сохранять по указаниям майкрософт. И если не сложно дайте ссылку на справочник по функам ntddl, hal и тд, а то в ddk2000 ни черта не могу найти. Даже описания DbgPrint нет.

    Заранее спасибо.
     
  2. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Эти регистры (ebp,ebx,esi,edi) нужно сохранять не только при вызове процедур драйверов, но и при любом вызове функций, которые могут изменить их состояние, а также при входе в текущую процедуру, если в ней предпологается использование этих регистров для своих местных задач.
     
  3. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.557
    Адрес:
    Russia
    А MSDN не судьба посмотреть ?

    там есть эта функция :

    DbgPrint

    DbgPrint sends a string to the kernel debugger.



    ULONG

    DbgPrint(

    IN PCHAR Format,

    . . . . [arguments]

    );

    Parameters

    Format

    Pointer to the format string to print, as in printf. The Format string supports the printf-style formatting codes. However, the unicode format codes (%wc and %ws) can only be used at IRQL PASSIVE_LEVEL.

    arguments

    Specifies arguments for the format string, as in printf.

    Return Value

    If successful, DbgPrint returns the NTSTATUS code STATUS_SUCCESS; otherwise it returns the appropriate error code.

    ....



    В общем не делай поспешных выводов.

    Функции ntdll описаны у Гэри Неббета или chm по инету гуляет : The Undocumented Functions

    The Undocumented Functions Microsoft Windows NT/2000 (by Tomasz Nowak)

    Часть функций из Hal описаны в ДДК 2000\ХР (как правило начитаются с Hal...)