Код: Выделить всё
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)Real_WriteFile, Hooked_WriteFile);
DetourTransactionCommit();
- Вызовы Блокнота WriteFile очень часто, потому что каждый раз, когда я печатаю символ, он вызывает WriteFile, в то время как я ожидал, что он вызовет функции, отличные от WriteFile, для вывода символов на экран. Это нормальное поведение? Потому что, когда я проверяю аргументы вызова WriteFile, данные на диск не записываются.
- Но что более важно, с помощью Detours я подключил WriteFile, но предположительно она также перехватывает NtWriteFile, что немного странно, поскольку WriteFile — это функция, которая вызывает NtWriteFile, а не наоборот. Когда я запускаю notepad.exe в мониторе API, похоже, что notepad.exe в некоторых случаях напрямую вызывает NtWriteFile, но по какой-то причине мой объезд также, кажется, перехватывает эти вызовы, в то время как я перехватываю только WriteFile. Может ли кто-нибудь объяснить такое поведение? Например, почему Detours также перехватывает NtWriteFile, хотя я явно указал перехват WriteFile?

Подробнее здесь: https://stackoverflow.com/questions/778 ... -writefile