Files
shadow-rs/driver/src/injection/callbacks.rs
2024-08-05 21:35:29 -03:00

29 lines
801 B
Rust

use wdk_sys::{ntddk::{ExFreePool, PsIsThreadTerminating}, PKAPC, PVOID, _MODE::UserMode};
use crate::includes::{types::PKNORMAL_ROUTINE, KeTestAlertThread, PsGetCurrentThread};
pub unsafe extern "system" fn kernel_apc_callback(
apc: PKAPC,
_normal_routine: *mut PKNORMAL_ROUTINE,
_normal_context: *mut PVOID,
_system_argument1: *mut PVOID,
_system_argument2: *mut PVOID
) {
KeTestAlertThread(UserMode as i8);
ExFreePool(apc as _)
}
pub unsafe extern "system" fn user_apc_callback(
apc: PKAPC,
normal_routine: *mut PKNORMAL_ROUTINE,
_normal_context: *mut PVOID,
_system_argument1: *mut PVOID,
_system_argument2: *mut PVOID
) {
if PsIsThreadTerminating(PsGetCurrentThread()) == 1 {
*normal_routine = None;
}
ExFreePool(apc as _)
}