用vc++穷举windows应用程序密码(上)
2009-04-09 20:04:20 来源:WEB开发网在一个进程中运行着一个或多个线程,线程是操作系统分配处理器时间片的最小单位,一个线程可以执行进程中的任何一部分代码,包括当前被其他线程执行的部分。线程能独立执行程序代码的任何部分,共享虚拟地址空间并能访问全局变量和进程系统资源。各个线程根据其调度优先级分配CPU,线程具有进程的许多特征,又称为轻量级的进程。由于线程基本上不拥有系统资源,仅占有一点在运行中不可缺少的资源(机器寄存器、内核堆栈、线程环境块和用户堆栈等),由于应用程序由进程组成,进程由线程组成。同一进程线程的切换不会引起进程的切换,因此,线程的调度开销要远远小于进程的调度开销。
在MFC类库中,每个CWinThread对象表示程序的一个执行线程,MFC 将线程分为两种类型:用户界面线程(user-interface thread)和工作者线程(worker thread),前者用于消息循环或消息泵,用于消息处理。后者没有消息循环用于无需用户响应的后台任务。
工作者线程分两步创建:
1.创建线程函数
DWORD WINAPI ThreadFunc( LPVOID );
参数值是在创建线程对象时传递给构造函数的值,它既可为标量值,也可以为指向多个参数结构的指针,还可以省略。
2.调用AfxBeginThread启动工作者线程。此时,全局函数AfxBeginThread采用以下原型: CWinThread * AfxBeginThread(
AFX_THREADPROC pfnThreadProc ,
LPVOID pParam,
int nPriority=THREAD_PRIORITY_NORMAL,
UINT nStackSize=0,
DWORD dwCreateFlags=0,
LPSECURITY_ATTRIBUTES lpsecurityAttrs=NULL);
其中:pfnThreadProc 即为工作者线程的线程函数。
更多精彩
赞助商链接