- UID
- 1029342
- 性别
- 男
|
由于FatFs模块完全与磁盘I/O层分开,因此底层磁盘I/O需要下列函数去读/写物理磁盘以及获取当前时间。由于底层磁盘I/O模块并不是FatFs的一部分,因此它必须由用户提供。
disk_initialize
初始化磁盘驱动器
DSTATUS disk_initialize (
BYTE Drive /* 物理驱动器号 */
);
参数
Drive
指定待初始化的物理驱动器号。
返回值
disk_initialize函数返回一个磁盘状态作为结果。磁盘状态的详情,参考disk_status函数。
描述
disk_initialize函数初始化一个物理驱动器。函数成功后,返回值中的STA_NOINIT标志被清除。
disk_initialize函数被FatFs模块在卷挂载过程中调用,去管理存储介质的改变。当FatFs模块起作用时,或卷上的FAT结构可以被瓦解时,应用程序不能调用该函数。可以使用f_mount函数去重新初始化文件系统。
disk_status
获取当前磁盘的状态
DSTATUS disk_status (
BYTE Drive /* 物理驱动器号*/
);
参数
Drive
指定待确认的物理驱动器号。
返回值
磁盘状态,是下列标志的组合: STA_NOINIT
指示磁盘驱动器还没有被初始化。当系统复位、磁盘移除和disk_initialize函数失败时,该标志被设置;当disk_initialize函数成功时,该标志被清除。STA_NODISK
指示驱动器中没有存储介质。当安装了磁盘驱动器后,该标志始终被清除。
STA_PROTECTED
指示存储介质被写保护。在不支持写保护缺口的驱动器上,该标志始终被清除。当STA_NODISK被设置时,该标志无效。
disk_read
从磁盘驱动器中读取扇区
DRESULT disk_read (
BYTE Drive, /* 物理驱动器号 */
BYTE* Buffer, /* 读取数据缓冲区的指针 */
DWORD SectorNumber, /* 起始扇区号 */
BYTE SectorCount /* 要读取的扇区数 */
);
参数
Drive
指定物理驱动器号。
Buffer
存储读取数据的缓冲区的指针。该缓冲区大小需要满足要读取的字节数(扇区大小 * 扇区总数。由上层指定的存储器地址可能会也可能不会以字边界对齐。SectorNumber
指定在逻辑块地址(LBA)中的起始扇区号。
SectorCount
指定要读取的扇区数(1-255)。
返回值
RES_OK (0)
函数成功
RES_ERROR
在读操作过程中发生了不能恢复的硬错误。
RES_PARERR
无效的参数。
RES_NOTRDY
磁盘驱动器还没被初始化。
disk_write
向磁盘驱动器中写入扇区
DRESULT disk_write (
BYTE Drive, /* 物理驱动器号 */
const BYTE* Buffer, /* 写入数据缓冲区的指针(可能未对齐) */
DWORD SectorNumber, /* 起始扇区号 */
BYTE SectorCount /* 要写入的扇区数 */
); |
|