Esempio n. 1
0
        public static NativeProcess TryOpen(ProcessAccessMask accessMask, int pid, bool inheritHandle = false)
        {
            var handle = OpenProcess(accessMask, inheritHandle, pid);

            if (handle == null || handle.IsInvalid)
            {
                return(null);
            }

            return(new NativeProcess(handle));
        }
Esempio n. 2
0
 private NativeProcess(int pid, ProcessAccessMask accessMask = ProcessAccessMask.QueryLimitedInformation, bool inheritHandle = false)
 {
     _id = pid;
     if (pid > 0)
     {
         SafeWaitHandle = OpenProcess(accessMask, inheritHandle, pid);
         if (SafeWaitHandle.IsInvalid)
         {
             throw new Win32Exception(Marshal.GetLastWin32Error());
         }
     }
 }
Esempio n. 3
0
        public unsafe SafeWaitHandle OpenProcessHandle(ProcessAccessMask accessMask, int pid)
        {
            var data = new OpenProcessData {
                ProcessId  = pid,
                AccessMask = accessMask
            };

            if (!DeviceIoControl(_hDevice, KExploreOpenProcessHandle, &data, Marshal.SizeOf <OpenProcessData>(), out IntPtr handle, IntPtr.Size, out var returned))
            {
                return(null);
            }

            return(new SafeWaitHandle(handle, true));
        }
Esempio n. 4
0
 public static NativeProcess Open(ProcessAccessMask accessMask, int pid, bool inheritHandle = false)
 {
     return(new NativeProcess(pid, accessMask, inheritHandle));
 }
Esempio n. 5
0
 public static extern SafeWaitHandle OpenProcess(ProcessAccessMask desiredAccess, bool inheritHandle, int processId);
Esempio n. 6
0
 public static extern IntPtr OpenProcess(ProcessAccessMask access, bool inheritHandle, int pid);
Esempio n. 7
0
 public static extern SafeWaitHandle OpenProcess(ProcessAccessMask accessMask, bool inheritHandle, int pid);