Здравствуйте, я только начал писать драйвера режима ядра, поэтому заранее извиняюсь, если вопрос окажется банальным. Задача такая- в SDT подменяется функция, далее нужно перед вызовом оригинала передать управление определённой функции в режим пользователя. При этом важно максимизировать скорость выполнения, т.к. функция из SDT может вызываться очень часто. Более того- этот код может зависать и "делить на ноль", но не может вызывать перехватываемый сервис. Т.е. нужно: 0) вызвать функцию из режима пользователя и ждать одну секунду её завершения 0.0) Если функция из пункта 0 успешно завершилась, то обработать возвращаемые ей данные 0.1) Если функция не завершилась, то обработать эту ситуацию и продолжить выполнение кода 0.2) Если функция "упала", то обработать и эту ситуацию(иначе чем 0.1) и продолжить выполнение кода Вроде как специально под эти цели дана функция KeUserModeCallback, если вернула STATUS_SUCCESS, то всё хорошо, иначе всё плохо. Но как быть с зависанием? Просто запускать в отдельном потоке и ждать через KeWaitForSingleObject или есть способы лучше?