MmMapLockedPagesSpecifyCache

MmMapLockedPagesSpecifyCache
  函数介绍:
  这个函数是专门为2000之后的windows版本设计的,在2000或者98甚至更早版本中,用的是函数:MmMapLockedPages
  函数原型:
  NTKERNELAPI PVOID
   MmMapLockedPagesSpecifyCache(
   IN PMDL MemoryDescriptorList,
   IN KPROCESSOR_MODE AccessMode,
   IN MEMORY_CACHING_TYPE CacheType,
   IN PVOID BaseAddress,
   IN ULONG BugCheckOnFailure,
   IN MM_PAGE_PRIORITY Priority );

  函数参数介绍:
   PMDL MemoryDescriptorList :这是一个MDL(Memory Descriptor List)结构体指针,用函数IoAllocateMdl得到这个值 。
  KPROCESSOR_MODE AccessMode :这是一个程序的运行模式,即用户模式,和内核模式;对于驱动程序,设置成,KernelMode 。用户模式为UserMode;
  MEMORY_CACHING_TYPE CacheType :这指定了一个MEMORY_CACHING_TYPE类型的值,表明允许这个MDL使用的缓冲区的类型
  PVOID BaseAddress:如果AccessMode为UserMode,这个参数指定了要把这个MDL映射到用户模式中的起始地址;如果设置成NULL,那么将由系统自行选择。系统可能由于边界条件限制,会把这个值改成更合适的值,所以要检查返回值。这是MSDN上的说法,我的建议是直接设置成NULL。
  ULONG BugCheckOnFailure:申明对错误的处理,设置成TRUE 的话,那么会弹出一个错误检查;如果设置成FALSE,那么直接返回NULL。驱动必须设置成NULL。
  MM_PAGE_PRIORITY Priority:(MSDN翻译)表明当PTEs稀有的时候,成功的重要性。要获取这个值的枚举值,请查MmGetSystemAddressForMdlSafe.大概的意思是,当系统资源紧缺的时候,你对这个函数成功与否的要求高不高,如果高的话设置成HighPagePriority;本人建议设置成NormalPagePriority
  返回值:
  成功的话返回起始地址,失败返回NULL;建议:
  ·要取消映射用函数MmUnmapLockedPages。

  ·当为KernelMode模式的时候,如果函数失败,见参数BugCheckOnFailure
  ·当为UserMode模式的时候,如果函数失败,本函数会抛出一个异常,请用try/catch进行捕捉。
  头文件:
  Declared in ntddk.h. Include ntddk.h.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值