mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-07 17:51:16 +08:00
52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
// +build windows
|
|
|
|
package windows
|
|
|
|
import (
|
|
"syscall"
|
|
"unsafe"
|
|
)
|
|
|
|
var (
|
|
kernel32 = syscall.NewLazyDLL("kernel32.dll")
|
|
|
|
procCreateToolhelp32Snapshot = kernel32.NewProc("CreateToolhelp32Snapshot")
|
|
procProcess32First = kernel32.NewProc("Process32FirstW")
|
|
procModule32First = kernel32.NewProc("Module32FirstW")
|
|
procCloseHandle = kernel32.NewProc("CloseHandle")
|
|
)
|
|
|
|
func CreateToolhelp32Snapshot(flags, processId uint32) HANDLE {
|
|
ret, _, _ := procCreateToolhelp32Snapshot.Call(
|
|
uintptr(flags),
|
|
uintptr(processId))
|
|
|
|
if ret <= 0 {
|
|
return HANDLE(0)
|
|
}
|
|
|
|
return HANDLE(ret)
|
|
}
|
|
|
|
func Process32First(snapshot HANDLE, pe *PROCESSENTRY32) bool {
|
|
ret, _, _ := procProcess32First.Call(
|
|
uintptr(snapshot),
|
|
uintptr(unsafe.Pointer(pe)))
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func Module32First(snapshot HANDLE, me *MODULEENTRY32) bool {
|
|
ret, _, _ := procModule32First.Call(
|
|
uintptr(snapshot),
|
|
uintptr(unsafe.Pointer(me)))
|
|
|
|
return ret != 0
|
|
}
|
|
|
|
func CloseHandle(object HANDLE) bool {
|
|
ret, _, _ := procCloseHandle.Call(
|
|
uintptr(object))
|
|
return ret != 0
|
|
}
|