Всем привет! При написании драйверов в XP SP2 обнаружилось, что необходимо сохранять значения некоторых регистров при входе в процедуры драйвера, и при выходе восстанавливать их. В DriverEntry - ebx, edi, ebp В процедурах диспетчеризации - edi, ebp В KmdTute об этом ни слова. Плиз подскажите какие регистры всё же необходимо сохранять по указаниям майкрософт. И если не сложно дайте ссылку на справочник по функам ntddl, hal и тд, а то в ddk2000 ни черта не могу найти. Даже описания DbgPrint нет. Заранее спасибо.
Эти регистры (ebp,ebx,esi,edi) нужно сохранять не только при вызове процедур драйверов, но и при любом вызове функций, которые могут изменить их состояние, а также при входе в текущую процедуру, если в ней предпологается использование этих регистров для своих местных задач.
А 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...)