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