mirror of
				https://github.com/xjasonlyu/tun2socks.git
				synced 2025-10-31 12:06:37 +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
 | |
| }
 | 
