os: fix Process on windows

Alexander Medvednikov 2022-04-15 15:23:05 +03:00 committed by Jef Roosens
parent 0a49e91ed8
commit 18c4a8faa5
Signed by: Jef Roosens
GPG Key ID: B75D4F293C7052DB
1 changed files with 5 additions and 5 deletions

View File

@ -4,13 +4,13 @@ import strings
fn C.GenerateConsoleCtrlEvent(event u32, pgid u32) bool fn C.GenerateConsoleCtrlEvent(event u32, pgid u32) bool
fn C.GetModuleHandleA(name &char) HMODULE fn C.GetModuleHandleA(name &char) HMODULE
fn C.GetProcAddress(handle voidptr, procname &byte) voidptr fn C.GetProcAddress(handle voidptr, procname &u8) voidptr
fn C.TerminateProcess(process HANDLE, exit_code u32) bool fn C.TerminateProcess(process HANDLE, exit_code u32) bool
fn C.PeekNamedPipe(hNamedPipe voidptr, lpBuffer voidptr, nBufferSize int, lpBytesRead voidptr, lpTotalBytesAvail voidptr, lpBytesLeftThisMessage voidptr) bool fn C.PeekNamedPipe(hNamedPipe voidptr, lpBuffer voidptr, nBufferSize int, lpBytesRead voidptr, lpTotalBytesAvail voidptr, lpBytesLeftThisMessage voidptr) bool
type FN_NTSuspendResume = fn (voidptr) type FN_NTSuspendResume = fn (voidptr)
fn ntdll_fn(name &char) FN_NTSuspendResume { fn ntdll_fn(name &byte) FN_NTSuspendResume {
ntdll := C.GetModuleHandleA(c'NTDLL') ntdll := C.GetModuleHandleA(c'NTDLL')
if ntdll == 0 { if ntdll == 0 {
return FN_NTSuspendResume(0) return FN_NTSuspendResume(0)
@ -47,7 +47,7 @@ fn close_valid_handle(p voidptr) {
pub struct WProcess { pub struct WProcess {
pub mut: pub mut:
proc_info ProcessInformation proc_info ProcessInformation
command_line [65536]byte command_line [65536]u8
child_stdin &u32 child_stdin &u32
// //
child_stdout_read &u32 child_stdout_read &u32
@ -198,7 +198,7 @@ fn (mut p Process) win_read_string(idx int, maxbytes int) (string, int) {
} }
mut bytes_read := int(0) mut bytes_read := int(0)
buf := []byte{len: bytes_avail + 300} buf := []u8{len: bytes_avail + 300}
unsafe { unsafe {
C.ReadFile(rhandle, &buf[0], buf.cap, voidptr(&bytes_read), 0) C.ReadFile(rhandle, &buf[0], buf.cap, voidptr(&bytes_read), 0)
} }
@ -221,7 +221,7 @@ fn (mut p Process) win_slurp(idx int) string {
return '' return ''
} }
mut bytes_read := u32(0) mut bytes_read := u32(0)
buf := [4096]byte{} buf := [4096]u8{}
mut read_data := strings.new_builder(1024) mut read_data := strings.new_builder(1024)
for { for {
mut result := false mut result := false