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

nt!CcMapData函数分析之Loop to touch each page触发nt!MmAccessFault函数----NTFS源代码分析之四

返回到这里:

    if ((TempVacb = GetVacb( SharedCacheMap, FileOffset )) == NULL) {

        TempVacb = CcGetVacbMiss( SharedCacheMap, FileOffset, &OldIrql );

    }
返回到这里:

    ASSERT( TempVacb->BaseAddress != NULL );

    return (PVOID)((PCHAR)TempVacb->BaseAddress + VacbOffset);
}

0: kd> p
nt!CcGetVirtualAddress+0x197:
80a1aa17 c9              leave
0: kd> p
nt!CcGetVirtualAddress+0x198:
80a1aa18 c21400          ret     14h
0: kd> r
eax=c14c0000

            //
            //  Loop to touch each page        关键代码:
            //

            BeyondLastByte.LowPart = 0;

            while (PageCount != 0) {

                MmSetPageFaultReadAhead( Thread, PageCount - 1 );

                ch = *((volatile UCHAR *)(*Buffer) + BeyondLastByte.LowPart);

                BeyondLastByte.LowPart += PAGE_SIZE;
                PageCount -= 1;
            }


80bf989a 8b09            mov     ecx,dword ptr [ecx]
0: kd> p
nt!CcMapData+0x134:
80bf989c 8b55c0          mov     edx,dword ptr [ebp-40h]
0: kd> p
Breakpoint 8 hit
nt!CcMapData+0x137:
80bf989f 8a0c0a          mov     cl,byte ptr [edx+ecx]
0: kd> p
Breakpoint 3 hit
nt!MmAccessFault:
80abcfda 55              push    ebp
0: kd> kc
 #
00 nt!MmAccessFault
01 nt!_KiTrap0E
02 nt!CcMapData
03 Ntfs!NtfsMapStream
04 Ntfs!ReadIndexBuffer
05 Ntfs!FindFirstIndexEntry
06 Ntfs!NtfsUpdateFileNameInIndex
07 Ntfs!NtfsUpdateDuplicateInfo
08 Ntfs!NtfsInitializeSecurity
09 Ntfs!NtfsInitializeSecurityFile
0a Ntfs!NtfsMountVolume
0b Ntfs!NtfsCommonFileSystemControl
0c Ntfs!NtfsFspDispatch
0d nt!ExpWorkerThread
0e nt!PspSystemThreadStartup
0f nt!KiThreadStartup

0: kd> dv
    FaultStatus = 0
 VirtualAddress = 0xc14c0000
   PreviousMode = 0n0 ''
TrapInformation = 0xf78d6654

http://www.xdnf.cn/news/12098.html

相关文章:

  • 中国西部逐日1 km全天候地表温度数据集(TRIMS LST-TP;2000-2024)
  • npm run dev 报错:Error: error:0308010C:digital envelope routines::unsupported
  • UDP:简洁高效的报文结构解析与关键注意事项
  • std::conditional_t一个用法
  • [10-2]MPU6050简介 江协科技学习笔记(22个知识点)
  • MVCC机制:Undo Log版本链与ReadView机制
  • Python Excel 文件处理:openpyxl 与 pandas 库完全指南
  • 使用高斯朴素贝叶斯算法对鸢尾花数据集进行分类
  • 数据库优化实战分享:高频场景下的性能调优技巧与案例解析
  • 结构体指针与非指针 问题及解决
  • To be or Not to be, That‘s a Token——论文阅读笔记——Beyond the 80/20 Rule和R2R
  • centos升级内核
  • LuaJIT2.1 和 Lua5.4.8 性能对比
  • C++网络通信:TCP数据包的发送与接收编程
  • PyCharm中运行.py脚本程序
  • Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
  • 基于BI PaaS架构的衡石HENGSHI SENSE平台技术解析:重塑企业级数据分析基座
  • 猎板厚铜PCB工艺能力如何?
  • Web 架构相关文章目录(持续更新中)
  • Jenkins | Linux环境部署Jenkins与部署java项目
  • select、poll、epoll 与 Reactor 模式
  • 70年使用权的IntelliJ IDEA Ultimate安装教程
  • 代码中文抽取工具并替换工具(以ts为例)
  • 数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
  • DeepSeek-R1-0528-Qwen3-8B为底座微调领域大模型准备:制作领域专用数据集
  • HarmonyOS:Counter计数器组件
  • QQ邮箱发送验证码(Springboot)
  • AI系统负载均衡与动态路由
  • 力扣HOT100之二分查找: 34. 在排序数组中查找元素的第一个和最后一个位置
  • 数学建模-嘉陵江铊污染事件解题全过程文档及程序