本简介探讨了针对飞思卡尔MC9S12XS128芯片进行逻辑分区分配的方法以及如何设计适用于该微控制器的Bootloader程序。
图 10.4 展示了逻辑分区的分配情况。
对于每个逻辑驱动器,可以为其设定一个称为“卷标”(Volume Label)的名字,并将其作为目录项存储在该逻辑驱动器的根目录中。在一个逻辑驱动器内,可包含多个文件和子目录,这些内容按照多层树状结构进行组织。每种类型的逻辑驱动器都有一个顶层目录被称为“根目录”,其中可以有若干个子目录;每个这样的子目录又可能包括更多的下级子目录。因此,在一个逻辑驱动器中能够存放的文件和子目录的数量仅受限于该存储设备的空间大小。
尽管在同一个子目录内,所有文件名必须是独一无二的,但不同层级之间的同名文件是可以存在的。这意味着仅仅通过名字无法唯一确定某个特定的文件;为了准确标识一个具体位置上的文件,则需要提供其路径信息——即从根目录开始直至目标文件所在的具体层次结构中的每一个中间节点名称。
对于任何给定进程而言,Windows 操作系统会维护当前驱动器和每个逻辑驱动器下的默认路径。如果未指定特定的文件路径,则所有操作都被假定为在所定义的“当前”位置进行;若要访问非当前位置上的文件,就必须提供完整的绝对路径名。例如,当尝试读取名为 System.ini 的文件时,如果没有明确指出其完整路径,并且该名称仅存在于当前目录中的话,系统将默认使用此目录下的同名文件。
在 Win32 API 中存在一组特定的函数用于处理逻辑驱动器和目录的相关操作,在本节里我们将详细探讨这些函数的具体用法。
10.3.1 逻辑驱动器操作
对于卷标的操作(创建、修改或删除),可以使用 SetVolumeLabel 函数来实现。如果需要为某个驱动器设置新的或者更新现有的卷标签,可以通过以下示例代码进行:
```assembly
szPath db C:\,0
szVolume db System,0
invoke SetVolumeLabel,addr szPath,szVolume
```
该段代码将 C 盘的卷标设为 System。第一个参数指定了要设置标签的目标逻辑驱动器,而第二个参数则提供了新的或更新后的名称。
通过这种方式,可以方便地管理和操作系统的各个逻辑分区和目录结构中的标识信息。