----------------------------------------------------------------------------------------------
获取线程进程与其ID
HANDLE GetCurrentProcess();
HANDLE GetCurrentThread();
DWORD GetCurrentProcessId();
DWORD GetCurrentThreadId();
----------------------------------------------------------------------------------------------
获取线程时间
BOOL GetThreadTimes(HANDLE hThread,PFILETIME pftCreationTime, PFILETIME pftExitTime,PFILETIME pftKernelTime, PFILETIME pftUserTime);
HANDLE hThread: 线程句柄
PFILETIME pftCreationTime: 线程创建的时间
PFILETIME pftExitTime: 线程退出的时间
PFILETIME pftKernelTime: 线程执行操作系统代码已经经过了多少个100ns的CPU时间
PFILETIME pftUserTime: 线程执行应用程序代码已经经过了多少个100ns的CPU时间
----------------------------------------------------------------------------------------------
等待函数
DWORD WaitForSingleObject(HANDLE hObject,DWORD dwMilliseconds);
HANDLE hObject: 标识一个能够支持被通知/未通知的内核对象
DWORD dwMilliseconds: 等待该对象变为已通知状态,它将等待多长时间
等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。WaitForSingleObject的返回值有 WAIT_TIMEOUT,WAIT_FAILED,WAIT_OBJECT_0
DWORD WaitForMultipleObjects(DWORD dwCount,CONST HANDLE* phObjects,BOOL fWaitAll,DWORD dwMilliseconds);
DWORD dwCount: 想要让函数查看的内核对象的数量
CONST HANDLE* phObjects: 指向内核对象句柄的数组的指针
BOOL fWaitAll: 如果为该参数传递TRUE,那么在所有对象变为已通知状态之前,该函数将不允许调用线程运行
DWORD dwMilliseconds: 等待该对象变为已通知状态,它将等待多长时间
WaitForMultipleObjects与WaitForSingleObject函数很相似,区别在于它允许调用线程同时查看若干个内核对象的已通知状态。
WaitForMultipleObjects的返回值有 WAIT_TIMEOUT,WAIT_FAILED,WAIT_OBJECT_0+0 ... WAIT_OBJECT_0+N
----------------------------------------------------------------------------------------------
事件内核对象
HANDLE CreateEvent(PSECURITY_ATTRIBUTES psa,BOOL fManualReset,BOOL fInitialState,PCTSTR pszName);
PSECURITY_ATTRIBUTES psa: 当psa为NULL表示使用默认安全属性
BOOL fManualReset: 告诉系统是创建一个人工重置的事件(TRUE)还是创建一个自动重置的事件(FALSE)。
BOOL fInitialState: 指明该事件是要初始化为已通知状态(TRUE)还是未通知状态(FALSE)。
PCTSTR pszName: 事件的名称
返回值:当系统创建事件对象后,CreateEvent就将与进程相关的句柄返回给事件对象
当系统创建事件对象后,CreateEvent就将与进程相关的句柄返回给事件对象。其他进程中的线程可以获得对该对象的访问权,方法是使用在pszName参数中传递的相同值,
使用继承性,使用DuplicateHandle函数等来调用CreateEvent,或者调用OpenEvent,在pszName参数中设定一个与调用CreateEvent时设定的名字相匹配的名字
HANDLE OpenEvent(DWORD fdwAccess,BOOL fInherit,PCTSTR pszName);
DWORD fdwAccess:
BOOL fInherit:
PCTSTR pszName:
返回值: 返回事件的句柄
打开事件
BOOL SetEvent(HANDLE hEvent);
当调用SetEvent时,可以将事件改为已通知状态。
BOOL ResetEvent(HANDLE hEvent);
当调用ResetEvent函数时,可以将该事件改为未通知状态。
获取线程进程与其ID
HANDLE GetCurrentProcess();
HANDLE GetCurrentThread();
DWORD GetCurrentProcessId();
DWORD GetCurrentThreadId();
----------------------------------------------------------------------------------------------
获取线程时间
BOOL GetThreadTimes(HANDLE hThread,PFILETIME pftCreationTime, PFILETIME pftExitTime,PFILETIME pftKernelTime, PFILETIME pftUserTime);
HANDLE hThread: 线程句柄
PFILETIME pftCreationTime: 线程创建的时间
PFILETIME pftExitTime: 线程退出的时间
PFILETIME pftKernelTime: 线程执行操作系统代码已经经过了多少个100ns的CPU时间
PFILETIME pftUserTime: 线程执行应用程序代码已经经过了多少个100ns的CPU时间
----------------------------------------------------------------------------------------------
等待函数
DWORD WaitForSingleObject(HANDLE hObject,DWORD dwMilliseconds);
HANDLE hObject: 标识一个能够支持被通知/未通知的内核对象
DWORD dwMilliseconds: 等待该对象变为已通知状态,它将等待多长时间
等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止。WaitForSingleObject的返回值有 WAIT_TIMEOUT,WAIT_FAILED,WAIT_OBJECT_0
DWORD WaitForMultipleObjects(DWORD dwCount,CONST HANDLE* phObjects,BOOL fWaitAll,DWORD dwMilliseconds);
DWORD dwCount: 想要让函数查看的内核对象的数量
CONST HANDLE* phObjects: 指向内核对象句柄的数组的指针
BOOL fWaitAll: 如果为该参数传递TRUE,那么在所有对象变为已通知状态之前,该函数将不允许调用线程运行
DWORD dwMilliseconds: 等待该对象变为已通知状态,它将等待多长时间
WaitForMultipleObjects与WaitForSingleObject函数很相似,区别在于它允许调用线程同时查看若干个内核对象的已通知状态。
WaitForMultipleObjects的返回值有 WAIT_TIMEOUT,WAIT_FAILED,WAIT_OBJECT_0+0 ... WAIT_OBJECT_0+N
----------------------------------------------------------------------------------------------
事件内核对象
HANDLE CreateEvent(PSECURITY_ATTRIBUTES psa,BOOL fManualReset,BOOL fInitialState,PCTSTR pszName);
PSECURITY_ATTRIBUTES psa: 当psa为NULL表示使用默认安全属性
BOOL fManualReset: 告诉系统是创建一个人工重置的事件(TRUE)还是创建一个自动重置的事件(FALSE)。
BOOL fInitialState: 指明该事件是要初始化为已通知状态(TRUE)还是未通知状态(FALSE)。
PCTSTR pszName: 事件的名称
返回值:当系统创建事件对象后,CreateEvent就将与进程相关的句柄返回给事件对象
当系统创建事件对象后,CreateEvent就将与进程相关的句柄返回给事件对象。其他进程中的线程可以获得对该对象的访问权,方法是使用在pszName参数中传递的相同值,
使用继承性,使用DuplicateHandle函数等来调用CreateEvent,或者调用OpenEvent,在pszName参数中设定一个与调用CreateEvent时设定的名字相匹配的名字
HANDLE OpenEvent(DWORD fdwAccess,BOOL fInherit,PCTSTR pszName);
DWORD fdwAccess:
BOOL fInherit:
PCTSTR pszName:
返回值: 返回事件的句柄
打开事件
BOOL SetEvent(HANDLE hEvent);
当调用SetEvent时,可以将事件改为已通知状态。
BOOL ResetEvent(HANDLE hEvent);
当调用ResetEvent函数时,可以将该事件改为未通知状态。