OpenThread(Windows API中的函式)

OpenThread(Windows API中的函式)

本詞條是多義詞,共2個義項
更多義項 ▼ 收起列表 ▲

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

相關詞條

熱門詞條

聯絡我們