<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cradiator的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cradiator</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cradiator]]></copyright><item><title><![CDATA[ReactOS-Freeldr内存管理]]></title><link>https://blog.youkuaiyun.com/cradiator/article/details/6554515</link><guid>https://blog.youkuaiyun.com/cradiator/article/details/6554515</guid><author>cradiator</author><pubDate>Sun, 19 Jun 2011 12:20:00 +0800</pubDate><description><![CDATA[   Freeldr内存管理模块的代码大多在freeldr/freeldr/mm文件夹中。我们从初始化部分开始看起。    freeldr/freeldr/mm/Meminit.c                BOOLEAN MmInitializeMemoryManager(VOID)        {         // 获得内存总页数         TotalPagesInLookup]]></description><category></category></item><item><title><![CDATA[ReactOS-Freeldr注册表HIVE文件格式2]]></title><link>https://blog.youkuaiyun.com/cradiator/article/details/6544818</link><guid>https://blog.youkuaiyun.com/cradiator/article/details/6544818</guid><author>cradiator</author><pubDate>Tue, 14 Jun 2011 22:02:00 +0800</pubDate><description><![CDATA[上一节读了HIVE文件读入内存时的初始化操作。现在来看看实际对内存中的HIVE文件的操作。首先是从空闲CELL中分配一个指定大小的CELL。HvAllocateCell就是做这件事情的。这个函数有四个参数：1. RegistryHive HHIVE结构指针2. Size 需要分配的CELL大小（不包括HCELL结构的大小）3. Storage 分配的CELL是Stabl]]></description><category></category></item><item><title><![CDATA[ReactOS-Freeldr注册表HIVE文件格式]]></title><link>https://blog.youkuaiyun.com/cradiator/article/details/6543974</link><guid>https://blog.youkuaiyun.com/cradiator/article/details/6543974</guid><author>cradiator</author><pubDate>Tue, 14 Jun 2011 15:35:00 +0800</pubDate><description><![CDATA[ReactOS的注册表信息存储在ReactOS/System32/CONFIG/SYSTEM文件中。注册表文件使用的一种特殊的格式——HIVE。HIVE文件主要由BASE_BLOCK/BIN/CELL三部分组成的。BASE_BLOCK是文件头，大小为4KB，里面存储了整个文件的一些全局信息。BIN是以4KB对其的一段空间，里面管理了若干个CELL。CELL是一段用户自定义大小的空间，注册表的键]]></description><category></category></item><item><title><![CDATA[ReactOS-Freeldr注册表]]></title><link>https://blog.youkuaiyun.com/cradiator/article/details/6540706</link><guid>https://blog.youkuaiyun.com/cradiator/article/details/6540706</guid><author>cradiator</author><pubDate>Mon, 13 Jun 2011 10:52:00 +0800</pubDate><description><![CDATA[    body, td {      font-family: tahoma;      font-size: 10pt;    }    这里介绍的注册表是Freeldr实现的一个简易版本，和Windows系统提供的还是有一些差异的。注册表在磁盘中是以HIVE文件形式存在的，格式比较复杂，放到后面。这一节说的是注册表的内存结构。     Freeldr中注册表操作的代码]]></description><category></category></item><item><title><![CDATA[ReactOS-Freeldr镜像加载3]]></title><link>https://blog.youkuaiyun.com/cradiator/article/details/6533546</link><guid>https://blog.youkuaiyun.com/cradiator/article/details/6533546</guid><author>cradiator</author><pubDate>Thu, 09 Jun 2011 11:24:00 +0800</pubDate><description><![CDATA[ 上一次篇我们留下了WinLdrpScanImportAddressTable函数。当WinLdrScanImportDescriptorTable调用这个函数时，当前需要处理的DLL已经加载到内存而且已经初始化完毕。现在我们需要调用WinLdrpScanImportAddressTable来填写模块本身的IAT。这个函数有三个参数，WinLdrBlock是Freeldr的LOADER_P]]></description><category></category></item><item><title><![CDATA[ReactOS-Freeldr镜像加载2]]></title><link>https://blog.youkuaiyun.com/cradiator/article/details/6531518</link><guid>https://blog.youkuaiyun.com/cradiator/article/details/6531518</guid><author>cradiator</author><pubDate>Wed, 08 Jun 2011 13:32:00 +0800</pubDate><description><![CDATA[ 先来介绍几个重要的结构。Freeldr虽然是个引导程序，严格来讲不属于操作系统的一部分，但它也有一些类似Windows系统中的数据结构。LOADER_PARAMETER_BLOCK这个可以看作Freeldr的PEB，结构也和PEB非常相似。/include/reactos/arc/arc.htypedef struct _LOADER_PARAMETER_BLOCK{  ]]></description><category></category></item><item><title><![CDATA[ReactOS-Freeldr镜像加载]]></title><link>https://blog.youkuaiyun.com/cradiator/article/details/6531363</link><guid>https://blog.youkuaiyun.com/cradiator/article/details/6531363</guid><author>cradiator</author><pubDate>Wed, 08 Jun 2011 11:42:00 +0800</pubDate><description><![CDATA[ Freeldr中镜像加载相关的操作在Freeldr/Freeldr/windows/Peloader.c文件中。首先来看看如何加载一个PE镜像。这个操作在WinLdrLoadImage函数中。这个函数的三个参数分别为镜像的Arc路径FileName, 镜像所处内存的内存属性MemoryType, 加载后镜像的基地址由ImageBasePA返回。BOOLEANWinLdrL]]></description><category></category></item><item><title><![CDATA[ReactOS-Freeldr磁盘及文件管理2]]></title><link>https://blog.youkuaiyun.com/cradiator/article/details/6531353</link><guid>https://blog.youkuaiyun.com/cradiator/article/details/6531353</guid><author>cradiator</author><pubDate>Wed, 08 Jun 2011 11:38:00 +0800</pubDate><description><![CDATA[ ArcOpen的大体流程我们看过了。大致分为这几步1. 函数会尝试找到文件所在分区的设备句柄，如果还没有对应的句柄。那么使用DEVICE.FuncTable中的Open函数打开设备，并为这个设备分配句柄。2. 打开设备后条用XxxMount识别分区格式，识别成功返回另外的FuncTable，存储到设备的FileData.FileFuncTable域。3. 为文件分配一个句柄，在对]]></description><category></category></item><item><title><![CDATA[ReactOS-Freeldr磁盘及文件管理]]></title><link>https://blog.youkuaiyun.com/cradiator/article/details/6531347</link><guid>https://blog.youkuaiyun.com/cradiator/article/details/6531347</guid><author>cradiator</author><pubDate>Wed, 08 Jun 2011 11:36:00 +0800</pubDate><description><![CDATA[ Freeldr提供了对fat12、fat32、fatx、ntfs等文件系统的只读功能。这部分代码主要集中在boot/freeldr/freeldr/fs/fs.c文件中。首先计算机加电后会把mbr读取到物理内存的0x7c00位置，mbr搜索活动分区并加载活动分区根目录下的Freeldr.sys文件。加载后跳入Freeldr入口start。Freeldr进行32为初始化后跳入主初始化函数B]]></description><category></category></item></channel></rss>