1.8.2 无人广角自动监控技术分析
在无人广角自动监控时需要使用进程,进程的创建通过CreateProcess函数来实现,CreateProcess函数通过创建一个新的进程及在其地址空间内运行的主线程来启动并运行一个新的程序。具体在执行CreateProcess函数时,首先由操作系统负责创建一个进程内核对象,初始计数为1,并立即为新进程创建一块虚拟地址空间。随后将可执行文件或其他任何必要的动态链接库文件的代码和数据装载到该地址空间中。在创建主线程时,也是首先由系统负责创建一个线程内核对象,并初始化为1。最后启动主线程并执行进程的入口函数WinMain,完成对进程和执行线程的创建。
CreateProcess函数用于创建一个新进程。
语法:
BOOL CreateProcess(LPCTSTR lpApplicationName,LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles,DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory,LPSTARTUPINFO lpStarupInfo, LPPROCESS_INFORMATION lpProcessInformation );
|
CreateProcess函数语法中各参数的说明如表1.5所示。
表1.5 CreateProcess函数语法中的参数说明
|
参 数 |
描 述 |
|
lpCommandLine< xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> |
命令行字符串 |
|
lpProcessAttributes |
进程的安全属性 |
|
lpThreadAttributes |
线程的安全属性 |
|
bInheritHandles |
句柄继承标志 |
|
dwCreationFlags |
创建标志,具体值参照表1.6 |
|
lpEnvironment |
指向新的环境块的指针 |
|
lpCurrentDirectory |
指向当前目录名的指针 |
|
lpStarupInfo |
指向启动STARTUPINFO结构的指针 |
|
lpProcessInformation |
指向PROCERSS_INFORMATION结构的指针 |
表1.6 参数dwCreationFlags具体值
|
可 选 值 |
描 述 |
|
CREATE_DEFAULT_ERROR_MODE |
指定新进程不继承父进程的错误模式,而采用自身的 默认错误模式 |
|
CREATE_NEW_CONSOLE |
为新进程创建一个新的控制台窗口,如果同时设置了 ETACHED_PROCESS标志,将会产生错误 |
|
续表 |
|
可 选 值 |
描 述 |
|
CREATE_NEW_PROCESS_GROUP |
用于修改进程列表。将进程作为一个新的进程组的根进程。 此进程组包括了所有由此根进程继承的进程。新的进 程组标识与返回到pProcess_Information参数中的进程的 标识相同。进程组可以通过GenerateConsoleCtrlEvent 函数来向一组控制台进程发送Ctrl+C和Ctrl+Break通知 |
|
CREATE_SEPARATE_WOW_VDM |
指定新的进程在自己的DOS虚拟机(VDM)上运行 (只针对在Windows NT架构操作系统下运行的16位 应用程序而言)。该标志将占据过多的内存空间, 如果没有必要一般,则不使用此标志 |
|
CREATE_SHARED_WOW_VDM |
指定进程使用一个公共的VDM(只针对在Windows NT架构操作系统下运行的16位应用程序而言) |
|
CREATE_SUSPENDED |
导致新进程被创建,但是主线程被挂起。此时父进 程可以进行修改子进程地址空间中的内存、设置子 进程和主线程的优先级等操作。在父进程修改 子进程后,允许子进程使用ResumeThread函数来 继续执行代码 |
|
CREATE_UNICODE_ENVIRONMENT |
指出子线程的环境块包含有Unicode字节 |
|
DEBUG_PROCESS |
指出父进程想要调试子进程和子进程将来生成 的任何进程。被调试进程中发生的事件,将会 通知给调试程序(通常是父进程) |
|
DEBUG_ONLY_THIS_PROCESS |
与DEBUG_PROCESS标志类似,但只有最接近 调试程序的子进程才会向其报告所发生的事件 |
|
DETACHED_PROCESS |
用于限制子进程对父进程的访问权限 |
【责任编辑:
夏书 TEL:(010)68476606】