当前位置: 首页 > news >正文

精美公司网站源码wordpress生成推广链接地址

精美公司网站源码,wordpress生成推广链接地址,wordpress怎么使用新浪ajax,国内最近重大新闻2024二叉树中创建一个MEMORY_AREA节点: 二叉树中创建一个MEMORY_AREA节点: MmCreateMemoryArea() 参数AddressSpace是MADDRESS SPACE结构指针,所指向的数据结构代表着一个进程的用 户空间。 参数BaseAddress是个指针,用来给定和返回内…

二叉树中创建一个MEMORY_AREA节点:

二叉树中创建一个MEMORY_AREA节点:
MmCreateMemoryArea()
参数AddressSpace是MADDRESS SPACE结构指针,所指向的数据结构代表着一个进程的用 户空间。
参数BaseAddress是个指针,用来给定和返回内存区块的基地址

文章目录

  • 二叉树中创建一个MEMORY_AREA节点:
  • MmCreateMemoryArea()


MmCreateMemoryArea()


/*** @name MmCreateMemoryArea** Create a memory area.** @param AddressSpace*        Address space to create the area in.* @param Type*        Type of the memory area.* @param BaseAddress*        Base address for the memory area we're about the create. On*        input it contains either 0 (auto-assign address) or preferred*        address. On output it contains the starting address of the*        newly created area.* @param Length*        Length of the area to allocate.* @param Attributes*        Protection attributes for the memory area.* @param Result*        Receives a pointer to the memory area on successful exit.** @return Status** @remarks Lock the address space before calling this function.*/NTSTATUS STDCALL
MmCreateMemoryArea(PMADDRESS_SPACE AddressSpace,ULONG Type,PVOID *BaseAddress,ULONG_PTR Length,ULONG Protect,PMEMORY_AREA *Result,BOOLEAN FixedAddress,ULONG AllocationFlags,PHYSICAL_ADDRESS BoundaryAddressMultiple)
{PVOID EndAddress;ULONG Granularity;ULONG tmpLength;PMEMORY_AREA MemoryArea;DPRINT("MmCreateMemoryArea(Type %d, BaseAddress %p, ""*BaseAddress %p, Length %p, AllocationFlags %x, ""FixedAddress %x, Result %p)\n",Type, BaseAddress, *BaseAddress, Length, AllocationFlags,FixedAddress, Result);MmVerifyMemoryAreas(AddressSpace);//检测该AVL树是否存在问题//根据Type选择相应的粒度Granularity = (MEMORY_AREA_VIRTUAL_MEMORY == Type ? MM_VIRTMEM_GRANULARITY : PAGE_SIZE);//if 用户不要求从固定地址处开始分配if ((*BaseAddress) == 0 && !FixedAddress){//不受给定地址的约束,只要找到一个够大的空隙即可tmpLength = PAGE_ROUND_UP(Length);//根据用户空间找到一块符合的Area,并返回其首地址*BaseAddress = MmFindGap(AddressSpace,tmpLength,Granularity,(AllocationFlags & MEM_TOP_DOWN) == MEM_TOP_DOWN);if ((*BaseAddress) == 0){DPRINT("No suitable gap\n");return STATUS_NO_MEMORY;}}else//用户给定了基址,就必须从那儿开始分配{tmpLength = Length + ((ULONG_PTR) *BaseAddress- (ULONG_PTR) MM_ROUND_DOWN(*BaseAddress, Granularity));*BaseAddress = MM_ROUND_DOWN(*BaseAddress, Granularity);if (AddressSpace->LowestAddress == MmSystemRangeStart &&*BaseAddress < MmSystemRangeStart){//给定的空间为系统空间,但是地址落在用户空间,严重错误CHECKPOINT;CHECKPOINT;return STATUS_ACCESS_VIOLATION;}if (AddressSpace->LowestAddress < MmSystemRangeStart &&(ULONG_PTR)(*BaseAddress) + tmpLength > (ULONG_PTR)MmSystemRangeStart){//所要求的区间跨越用户空间和系统空间的分界,严重错误CHECKPOINT;CHECKPOINT;return STATUS_ACCESS_VIOLATION;}//测试要分配的区域完全落在指定地址空间内部if (BoundaryAddressMultiple.QuadPart != 0){EndAddress = ((char*)(*BaseAddress)) + tmpLength-1;ASSERT(((ULONG_PTR)*BaseAddress/BoundaryAddressMultiple.QuadPart) == ((DWORD_PTR)EndAddress/BoundaryAddressMultiple.QuadPart));}//确认所要求的区间尚术分配if (MmLocateMemoryAreaByRegion(AddressSpace,*BaseAddress,tmpLength) != NULL){//所要求的区间已经分配,失敗DPRINT("Memory area already occupied\n");return STATUS_CONFLICTING_ADDRESSES;}}//创建MEMORY AREA节点,把这块区域分配出去MemoryArea = ExAllocatePoolWithTag(NonPagedPool, sizeof(MEMORY_AREA),TAG_MAREA);RtlZeroMemory(MemoryArea, sizeof(MEMORY_AREA));MemoryArea->Type = Type;MemoryArea->StartingAddress = *BaseAddress;MemoryArea->EndingAddress = (PVOID)((ULONG_PTR)*BaseAddress + tmpLength);MemoryArea->Protect = Protect;MemoryArea->Flags = AllocationFlags;//MemoryArea->LockCount = 0;MemoryArea->PageOpCount = 0;MemoryArea->DeleteInProgress = FALSE;//将所创建节点插入一又树MmInsertMemoryArea(AddressSpace, MemoryArea);*Result = MemoryArea;DPRINT("MmCreateMemoryArea() succeeded (%p)\n", *BaseAddress);return STATUS_SUCCESS;
}

//二叉树中创建-个MEMORY AREA节点
/*
参数AddressSpace是MADDRESS SPACE结构指针,所指向的数据结构代表着一个进程的用 户空间。
参数BaseAddress是个指针,用来给定和返回内存区块的基地址 :
参数Length、Protect的意义 则不言自明。
参数FixedAddress为TRUE说明给定的地址不容改变,为FALSE则表示若不能满足 要求也可以浮动, 。
参数AllocationFlags : 分配标志TopDown ? TopUp
参数BoundaryAddressMultiple此分配不得跨越的物理地址倍数
*/

http://www.yayakq.cn/news/667346/

相关文章:

  • 企业网络营销网站交城有做网站的吗
  • 用什么手机软件做网站外贸网站制作需求
  • h5长图模板上海网站排名优化怎么做
  • 免费看各大网站的软件毕业设计资源网站
  • 像美团这种网站怎么做的一个空间能放几个网站
  • 莆田有哪几家做网站设计做队徽的网站
  • 网站维护提示代码麦包包网站建设的特点
  • 网站建设实验的建议和看法资阳大众网app下载
  • 网站关键词库文交所网站建设方案
  • 张家口北京网站建设一站式网站建设比较好
  • 网站建设帮助中心电脑有固定IP 做网站
  • 锡林浩特网站建设微信开发开发公司保障员工安全的措施
  • 呼和浩特电子商务网站建设自适应网站模板公司
  • 如何免费搭建自己的网站做网站时怎么更改区域内的图片
  • 给自己的网站做镜像网站建设网站的整个费用预算
  • 城建亚泰建设集团网站网页制作的公司多少收入
  • 网站空间支持什么程序wordpress支持伪静态
  • 广州开发网站技术制作小程序公司
  • 网站空间 控制面板门户网站建设经验交流
  • 建交互网站需要多少钱平面广告设计培训学校
  • 咋做抽奖网站河南网站建设报价
  • 网站制作费用入什么科目有没有做维修的网站
  • 上海定制化网站开发杭州网站运营十年乐云seo
  • 众筹网站搭建大一网页设计作业成品
  • 广州做网站优化个人网站搭建详细步骤
  • 手机网站一年维护费deals网站建设
  • 兴化网站网站建设免费网线
  • 如何做自己的游戏网站网络销售技巧
  • 个人域名备案完成了 可以改网站内容吗做出口网站
  • 班级网站建设html制作网站开发 加密保护