|
楼主 |
发表于 2011-4-1 14:52:47
|
显示全部楼层
1)DataSectionObject 这个是fileobject和虚拟内存打交道的关键,如果我们是非缓冲非缓存(这个我不是太清楚)打开文件的话,多个文件对象的DataSectionObject 是不同的。但是如果我们通过文件映射打开的话fileObject不同但是DataSectionObject 相同的,因为对应虚拟内存相同。
2)ImageSectionObject 这个就是可执行文件 结构不清楚
3)SharedCacheMap fileobject和缓存管理器打交道的关键 结构_SHARED_CACHE_MAP
nt!_SHARED_CACHE_MAP
+0x000 NodeTypeCode : Int2B
+0x002 NodeByteSize : Int2B
+0x004 OpenCount : Uint4B
+0x008 FileSize : _LARGE_INTEGER
+0x010 BcbList : _LIST_ENTRY
+0x018 SectionSize : _LARGE_INTEGER
+0x020 ValidDataLength : _LARGE_INTEGER
+0x028 ValidDataGoal : _LARGE_INTEGER
+0x030 InitialVacbs : [4] Ptr32 _VACB
+0x040 Vacbs : Ptr32 Ptr32 _VACB
+0x044 FileObject : Ptr32 _FILE_OBJECT
+0x048 ActiveVacb : Ptr32 _VACB
+0x04c NeedToZero : Ptr32 Void
+0x050 ActivePage : Uint4B
+0x054 NeedToZeroPage : Uint4B
+0x058 ActiveVacbSpinLock : Uint4B
+0x05c VacbActiveCount : Uint4B
+0x060 DirtyPages : Uint4B
+0x064 SharedCacheMapLinks : _LIST_ENTRY
+0x06c Flags : Uint4B
+0x070 Status : Int4B
+0x074 Mbcb : Ptr32 _MBCB
+0x078 Section : Ptr32 Void
+0x07c CreateEvent : Ptr32 _KEVENT
+0x080 WaitOnActiveCount : Ptr32 _KEVENT
+0x084 PagesToWrite : Uint4B
+0x088 BeyondLastFlush : Int8B
+0x090 Callbacks : Ptr32 _CACHE_MANAGER_CALLBACKS
+0x094 LazyWriteContext : Ptr32 Void
+0x098 PrivateList : _LIST_ENTRY
+0x0a0 LogHandle : Ptr32 Void
+0x0a4 FlushToLsnRoutine : Ptr32 void
+0x0a8 DirtyPageThreshold : Uint4B
+0x0ac LazyWritePassCount : Uint4B
+0x0b0 UninitializeEvent : Ptr32 _CACHE_UNINITIALIZE_EVENT
+0x0b4 NeedToZeroVacb : Ptr32 _VACB
+0x0b8 BcbSpinLock : Uint4B
+0x0bc Reserved : Ptr32 Void
+0x0c0 Event : _KEVENT
+0x0d0 VacbPushLock : _EX_PUSH_LOCK
+0x0d8 PrivateCacheMap : _PRIVATE_CACHE_MAP
看见_VACB 很兴奋吧 nt!_VACB
+0x000 BaseAddress : Ptr32 Void
+0x004 SharedCacheMap : Ptr32 _SHARED_CACHE_MAP
+0x008 Overlay : __unnamed
+0x010 LruList : _LIST_ENTRY
dd BaseAddress缓存中数据
|
|