• Windows进程


    一、Windows进程

      1、进程

       进程是一种容器,包含了应用程序实例的各种资源。

      2、Windows进程的一些特点

       2.1、进程中包含了执行代码等资源

       2.2、进程都具有私有的地址空间

       2.3、每个进程都有一个ID,标识进程

       2.4、每个进程都有自己的安全属性

         2.5、至少要包含一个可以执行的线程

    二、进程的环境

      1、环境信息的获取

       LPVOID GetEnvironmentStrings(VOID);    //返回值是获取到的所有环境信息

      2、释放获取到的所有环境信息

       BOOL FreeEnvironmentStrings(LPSTR lpszEnvironmentBlock);

       例如:LPSTR pszEnv = ( LPSTR )GetEnvironmentStrings( );

          FreeEnvironmentStrings( pszEnv );

      3、环境变量的获取和设置

       获取:DWORD GetEnvironmentVariable(LPCTSTR lpName,      //变量名称

                           LPTSTR lpBuffer,       //数据BUFF

                           DWORD nSize         //BUFF的长度

                           );               //返回值是获取到的字符串的长度

        设置:BOOL SetEnvironmentVariable(LPCTSTR lpName,       //变量名称

                          LPCTSTR lpValue        //变量的值

                         );


    三、进程的信息

      1、进程ID和句柄

        GetCurrentProcessId    获取进程的ID

        GetCurrentProcess       获取进程的句柄,返回值为-1,是当前进程的伪句柄,如果想获得当前进程的实际句柄,需要使用OpenProcess函数

        例如: //获取进程ID

           DWORD nID = GetCurrentProcessId( );
             //获取进程句柄(-1,伪句柄)
           HANDLE hProc = GetCurrentProcess( );

             //根据进程ID获取进程实际句柄

           hProc = OpenProcess( PROCESS_ALL_ACCESS, FALSE, nID );

      2、打开进程

        通过使用进程ID得到进程句柄

        HANDLE OpenProcess(DWORD dwDesireAccess,        //访问模式

                    BOOL bInheritHandle,          //继承标识

                    DWORD dwProcessId          //进程ID

                   );                      //返回进程的句柄

      3、获取进程的所使用的所有模块(EXE或DLL)

        BOOL EnumProcessModules(HANDLE hProcess,        //进程句柄

                       HMODULE* lphModule        //模块的数组

                       DWORD cb,               //数组的长度

                       LPDWORD lpcbNeeded      //获取到数据的字节数

                      );

        

    四 进程的使用
      1 创建进程

       CreateProcess 执行一个EXE可执行文件.创建一个进程以及它的主线程.
       BOOL CreateProcess( LPCTSTR lpApplicationName,              //应用程序路径名
                  LPTSTR lpCommandLine,                  //命令行
                  LPSECURITY_ATTRIBUTES lpProcessAttributes,      //进程安全属性
                  LPSECURITY_ATTRIBUTES lpThreadAttributes,       //线程安全属性
                  BOOL bInheritHandles,                  //句柄继承标识
                  DWORD dwCreationFlags,                 //创建标识
                  LPVOID lpEnvironment,                   //环境块
                  LPCTSTR lpCurrentDirectory,               //当前目录
                  LPSTARTUPINFO lpStartupInfo,              //启动参数  
                  LPPROCESS_INFORMATION lpProcessInformation       //进程信息
                  );
       当进程创建成功,可以从进程信息中获取创建好的进程句柄ID等.

      2 打开进程
       OpenProcess
      3 结束进程
       BOOL TerminateProcess( HANDLE hProcess,                 //进程句柄
                    UINT uExitCode                   //结束代码

                    );                          //返回值非零表示成功,0表示失败
      4 等候进程结束
       DWORD WaitForSingleObject( HANDLE hHandle,               //等候的句柄
                       DWORD dwMilliseconds             //等候的时间,毫秒

                      );
       阻塞函数,当运行时,会在等候的时间的时间内,等待句柄的信号.

  • 相关阅读:
    数列分块入门九题(一):LOJ6277~6279
    Luogu P4211 [LNOI2014]LCA
    Luogu P2279 [HNOI2003]消防局的设立
    Luogu P3177 [HAOI2015]树上染色
    51Nod 1677 treecnt
    CYJian的水题大赛
    51Nod 1299 监狱逃离
    51Nod 1705 七星剑
    51Nod 1443 路径和树
    51Nod 1815 调查任务
  • 原文地址:https://www.cnblogs.com/zjzsky/p/3475435.html
Copyright © 2020-2023  润新知