zoukankan      html  css  js  c++  java
  • 第三章 内核对象

    (1) 何为内核对象:每个内核对象都只是一个内存块,它由操作系统内核分配,并且只能由操作系统内核访问.内存块是数据结构,成员维护着与对象相关的信息.内核对象的生命周期是可能大于创建它的进程,基数机制,如果有进程使用它计数器+1,使用它的进程终止计数器减1,计数器归0,操作系统自动销毁它(类似于com).

    (2)内核对象的安全性,创建对象的时候有下面这个结构的指针

      typedefine _SECURITY_ATTRIBUTES

      {

        DWORD nLength;

        LPVOID  lpSecurityDescriptor;

        BOOL bInheritHandler;

      }SECURITY_ATTRIBUTES;几乎所有的内核对象创建时候都需要指定SECURITY_ATTRIBUTES。

     (3)进程内核对象句柄表,数据结构的数组,每个数据结构包含内核对象的指针,访问掩码,和一些标志

     (4)确定哪些内核对象未关闭 Process Explorer==>handlers窗格==>选择列==>选中所有标题

      view==>update speed==>pause      F5

     (5)创建内核对象:好像没啥特别说明的

     (6)关闭内核对象:BOOL CloseHandle(HANDLE object);

      (7)跨进程边界共享内核对象

    • 对象句柄继承,父进程创建子进程指出这个对象的句柄是可以继承的,父进程创建子进程会拷贝所有属性为可继承的句柄表。内核对象句柄可以使用Set/GetHandlerInformation设置/获取句柄的继承属性和是否允许关闭句柄
    • 为对象命名 Open*函数不会创建对象,Create*会创建对象,注意所有的内核对象都共享一个命名空间,类型不同也只允许一个叫“what”的内核对象存在。
    • 复制对象句柄DuplicateHandler函数,获一个内存句柄的记录项,然后再另一个进程中创建它的副本。
  • 相关阅读:
    cookie和session
    图书馆里系统前端页面
    图书管理系统后端接口
    Vue组件
    axios前端登录
    django配置跨域并开发测试接口
    axios封装
    初始化vue项目
    model的基础操作
    Windows 系统版本介绍
  • 原文地址:https://www.cnblogs.com/WillingCPP/p/2996997.html
Copyright © 2011-2022 走看看