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

Ntfs!NtfsVolumeCheckpointDpc函数分析到调用Ntfs!NtfsCheckpointAllVolumes函数

第一部分:

0: kd> g
Breakpoint 22 hit
Ntfs!NtfsVolumeCheckpointDpc:
f71413a6 33c0            xor     eax,eax
0: kd> dv
            Dpc = 0x00000000
DeferredContext = 0x10f9a2e0
SystemArgument1 = 0x01dbd5c9
SystemArgument2 = 0xffdff980
0: kd> kc
 #
00 Ntfs!NtfsVolumeCheckpointDpc
01 nt!KiTimerExpiration
02 nt!KiRetireDpcList
03 nt!KiIdleLoop

第二部分:


0: kd> g
Breakpoint 28 hit
nt!ExQueueWorkItem:
80af292a 55              push    ebp
0: kd> dv
       WorkItem = 0xf7169a9c
      QueueType = CriticalWorkQueue (0n0)
0: kd> dx -r1 ((ntkrnlmp!_WORK_QUEUE_ITEM *)0xf7169a9c)
((ntkrnlmp!_WORK_QUEUE_ITEM *)0xf7169a9c)                 : 0xf7169a9c [Type: _WORK_QUEUE_ITEM *]
    [+0x000] List             [Type: _LIST_ENTRY]
    [+0x008] WorkerRoutine    : 0xf717b1b6 [Type: void (*)(void *)]
    [+0x00c] Parameter        : 0x0 [Type: void *]
0: kd> u f717b1b6
Ntfs!NtfsCheckpointAllVolumes [d:\srv03rtm\base\fs\ntfs\verfysup.c @ 1335]:
f717b1b6 6848010000      push    148h
f717b1bb 68482b16f7      push    offset Ntfs!`string'+0x14c (f7162b48)
f717b1c0 e84303feff      call    Ntfs!__SEH_prolog (f715b508)
f717b1c5 8d85a8feffff    lea     eax,[ebp-158h]
f717b1cb 8945e4          mov     dword ptr [ebp-1Ch],eax
f717b1ce c645e200        mov     byte ptr [ebp-1Eh],0
f717b1d2 c645e300        mov     byte ptr [ebp-1Dh],0
f717b1d6 8b351c0016f7    mov     esi,dword ptr [Ntfs!_imp__KeGetCurrentIrql (f716001c)]

第三部分:

0: kd> g
Breakpoint 23 hit
Ntfs!NtfsCheckpointAllVolumes:
f717b1b6 6848010000      push    148h
1: kd> kc
 #
00 Ntfs!NtfsCheckpointAllVolumes
01 nt!ExpWorkerThread
02 nt!PspSystemThreadStartup
03 nt!KiThreadStartup

        for (Links = NtfsData.VcbQueue.Flink;
             Links != &NtfsData.VcbQueue;
             Links = Links->Flink) {

            ASSERT( FlagOn( IrpContext->TopLevelIrpContext->State, IRP_CONTEXT_STATE_OWNS_TOP_LEVEL ));

            Vcb = CONTAINING_RECORD(Links, VCB, VcbLinks);

            IrpContext->Vcb = Vcb;


1: kd> x ntfs!NtfsData
f7169980          Ntfs!NtfsData = struct _NTFS_DATA
1: kd> dx -r1 (*((Ntfs!_NTFS_DATA *)0xf7169980))
(*((Ntfs!_NTFS_DATA *)0xf7169980))                 [Type: _NTFS_DATA]
    [+0x000] NodeTypeCode     : 1792 [Type: short]
    [+0x002] NodeByteSize     : 504 [Type: short]
    [+0x004] DriverObject     : 0x89630390 : Driver "\FileSystem\Ntfs" [Type: _DRIVER_OBJECT *]
    [+0x008] VcbQueue         [Type: _LIST_ENTRY]
 
1: kd> dx -r1 (*((Ntfs!_LIST_ENTRY *)0xf7169988))
(*((Ntfs!_LIST_ENTRY *)0xf7169988))                 [Type: _LIST_ENTRY]
    [+0x000] Flink            : 0x8962e108 [Type: _LIST_ENTRY *]
    [+0x004] Blink            : 0x8962e108 [Type: _LIST_ENTRY *]


1: kd> dt ntfs!_vcb 0x8962e108-8
   +0x000 NodeTypeCode     : 0n1793
   +0x002 NodeByteSize     : 0n2008
   +0x004 VcbState         : 0x10031001
   +0x008 VcbLinks         : _LIST_ENTRY [ 0xf7169988 - 0xf7169988 ]
   +0x010 RootIndexScb     : 0xe1350658 _SCB
   +0x014 UsnJournal       : (null)
   +0x018 MftScb           : 0x895c5c40 _SCB
   +0x01c Mft2Scb          : 0x895c5968 _SCB
   +0x020 LogFileScb       : 0x89469700 _SCB
   +0x024 BitmapScb        : 0x895c4220 _SCB
   +0x028 AttributeDefTableScb : (null)
   +0x02c BadClusterFileScb : 0x8962ba10 _SCB
   +0x030 ExtendDirectory  : 0xe135ed20 _SCB
   +0x034 SecurityDescriptorStream : 0xe1362d20 _SCB
   +0x038 SecurityIdIndex  : 0xe13503f0 _SCB
   +0x03c SecurityDescriptorHashIndex : 0xe135ce68 _SCB


参考:
 dx -r1 ((Ntfs!_VCB *)0x8962e100)


第四部分:

VOID
NtfsCheckpointVolume (
    IN PIRP_CONTEXT IrpContext,
    IN PVCB Vcb,
    IN BOOLEAN OwnsCheckpoint,
    IN BOOLEAN CleanVolume,
    IN BOOLEAN FlushVolume,
    IN ULONG LfsFlags,
    IN LSN LastKnownLsn
    )

1: kd> t
Breakpoint 24 hit
Ntfs!NtfsCheckpointVolume:
f71d7f48 6834020000      push    234h
1: kd> kc
 #
00 Ntfs!NtfsCheckpointVolume
01 Ntfs!NtfsCheckpointAllVolumes
02 nt!ExpWorkerThread
03 nt!PspSystemThreadStartup
04 nt!KiThreadStartup
1: kd> dv
                IrpContext = 0xf78d2c28
                       Vcb = 0x8962e100
            OwnsCheckpoint = 0x00 ''
               CleanVolume = 0x00 ''
               FlushVolume = 0x01 ''
                  LfsFlags = 0
              LastKnownLsn = {0}

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

相关文章:

  • 【AI论文】利用自注意力机制实现大型语言模型(LLMs)中依赖于输入的软提示
  • 数据结构学习20250612
  • 无人叉车 AGV 的智能物流枢纽逻辑:对接方式分类、技术原理与场景适配
  • 【android bluetooth 框架分析 04】【bt-framework 层详解 6】【Properties介绍】
  • FEC(Forward Error Correction)前向纠错快速了解
  • 【AS32系列MCU调试教程】硬件调试:JLink 驱动配置与调试技巧
  • 5 Android系统常用debug方法
  • [安卓按键精灵辅助工具]一些安卓端可以用的雷电模拟器adb命令
  • 行为模式-命令模式
  • Dagster 实现数据质量自动化:6大维度检查与最佳实践
  • 工厂模式demo
  • Peiiieee的Linux笔记(1)
  • 基于大模型预测的上睑下垂综合诊疗技术方案
  • 浅析4D-bev标注技术在自动驾驶领域的重要性
  • 数据库更新!万方
  • centos转移mysql的数据存储目录
  • 猎犬:快速 友好的桌面文本搜索软件 支持30+格式与高精度OCR
  • HTTP系列---有状态
  • 在MATLAB命令行执行ros2node 和 ros2subscriber后,执行ros2 topic list,MATLAB卡死
  • 云服务器如何搭建多站点?Nginx多域名部署方案详解 (2025)
  • 中国第七次人口普查100m网格化人口数据集(Tif/分省/分市)
  • 使用 VLC Media Player 轻松提取视频中的音频文件
  • 一分钟部署nginx-公网IP访问内网
  • RED DA认证-EN18031网络安全常见问题以及解答
  • 玛哈特零件矫平机:精密制造中的平整度守护者
  • gRPC 与 JSON 之间的类型映射规则
  • PH热榜 | 2025-06-12
  • odoo CRM中销售管道的自定义与阶段管理
  • 使用Optimization tool优化后禁用windows更新批量的脚本
  • 深入解析Web信息探测与分析技术:网站指纹识别、敏感文件扫描与端口探测实战