
04.05.2007, 00:52
|
|
Познающий
Регистрация: 30.11.2006
Сообщений: 49
Провел на форуме: 36434
Репутация:
28
|
|
_Great_
Вообще для бряка я создаю макрос
#define __INT3 __asm int 3;
более наглядней.
Удобно при написании дров использовать Int 3 причём с опкодом CC, а не с CD 03. тем более что некоторые ядерные отладчики имеют функцию: заменить все int3 (0xCC) на nop (0x90). НО ,как я понимаю, в VC такой возможности нет. обидно.
------------------------------------------------------------------------
Иногда функция должна возвращать результат своей работы (допустим ошибку), который нужно показать юзеру. Удобно делать следующим образом:
PCHAR func(...)
{
..
return "ERROR";
...
return "STATUS_SUCCESS";
}
------------------------------------------------------------------------
Что касается сишных функций - тож можно передавать параметры через регистры. достаточно при объявлении указать __fastcall :
DWORD __fastcall func1(arg1,arg2,...)
{
...
}
------------------------------------------------------------------------
Допустим, необходимо проверить 4 символа в строке.
PCHAR str1;
ULONG i;
...
if ( (str[i] == 'd') && (str[i+1]== 'c') &&...) ...
НО лучше так:
if ( *(PDWORD)&str1[i] == 'abcd' ) ...
только нужно учитывать, что компилятор переворачивает символы в строке.
|
|
|