YSTest: platform::FAT 命名空间参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

命名空间 | 类 | 类型定义 | 枚举 | 函数 | 变量
platform::FAT 命名空间参考

文件分配表接口。 更多...

## 命名空间

| FAT16
| FAT16 接口（ FAT12 共享实现）。
| FAT32
| FAT32 接口。
| LFN
| 长文件名接口。

## 类

class | EntryData
| 目录项数据。 更多...

## 类型定义

using | EntryDataUnit = byte
using | ClusterIndex = std::uint32_t
using | ClusterCount = std::uint32_t
using | VolumeLabel = array< byte, 11 >
| 卷标数据类型。 更多...
using | FileSize = std::uint32_t
| 文件大小：字节数。 更多...
using | Timestamp = std::uint16_t
| 时间戳：表示日期和时间的整数类型。 更多...

## 枚举

enum

BPB : size_t {
BS_jmpBoot = 0, BS_OEMName = 3, BPB_BytsPerSec = 11, BPB_SecPerClus = 13,
BPB_RsvdSecCnt = 14, BPB_NumFATs = 16, BPB_RootEntCnt = 17, BPB_TotSec16 = 19,
BPB_Media = 21, BPB_FATSz16 = 22, BPB_SecPerTrk = 24, BPB_NumHeads = 26,
BPB_HiddSec = 28, BPB_TotSec32 = 32
}

| BIOS 参数块偏移量。 更多...
enum | BPB : size_t { BS_DrvNum = 36, BS_Reserved1 = 37, BS_BootSig = 38, BS_VolID = 39, BS_VolLab = 43, BS_FilSysType = 54, _reserved_zero_448 = 62, Signature_word = 510, _reserved_remained = 512 }
| FAT12 和 FAT16 扩展 BIOS 参数块偏移量。 更多...

enum

BPB : size_t {
BPB_FATSz32 = 36, BPB_ExtFlags = 40, BPB_FSVer = 42, BPB_RootClus = 44,
BPB_FSInfo = 48, BPB_BkBootSec = 50, BPB_Reserved = 52, BS_DrvNum = 64,
BS_Reserved1 = 65, BS_BootSig = 66, BS_VolID = 67, BS_VolLab = 71,
BS_FilSysType = 82, _reserved_zero_420 = 90
}

| FAT32 扩展 BIOS 参数块偏移量。 更多...
enum | FSI : size_t { FSI_LeadSig = 0, FSI_Reserved1 = 4, FSI_StrucSig = 484, FSI_Free_Count = 488, FSI_Nxt_Free = 492, FSI_Reserved2 = 496, FSI_TrailSig = 508 }
| 文件系统信息块偏移量。 更多...
enum | Attribute : octet { Attribute::ReadOnly = 0x01, Attribute::Hidden = 0x02, Attribute::System = 0x04, Attribute::VolumeID = 0x08, Attribute::Directory = 0x10, Attribute::Archive = 0x20, Attribute::LongFileName = ReadOnly | Hidden | System | VolumeID }
| 文件属性。 更多...

## 函数

yconstexpr const size_t | MinSectorSize (512)
| BIOS 参数块偏移量域 BPB_BytsPerSec 的最值。 更多...
yconstexpr const size_t | MaxSectorSize (4096)
YB_ATTR_nodiscard | YB_NONNULL (1) YB_PURE inline PDefH(bool
| 判断参数是否匹配 FAT 签名。 更多...
YB_ATTR_nodiscard const void *p | ImplRet (std::memcmp(p, FATSignature, sizeof(FATSignature))==0) YB_ATTR_nodiscard YB_NONNULL(1) YB_PURE bool CheckValidMBR(const byte *)
| 判断参数指定的扇区内容是否可构成合法的主引导记录。 更多...
yconstexpr const std::uint32_t | FSI_LeadSig_Value (0x41615252)
yconstexpr const std::uint32_t | FSI_StrucSig_Value (0x61417272)
yconstexpr const std::uint32_t | FSI_TrailSig_Value (0xAA550000)
static yconstexpr const auto | MaxFileSize (FileSize(0xFFFFFFFF))
| 最大文件大小。 更多...
YB_ATTR_nodiscard YF_API std::time_t | ConvertFileTime (Timestamp, Timestamp) ynothrow
| 转换日期和时间的时间戳为标准库时间类型。 更多...
YB_ATTR_nodiscard YF_API pair< Timestamp, Timestamp > | FetchDateTime () ynothrow
| 取以实时时钟的文件日期和时间。 更多...
yconstexpr const size_t | EntryDataSize (0x20)
| 目录项数据大小。 更多...
bool | CheckValidMBR (const byte *sec_buf)
const char * | CheckColons (const char *path)

## 变量

yconstexpr const char | FATSignature [] {'F', 'A', 'T'}
| FAT 签名：扩展 BPB 中的 BS_FilSysType 公共前缀。 更多...
YB_ATTR_nodiscard | MatchFATSignature
const char | IllegalAliasCharacters [] {"\\/:;*?\"<>|&+,=[] "}
| 非法别名字符。 更多...

## 详细描述

文件分配表接口。

自从
  build 607

## 类型定义说明

## ◆ ClusterCount

using platform::FAT::ClusterCount = typedef std::uint32_t

自从
  build 900

在文件 YCLib/FileSystem.h 第 881 行定义.

## ◆ ClusterIndex

using platform::FAT::ClusterIndex = typedef std::uint32_t

在文件 YCLib/FileSystem.h 第 879 行定义.

## ◆ EntryDataUnit

using platform::FAT::EntryDataUnit = typedef byte

在文件 YCLib/FileSystem.h 第 878 行定义.

## ◆ FileSize

using platform::FAT::FileSize = typedef std::uint32_t

文件大小：字节数。

在文件 YCLib/FileSystem.h 第 1090 行定义.

## ◆ Timestamp

using platform::FAT::Timestamp = typedef std::uint16_t

时间戳：表示日期和时间的整数类型。

在文件 YCLib/FileSystem.h 第 1100 行定义.

## ◆ VolumeLabel

using platform::FAT::VolumeLabel = typedef array<byte, 11>

卷标数据类型。

参见
  Microsoft FAT Specification Section 3.2 。

自从
  build 610

在文件 YCLib/FileSystem.h 第 996 行定义.

## 枚举类型说明

## ◆ Attribute

enum platform::FAT::Attribute : octet

strong

文件属性。

参见
  Microsoft FAT specification Section 6 。

枚举值
ReadOnly |
Hidden |
System |
VolumeID |
Directory |
Archive |
LongFileName |

在文件 YCLib/FileSystem.h 第 1021 行定义.

## ◆ BPB [1/3]

enum platform::FAT::BPB : size_t

BIOS 参数块偏移量。

自从
  build 844
  build 608

参见
  Microsoft FAT Specification Section 3.1 。

枚举值
BS_jmpBoot |
BS_OEMName |
BPB_BytsPerSec |
BPB_SecPerClus |
BPB_RsvdSecCnt |
BPB_NumFATs |
BPB_RootEntCnt |
BPB_TotSec16 |
BPB_Media |
BPB_FATSz16 |
BPB_SecPerTrk |
BPB_NumHeads |
BPB_HiddSec |
BPB_TotSec32 |

在文件 YCLib/FileSystem.h 第 892 行定义.

## ◆ FSI

enum platform::FAT::FSI : size_t

文件系统信息块偏移量。

参见
  Microsoft FAT Specification Section 5 。

枚举值
FSI_LeadSig |
FSI_Reserved1 |
FSI_StrucSig |
FSI_Free_Count |
FSI_Nxt_Free |
FSI_Reserved2 |
FSI_TrailSig |

在文件 YCLib/FileSystem.h 第 1001 行定义.

## 函数说明

## ◆ CheckColons()

const char* platform::FAT::CheckColons | ( | const char * | path | ) |

在文件 YCLib/FileSystem.cpp 第 869 行定义.

引用了 platform::Nonnull(), YSLib::path, ystdex::throw_error() , 以及 yfsig.

函数调用图:

## ◆ CheckValidMBR()

bool platform::FAT::CheckValidMBR | ( | const byte * | sec_buf | ) |

在文件 YCLib/FileSystem.cpp 第 513 行定义.

引用了 platform::FAT::FAT16::BS_FilSysType, BS_jmpBoot , 以及 MatchFATSignature.

## ◆ ConvertFileTime()

std::time_t platform::FAT::ConvertFileTime | ( | Timestamp | d,
|  | Timestamp | t
| ) |  |

转换日期和时间的时间戳为标准库时间类型。

在文件 YCLib/FileSystem.cpp 第 523 行定义.

引用了 CHRLib::d, NPL::tm , 以及 yunseq.

## ◆ EntryDataSize()

yconstexpr const size_t platform::FAT::EntryDataSize | ( | 0x20 |  | ) |

目录项数据大小。

自从
  build 609

## ◆ FetchDateTime()

pair< Timestamp, Timestamp > platform::FAT::FetchDateTime | ( |  | ) |

取以实时时钟的文件日期和时间。

在文件 YCLib/FileSystem.cpp 第 540 行定义.

引用了 ystdex::is_date_range_valid(), ystdex::is_time_no_leap_valid() , 以及 NPL::tm.

被这些函数引用 platform::FAT::EntryData::WriteCDateTime() , 以及 platform::FAT::EntryData::WriteDateTime().

函数调用图:
这是这个函数的调用关系图:

## ◆ FSI_LeadSig_Value()

yconstexpr const std::uint32_t platform::FAT::FSI_LeadSig_Value | ( | 0x41615252 |  | ) |

## ◆ FSI_StrucSig_Value()

yconstexpr const std::uint32_t platform::FAT::FSI_StrucSig_Value | ( | 0x61417272 |  | ) |

## ◆ FSI_TrailSig_Value()

yconstexpr const std::uint32_t platform::FAT::FSI_TrailSig_Value | ( | 0xAA550000 |  | ) |

## ◆ ImplRet()

YB_ATTR_nodiscard const void* p platform::FAT::ImplRet | ( | std::memcmp(p, FATSignature, sizeof(FATSignature)) | = `=0` | ) | const

判断参数指定的扇区内容是否可构成合法的主引导记录。

注解
  匹配 BS_jmpBoot 和 FAT 签名。

参见
  MatchFATSignature
  Microsoft FAT Specification Section 3.1 。

## ◆ MaxFileSize()

static yconstexpr const auto platform::FAT::MaxFileSize | ( | FileSize(0xFFFFFFFF) |  | ) |

static

最大文件大小。

注解
  等于 4GiB - 1B 。

## ◆ MaxSectorSize()

yconstexpr const size_t platform::FAT::MaxSectorSize | ( | 4096 |  | ) |

## ◆ MinSectorSize()

yconstexpr const size_t platform::FAT::MinSectorSize | ( | 512 |  | ) |

BIOS 参数块偏移量域 BPB_BytsPerSec 的最值。

自从
  build 609

## ◆ YB_NONNULL()

YF_API platform::FAT::YB_NONNULL | ( | 1 |  | ) | const

判断参数是否匹配 FAT 签名。

检查参数指定的 MS-DOS 风格路径冒号。

前置条件
  间接断言：参数非空。

异常

  std::system_error

  检查失败。
  - std::errc::invalid_argument 路径有超过一个冒号。

自从
  build 611

## 变量说明

## ◆ FATSignature

yconstexpr const char platform::FAT::FATSignature[] {'F', 'A', 'T'}

FAT 签名：扩展 BPB 中的 BS_FilSysType 公共前缀。

参见
  Microsoft FAT Specification Section 3.2 。

自从
  build 900

在文件 YCLib/FileSystem.h 第 974 行定义.

## ◆ IllegalAliasCharacters

const char platform::FAT::IllegalAliasCharacters[] {"\\/:;*?\"<>|&+,=[] "}

非法别名字符。

在文件 YCLib/FileSystem.h 第 1086 行定义.

被这些函数引用 platform::FAT::LFN::ConvertToAlias().

## ◆ MatchFATSignature

YB_ATTR_nodiscard platform::FAT::MatchFATSignature

在文件 YCLib/FileSystem.h 第 978 行定义.

被这些函数引用 CheckValidMBR().