mirror of
https://github.com/Ed94/Odin.git
synced 2026-06-17 11:22:22 -07:00
Rebase master
This commit is contained in:
@@ -111,12 +111,25 @@ process_list :: proc(allocator: runtime.Allocator) -> ([]int, Error) {
|
||||
return _process_list(allocator)
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Handle to a process.
|
||||
*/
|
||||
Process :: struct {
|
||||
pid: int,
|
||||
handle: uintptr,
|
||||
is_done: b32,
|
||||
signal_mutex: sync.RW_Mutex,
|
||||
handle: _Process_Handle,
|
||||
}
|
||||
|
||||
/*
|
||||
Obtain a process handle.
|
||||
*/
|
||||
process_open :: proc(pid: int) -> (Process, Error) {
|
||||
return _process_open(pid)
|
||||
}
|
||||
|
||||
/*
|
||||
Close a process handle
|
||||
*/
|
||||
process_close :: proc(process: Process) -> (Error) {
|
||||
return _process_close(process)
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ package os2
|
||||
import "core:sys/windows"
|
||||
import "base:runtime"
|
||||
|
||||
_Process_Handle :: windows.HANDLE
|
||||
|
||||
_exit :: proc "contextless" (code: int) -> ! {
|
||||
windows.ExitProcess(u32(code))
|
||||
}
|
||||
@@ -60,3 +62,19 @@ _process_list :: proc(allocator: runtime.Allocator) -> ([]int, Error) {
|
||||
}
|
||||
return pid_list[:], nil
|
||||
}
|
||||
|
||||
_process_open :: proc(pid: int) -> (Process, Error) {
|
||||
handle := windows.OpenProcess(windows.PROCESS_QUERY_LIMITED_INFORMATION, false, cast(u32) pid)
|
||||
if handle == windows.INVALID_HANDLE_VALUE {
|
||||
return {}, _get_platform_error()
|
||||
}
|
||||
return Process {
|
||||
handle = handle,
|
||||
}, nil
|
||||
}
|
||||
|
||||
_process_close :: proc(process: Process) -> (Error) {
|
||||
if !windows.CloseHandle(process.handle) {
|
||||
return _get_platform_error()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user