minhook_detours_sys/
lib.rs1#![cfg(target_os = "windows")]
3#![cfg(any(target_arch = "aarch64", target_arch = "x86", target_arch = "x86_64"))]
4#![allow(non_snake_case)]
5#![allow(non_camel_case_types)]
6
7pub type wchar_t = ::std::os::raw::c_ushort;
8pub type BOOL = ::std::os::raw::c_int;
9pub type LPVOID = *mut ::std::os::raw::c_void;
10pub type ULONG_PTR = ::std::os::raw::c_ulonglong;
11pub type CHAR = ::std::os::raw::c_char;
12pub type WCHAR = wchar_t;
13pub type LPCWSTR = *const WCHAR;
14pub type LPCSTR = *const CHAR;
15pub type HRESULT = ::std::os::raw::c_long;
16pub const MH_OK: MH_STATUS = 0;
17pub const MH_ERROR_ALREADY_INITIALIZED: MH_STATUS = 1;
18pub const MH_ERROR_NOT_INITIALIZED: MH_STATUS = 2;
19pub const MH_ERROR_UNABLE_TO_UNINITIALIZE: MH_STATUS = 3;
20pub const MH_ERROR_ALREADY_CREATED: MH_STATUS = 4;
21pub const MH_ERROR_NOT_CREATED: MH_STATUS = 5;
22pub const MH_ERROR_ENABLED: MH_STATUS = 6;
23pub const MH_ERROR_DISABLED: MH_STATUS = 7;
24pub const MH_ERROR_NOT_EXECUTABLE: MH_STATUS = 8;
25pub const MH_ERROR_DETOURS_TRANSACTION_BEGIN: MH_STATUS = 9;
26pub const MH_ERROR_DETOURS_TRANSACTION_COMMIT: MH_STATUS = 10;
27pub const MH_ERROR_UNSUPPORTED_FUNCTION: MH_STATUS = 11;
28pub const MH_ERROR_MEMORY_ALLOC: MH_STATUS = 12;
29pub const MH_ERROR_MODULE_NOT_FOUND: MH_STATUS = 13;
30pub const MH_ERROR_FUNCTION_NOT_FOUND: MH_STATUS = 14;
31pub type MH_STATUS = ::std::os::raw::c_int;
32pub const MH_FREEZE_METHOD_ORIGINAL: MH_THREAD_FREEZE_METHOD = 0;
33pub const MH_FREEZE_METHOD_FAST_UNDOCUMENTED: MH_THREAD_FREEZE_METHOD = 1;
34pub const MH_FREEZE_METHOD_NONE_UNSAFE: MH_THREAD_FREEZE_METHOD = 2;
35pub type MH_THREAD_FREEZE_METHOD = ::std::os::raw::c_int;
36pub type MH_ERROR_CALLBACK =
37 ::std::option::Option<unsafe extern "C" fn(pTarget: LPVOID, detoursResult: HRESULT)>;
38
39#[link(name = "MinHook")]
40unsafe extern "C" {
41 pub fn MH_Initialize() -> MH_STATUS;
42 pub fn MH_Uninitialize() -> MH_STATUS;
43 pub fn MH_SetThreadFreezeMethod(method: MH_THREAD_FREEZE_METHOD) -> MH_STATUS;
44 pub fn MH_SetBulkOperationMode(
45 continueOnError: BOOL,
46 errorCallback: MH_ERROR_CALLBACK,
47 ) -> MH_STATUS;
48 pub fn MH_CreateHook(pTarget: LPVOID, pDetour: LPVOID, ppOriginal: *mut LPVOID) -> MH_STATUS;
49 pub fn MH_CreateHookEx(
50 hookIdent: ULONG_PTR,
51 pTarget: LPVOID,
52 pDetour: LPVOID,
53 ppOriginal: *mut LPVOID,
54 ) -> MH_STATUS;
55 pub fn MH_CreateHookApi(
56 pszModule: LPCWSTR,
57 pszProcName: LPCSTR,
58 pDetour: LPVOID,
59 ppOriginal: *mut LPVOID,
60 ) -> MH_STATUS;
61 pub fn MH_CreateHookApiEx(
62 pszModule: LPCWSTR,
63 pszProcName: LPCSTR,
64 pDetour: LPVOID,
65 ppOriginal: *mut LPVOID,
66 ppTarget: *mut LPVOID,
67 ) -> MH_STATUS;
68 pub fn MH_RemoveHook(pTarget: LPVOID) -> MH_STATUS;
69 pub fn MH_RemoveHookEx(hookIdent: ULONG_PTR, pTarget: LPVOID) -> MH_STATUS;
70 pub fn MH_RemoveDisabledHooks() -> MH_STATUS;
71 pub fn MH_RemoveDisabledHooksEx(hookIdent: ULONG_PTR) -> MH_STATUS;
72 pub fn MH_EnableHook(pTarget: LPVOID) -> MH_STATUS;
73 pub fn MH_EnableHookEx(hookIdent: ULONG_PTR, pTarget: LPVOID) -> MH_STATUS;
74 pub fn MH_DisableHook(pTarget: LPVOID) -> MH_STATUS;
75 pub fn MH_DisableHookEx(hookIdent: ULONG_PTR, pTarget: LPVOID) -> MH_STATUS;
76 pub fn MH_QueueEnableHook(pTarget: LPVOID) -> MH_STATUS;
77 pub fn MH_QueueEnableHookEx(hookIdent: ULONG_PTR, pTarget: LPVOID) -> MH_STATUS;
78 pub fn MH_QueueDisableHook(pTarget: LPVOID) -> MH_STATUS;
79 pub fn MH_QueueDisableHookEx(hookIdent: ULONG_PTR, pTarget: LPVOID) -> MH_STATUS;
80 pub fn MH_ApplyQueued() -> MH_STATUS;
81 pub fn MH_ApplyQueuedEx(hookIdent: ULONG_PTR) -> MH_STATUS;
82 pub fn MH_StatusToString(status: MH_STATUS) -> *const ::std::os::raw::c_char;
83}