mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-05 23:28:48 +00:00
Rebase master
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user