Skip to main content

minhook_detours_sys/
lib.rs

1//! MinHook Detours bindings generated with `bindgen`.
2#![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}