OpenThread是Windows API(應用程式接口) 中的一個常用函式,用於打開一個現有執行緒對象。
基本介紹
- 中文名:打開執行緒
- 外文名:OpenThread
- Min client:Windows XP
- Min server:Windows Server 2003
- Library:Kernel32.lib
- DLL:Kernel32.dll
函式功能,函式原型,使用環境,在C# 中的使用,
函式功能
OpenThread是Windows API(應用程式接口) 中的一個常用函式,用於打開一個現有執行緒對象。
函式原型
HANDLE WINAPI OpenThread( _In_ DWORD dwDesiredAccess, _In_ BOOL bInheritHandle, _In_ DWORD dwThreadId );
參數說明:
dwDesiredAccess [in]
執行緒對象的訪問。此訪問許可權檢查執行緒的安全描述符。這個參數可以是一個或多個執行緒訪問許可權。
bInheritHandle [in]
如果這個值是true的,這個進程將繼承該句柄的進程。否則,進程不繼承此句柄。
dwThreadId [in]
要打開的執行緒的標識符。
使用環境
Minimum supported client | WindowsXP [desktop apps only] |
---|---|
Minimum supported server | Windows Server2003 [desktop apps only] |
Header | WinBase.h on WindowsXP, Windows Server2003, WindowsVista, Windows7, Windows Server2008, and Windows Server2008R2 (include Windows.h); Processthreadsapi.h on Windows8 and Windows Server2012 |
Library | Kernel32.lib |
DLL | Kernel32.dll |
在C# 中的使用
1.在C#中聲明:
/// <summary>/// 返回執行緒的句柄(用來打開一個已存在的進程對象,並返回進程的句柄)/// </summary>/// <param name="dwDesiredAccess">訪問執行緒的許可權</param>/// <param name="bInheritHandle">是否繼承句柄</param>/// <param name="dwThreadId">執行緒ID</param>/// <returns></returns>[DllImport("kernel32.dll", EntryPoint = "OpenThread")]private static extern IntPtr OpenThread( ThreadAccess dwDesiredAccess, bool bInheritHandle, uint dwThreadId);
ThreadAccess 定義如下:
[Flags]public enum ThreadAccess{ DELETE = 0x10000, READ_CONTROL = 0x20000, WRITE_DAC = 0x40000, WRITE_OWNER = 0x80000, SYNCHRONIZE = 0x100000, THREAD_DIRECT_IMPERSONATION = 0x200, THREAD_GET_CONTEXT = 0x8, THREAD_IMPERSONATE = 0x100, THREAD_QUERY_INFORMATION = 0x40, THREAD_QUERY_LIMITED_INFORMATION = 0x800, THREAD_SET_CONTEXT = 0x10, THREAD_SET_INFORMATION = 0x20, THREAD_SET_LIMITED_INFORMATION = 0x400, THREAD_SET_THREAD_TOKEN = 0x80, THREAD_SUSPEND_RESUME = 0x2, THREAD_TERMINATE = 0x1, STANDARD_RIGHTS_REQUIRED=0x000F0000, THREAD_ALL_ACCESS = (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3FF)}
2.使用示例:
OpenThread(ThreadAccess.THREAD_ALL_ACCESS,false,100);//100為執行緒ID