Ejemplo 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));
        }
Ejemplo 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());
         }
     }
 }
Ejemplo 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));
        }
Ejemplo n.º 4
0
 public static NativeProcess Open(ProcessAccessMask accessMask, int pid, bool inheritHandle = false)
 {
     return(new NativeProcess(pid, accessMask, inheritHandle));
 }
Ejemplo n.º 5
0
 public static extern SafeWaitHandle OpenProcess(ProcessAccessMask desiredAccess, bool inheritHandle, int processId);
Ejemplo n.º 6
0
 public static extern IntPtr OpenProcess(ProcessAccessMask access, bool inheritHandle, int pid);
Ejemplo n.º 7
0
 public static extern SafeWaitHandle OpenProcess(ProcessAccessMask accessMask, bool inheritHandle, int pid);