Rebase master

This commit is contained in:
flysand7
2024-07-15 07:27:43 +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) return _process_list(allocator)
} }
/*
Handle to a process.
*/
Process :: struct { Process :: struct {
pid: int, handle: _Process_Handle,
handle: uintptr, }
is_done: b32,
signal_mutex: sync.RW_Mutex, /*
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 "core:sys/windows"
import "base:runtime" import "base:runtime"
_Process_Handle :: windows.HANDLE
_exit :: proc "contextless" (code: int) -> ! { _exit :: proc "contextless" (code: int) -> ! {
windows.ExitProcess(u32(code)) windows.ExitProcess(u32(code))
} }
@@ -60,3 +62,19 @@ _process_list :: proc(allocator: runtime.Allocator) -> ([]int, Error) {
} }
return pid_list[:], nil 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()
}
}