1.8.2 无人广角自动监控技术分析
在无人广角自动监控时需要使用进程,进程的创建通过CreateProcess函数来实现,CreateProcess函数通过创建一个新的进程及在其地址空间内运行的主线程来启动并运行一个新的程序。具体在执行CreateProcess函数时,首先由操作系统负责创建一个进程内核对象,初始计数为1,并立即为新进程创建一块虚拟地址空间。随后将可执行文件或其他任何必要的动态链接库文件的代码和数据装载到该地址空间中。在创建主线程时,也是首先由系统负责创建一个线程内核对象,并初始化为1。最后启动主线程并执行进程的入口函数WinMain,完成对进程和执行线程的创建。
CreateProcess函数用于创建一个新进程。
语法:
BOOL CreateProcess(LPCTSTR lpApplicationName,LPTSTR lpCommandLine, |
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 |
为新进程创建一个新的控制台窗口,如果同时设置了 |
|
续表 | |
|
可 选 值 |
描 述 |
|
CREATE_NEW_PROCESS_GROUP |
用于修改进程列表。将进程作为一个新的进程组的根进程。 |
|
CREATE_SEPARATE_WOW_VDM |
指定新的进程在自己的DOS虚拟机(VDM)上运行 |
|
CREATE_SHARED_WOW_VDM |
指定进程使用一个公共的VDM(只针对在Windows |
|
CREATE_SUSPENDED |
导致新进程被创建,但是主线程被挂起。此时父进 |
|
CREATE_UNICODE_ENVIRONMENT |
指出子线程的环境块包含有Unicode字节 |
|
DEBUG_PROCESS |
指出父进程想要调试子进程和子进程将来生成 |
|
DEBUG_ONLY_THIS_PROCESS |
与DEBUG_PROCESS标志类似,但只有最接近 |
|
DETACHED_PROCESS |
用于限制子进程对父进程的访问权限 |
| 回书目 上一节 下一节 |