/// <summary> /// Opens an existing thread object. /// </summary> /// <param name="access"></param> /// <param name="inheritHandle"></param> /// <param name="threadId"></param> /// <returns></returns> public static IntPtr OpenThread(ThreadAccessFlags access, bool inheritHandle, uint threadId) { IntPtr handle = UnmanagedOpenThread(access, inheritHandle, threadId); if (handle == null) { throw new Win32Exception(); } return handle; }
public static Handle OpenThread(ThreadAccessFlags desiredAccess, uint threadID) { IntPtr res = WINAPI.OpenThread(desiredAccess, false, threadID); if (res == null) { throw new OpenThreadException("Getting a handle with " + desiredAccess + " access for the thread with the id " + threadID + " has failed with errorcode" + Marshal.GetLastWin32Error()); } return(new Handle(res)); }
public static SafeMemoryHandle OpenThread(ThreadAccessFlags accessFlags, int threadId) { var handle = NativeMethods.OpenThread(accessFlags, false, threadId); if (handle.IsInvalid || handle.IsClosed) { throw new Win32Exception(); } return(handle); }
/// <summary> /// Opens an existing thread object. /// </summary> /// <param name="access"></param> /// <param name="inheritHandle"></param> /// <param name="threadId"></param> /// <returns></returns> public static IntPtr OpenThread(ThreadAccessFlags access, bool inheritHandle, uint threadId) { IntPtr handle = UnmanagedOpenThread(access, inheritHandle, threadId); if (handle == null) { throw new Win32Exception(); } return(handle); }
/// <summary> /// Opens an existing thread object. /// </summary> /// <param name="accessFlags">The access to the thread object.</param> /// <param name="threadId">The identifier of the thread to be opened.</param> /// <returns>An open handle to the specified thread.</returns> public static SafeMemoryHandle OpenThread(ThreadAccessFlags accessFlags, int threadId) { // Open the thread var ret = NativeMethods.OpenThread(accessFlags, false, threadId); // If the thread was opened if (!ret.IsClosed && !ret.IsInvalid) { return(ret); } // Else couldn't open the thread, throws an exception throw new Win32Exception($"Couldn't open the thread #{threadId}."); }
private bool TryOpenMainThread(ThreadAccessFlags threadAccess) { try { ProcessThread processThread = GetMainThread(); if (processThread != null) { MainThreadHandle = OpenThread(threadAccess, false, (uint)processThread.Id); } } catch { } return(MainThreadHandle != IntPtr.Zero); }
public static extern SafeMemoryHandle OpenThread(ThreadAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, int dwThreadId);
/// <summary> /// Opens an existing thread object. /// </summary> /// <param name="accessFlags">The access to the thread object.</param> /// <param name="threadId">The identifier of the thread to be opened.</param> /// <returns>An open handle to the specified thread.</returns> public static SafeMemoryHandle OpenThread(ThreadAccessFlags accessFlags, int threadId) { // Open the thread var ret = NativeMethods.OpenThread(accessFlags, false, threadId); // If the thread was opened if (!ret.IsClosed && !ret.IsInvalid) return ret; // Else couldn't open the thread, throws an exception throw new Win32Exception($"Couldn't open the thread #{threadId}."); }
public static extern IntPtr OpenThread(ThreadAccessFlags dwDesiredAccess, bool bInheritHandle, int dwThreadId);
private static extern IntPtr OpenThread( ThreadAccessFlags flags, bool bInheritHandle, uint threadId);
public static extern IntPtr OpenThread( ThreadAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, uint dwThreadId);
private static extern IntPtr UnmanagedOpenThread(ThreadAccessFlags dwDesiredAccess, bool bInheritHandle, uint dwThreadId);
internal static extern IntPtr OpenThread(ThreadAccessFlags threadAccess, bool inheritHandle, uint threadId);
public static extern SafeMemoryHandle OpenThread(ThreadAccessFlags dwDesiredAccess, bool bInheritHandle, int dwThreadId);