Rebase master

This commit is contained in:
flysand7
2024-07-10 05:29:41 +11:00
parent 6fab055f43
commit 56d55e4a86
2 changed files with 36 additions and 5 deletions
+18 -5
View File
@@ -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)
}
+18
View File
@@ -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()
}
}