X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fio-layer%2Fprocesses.c;h=ce7aee14c884732d669200fc8bcbc3a2599d718b;hb=24748ce981a554c4a8f9529e5848a88c743a1901;hp=913a08570a4706be089a033700e4e79c98011e03;hpb=8d5eb9ec60df30a100001d87cd477ce8d908c134;p=mono.git diff --git a/mono/io-layer/processes.c b/mono/io-layer/processes.c index 913a08570a4..ce7aee14c88 100644 --- a/mono/io-layer/processes.c +++ b/mono/io-layer/processes.c @@ -90,6 +90,7 @@ #include #include #include +#include /* The process' environment strings */ #if defined(__APPLE__) && !defined (__arm__) && !defined (__aarch64__) @@ -1309,11 +1310,19 @@ GetProcessTimes (gpointer process, WapiFileTime *create_time, /* Not sure if w32 allows NULLs here or not */ return FALSE; - if (WAPI_IS_PSEUDO_PROCESS_HANDLE (process)) - /* This is a pseudo handle, so just fail for now - */ - return FALSE; - + if (WAPI_IS_PSEUDO_PROCESS_HANDLE (process)) { + gpointer pid = GINT_TO_POINTER (WAPI_HANDLE_TO_PID(process)); + gint64 start_ticks, user_ticks, kernel_ticks; + + mono_process_get_times (pid, &start_ticks, &user_ticks, &kernel_ticks); + + _wapi_guint64_to_filetime (start_ticks, create_time); + _wapi_guint64_to_filetime (user_ticks, kernel_time); + _wapi_guint64_to_filetime (kernel_ticks, user_time); + + return TRUE; + } + process_handle = lookup_process_handle (process); if (!process_handle) { DEBUG ("%s: Can't find process %p", __func__, process);