MDL 中实际包含的内容是什么?

网友 1

最佳答案

回答者:网友
??内存描述符列表 (MDL) 系统定义结构通系列物理址描述缓冲区执行直接 I/O 驱程序 I/O 管理器接收 MDL 指针并通 MDL 读写数据些驱程序执行直接 I/O 满足设备 I/O 控制请求使用 MDL驱程序编写员应该假设 MDL 描述内存页顺序或内容驱程序依赖于 MDL 指向任何位置数据值并且应该直接取消内存位置引用获取数据 MDL 描述用于直接 I/O 操作缓冲区发 I/O 请求应用程序能已经相同内存页视图映射其址空间应用程序驱程序能尝试同修改数据导致错误且些情况MDL 位置引用内存管理器保留相同物理页 Microsoft Windows 内存管理器构建用于设备读取 MDL 锁定传输目标使用物理页由内存管理器确定保留哪些页面丢弃哪些页面(存)内存管理器数据读入些页丢弃更群集进行 I/O 能够提供更性能例图应于页 A过入鱼毫、Y、Z B 文件偏移虚拟址都逻辑相邻(虽物理页本身必相邻)页 A B 没驻留内存内存管理器必须读取页 Y Z 已经驻留内存所必读取(事实自近备份存储区读入能已经修改种情况覆盖内容发严重错误)单操作读取页 A B 比页 A 进行读取并页 B 进行第二读取更效内存管理器发包含所 4 页(A、Y、Z B)单备份存储区读取请求种读取请求包含于读取意义任意页(依赖于用内存量、前系统划处磁兰强裂船间么使用情况等)内存管理器构建描述请求内存描述符列表 (MDL) 提供页 A B 效象虽龙送念乱段指针页 Y Z 条目指向单系统范围虚拟页 X内存管理器能很现受英皇井带养质镇有使用自备份存储区潜数据填充来自虚拟页 X(使 X 见)组件访问 MDL Y Z 偏移看虚拟页 X Y Z内存管理器任何数目丢弃页表示单页该页同 MDL 或者甚至并发 MDL(用于同驱程序)嵌入表示丢弃页位置内容随都能杀想书地溶均战正村全九改变基于MDL 映射页数据值执行解密控晶艺正改刑东太品我或计算校验驱程序系统提供 MDL 撤销指针访问数据确保确操作驱程序应该根据驱程序 I/O 管理器接收系统提供 MDL 创建临 MDL要创建临 MDL:调用MmGetMdlVirtualAddress MmGetMdlByteCoun策错革常究t 获取系统提供 MDL 虚360问答拟基址度使用PoolType=土奏候她NonPagedPool 调用ExAllocatePoolWith白沉阿养爱损案模权Tag 未页内存池配缓冲区指续下温也轮诗则定等于系统提供 MDL 装集正空钢胡矿场划名剂度缓冲区向扩页边界调爱看者用IoAllocateMdl 配 MDL(使用步骤 2 创建池缓冲区虚拟基址度)调用MmB皇些么政待时么述祖九下uildMdlForN战弦四蒸onpagedPool 更新临 MDL使其描述步骤 2 池缓冲区底层物理页)驱程序应该临 MDL 传递给其硬件读取数据调用任何需要操作使用临 书展MDL 描述数据值通调用 MmBuildMdlForNonPagedPo草杆县ol 更新临 MDL驱程序晚承笑鲜部确保临 MDL 包含任何临页使其发页内容任何改变通种式即使系统 MDL 包含丢弃(能重复)页驱程序仍避免检查稳定内容驱程序完其操作应该通 核端try/except 或try/finally 块使用 RtlCopyMemory 更改数据临 MDL 复制系统提供 MDL使用MDL 作典型 I/O 操作部驱程序(访问底层页数据)需要创建临 MDL内部实现内存管理器跟踪驻留所页及每页何映射驱程序 MDL 传递给系统服务例程执行 I/O 内存管理器确保使用确数据您应该做要假设 MDL 指向任何内存位置内容任何给定间都效

我来回答