11#ifndef TOR_PROCESS_WIN32_H
12#define TOR_PROCESS_WIN32_H
24struct process_win32_t;
25typedef struct process_win32_t process_win32_t;
27process_win32_t *process_win32_new(
void);
28void process_win32_free_(process_win32_t *win32_process);
29#define process_win32_free(s) \
30 FREE_AND_NULL(process_win32_t, process_win32_free_, (s))
32void process_win32_init(
void);
33void process_win32_deinit(
void);
36bool process_win32_terminate(
struct process_t *process);
38process_pid_t process_win32_get_pid(
struct process_t *process);
40int process_win32_write(
struct process_t *process, buf_t *buffer);
41int process_win32_read_stdout(
struct process_t *process, buf_t *buffer);
42int process_win32_read_stderr(
struct process_t *process, buf_t *buffer);
44void process_win32_trigger_completion_callbacks(
void);
47void process_win32_timer_start(
void);
48void process_win32_timer_stop(
void);
49bool process_win32_timer_running(
void);
51#ifdef PROCESS_WIN32_PRIVATE
56struct process_win32_handle_t;
57typedef struct process_win32_handle_t process_win32_handle_t;
59typedef enum process_win32_pipe_type_t {
61 PROCESS_WIN32_PIPE_TYPE_READER,
64 PROCESS_WIN32_PIPE_TYPE_WRITER
65} process_win32_pipe_type_t;
67STATIC bool process_win32_create_pipe(HANDLE *,
69 SECURITY_ATTRIBUTES *,
70 process_win32_pipe_type_t);
72STATIC void process_win32_cleanup_handle(process_win32_handle_t *handle);
74STATIC VOID WINAPI process_win32_stdout_read_done(DWORD,
77STATIC VOID WINAPI process_win32_stderr_read_done(DWORD,
80STATIC VOID WINAPI process_win32_stdin_write_done(DWORD,
84STATIC int process_win32_read_from_handle(process_win32_handle_t *,
86 LPOVERLAPPED_COMPLETION_ROUTINE);
87STATIC bool process_win32_handle_read_completion(process_win32_handle_t *,
91STATIC char *format_win_cmdline_argument(
const char *arg);
92STATIC char *tor_join_win_cmdline(
const char *argv[]);
Header for compat_libevent.c.
Headers for util_malloc.c.