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

YSTest PreAlpha_b700_20160611 The YSLib Test Project

- 首页
- 相关页面
- 模块
- 命名空间
- 类
- 文件

- 命名空间列表
- 命名空间成员

枚举 | 函数 | 变量
platform::FAT::LFN 命名空间参考

长文件名接口。 更多...

## 枚举

enum

Offsets {
Ordinal = 0x00, Char0 = 0x01, Char1 = 0x03, Char2 = 0x05,
Char3 = 0x07, Char4 = 0x09, Flag = 0x0B, Reserved1 = 0x0C,
CheckSum = 0x0D, Char5 = 0x0E, Char6 = 0x10, Char7 = 0x12,
Char8 = 0x14, Char9 = 0x16, Char10 = 0x18, Reserved2 = 0x1A,
Char11 = 0x1C, Char12 = 0x1E
}

| 长文件名目录项偏移量。 更多...

enum

: size_t {
MaxLength = 256, MaxMBCSLength = MaxLength * 3, EntryLength = size(OffsetTable), AliasEntryLength = 11,
MaxAliasMainPartLength = 8, MaxAliasExtensionLength = 3, MaxAliasLength = MaxAliasMainPartLength + MaxAliasExtensionLength + 2, MaxNumericTail = 999999
}

enum | EntryValues : EntryDataUnit { CaseLowerBasename = 0x08, CaseLowerExtension = 0x10, LastLongEntry = 0x40 }

## 函数

string | ConvertToMBCS (const char16_t *path)
EntryDataUnit | GenerateAliasChecksum (const EntryDataUnit *p) ynothrowv
YF_API tuple< string, string, bool > | ConvertToAlias (const u16string &)
| 转换长文件名为别名。 更多...
| PDefH (size_t, FetchLongNameOffset, EntryDataUnit ord) ynothrow ImplRet((size_t(ord &~LastLongEntry)-1U)*EntryLength) YF_API string ConvertToMBCS(const char16_t *path)
| 按指定序数取长文件名偏移。 更多...
YF_API | YB_NONNULL (1) EntryDataUnit GenerateAliasChecksum(const EntryDataUnit *) ynothrowv
| 生成别名校验和。 更多...
YF_API bool | ValidateName (string_view) ynothrowv
| 检查名称是否为合法的可被 UCS-2 表示的非控制字符组成。 更多...
YF_API void | WriteNumericTail (string &, size_t) ynothrowv
| 在指定字符串写前缀字符 '~' 和整数的后缀以作为短文件名。 更多...

## 变量

yconstexpr const size_t | OffsetTable []
| 组成长文件名中的 UCS-2 字符在项中的偏移量表。 更多...
const char | IllegalCharacters [] {"\\/:*?\"<>|"}
| 非法长文件名字符。 更多...

## 详细描述

长文件名接口。

注解
  仅适用于 ASCII 兼容字符集。

参见
  Microsoft FAT specification Section 7 。

## 枚举类型说明

anonymous enum : size_t

枚举值
MaxLength | UCS-2 项最大长度。
MaxMBCSLength | UTF-8 项最大长度。
EntryLength |
AliasEntryLength |
MaxAliasMainPartLength |
MaxAliasExtensionLength |
MaxAliasLength |
MaxNumericTail |

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

enum platform::FAT::LFN::EntryValues : EntryDataUnit

枚举值
CaseLowerBasename | WinNT 小写文件名。
CaseLowerExtension | WinNT 小写扩展名。
LastLongEntry | Ordinal 中标记结束的项。

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

enum platform::FAT::LFN::Offsets

长文件名目录项偏移量。

枚举值
Ordinal | 长文件名序数。
Char0 |
Char1 |
Char2 |
Char3 |
Char4 |

Flag

注解
  值等于 Attribute::LongFilename 。

Reserved1

注解
  保留值 0x00 。

CheckSum | 短文件名（别名）校验和。
Char5 |
Char6 |
Char7 |
Char8 |
Char9 |
Char10 |

Reserved2

注解
  保留值 0x0000 。

Char11 |
Char12 |

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

## 函数说明

tuple< string, string, bool > platform::FAT::LFN::ConvertToAlias | ( | const u16string & | long_name | ) |

转换长文件名为别名。

自从
  build 608

前置条件
  参数指定的字符串不含空字符。

返回
  主文件名、扩展名和指定是否为有损转换标识。

注解
  返回的文件名长度分别不大于 MaxAliasMainPartLength 和 MaxAliasExtensionLength 。

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

参考 YSLib::char, CHRLib::char16_t(), platform::FAT::IllegalAliasCharacters, MaxAliasExtensionLength, MaxAliasMainPartLength, ystdex::ntctslen(), YSLib::Text::str, YAssert , 以及 yunseq.

函数调用图:

string platform::FAT::LFN::ConvertToMBCS | ( | const char16_t * | path | ) |

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

参考 CHRLib::ImplRet(), CHRLib::MakeMBCS(), MaxLength, MaxMBCSLength, ystdex::ntctslen(), YSLib::path , 以及 ystdex::restrict_length().

函数调用图:

EntryDataUnit platform::FAT::LFN::GenerateAliasChecksum | ( | const EntryDataUnit * | p | ) |

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

参考 AliasEntryLength, v , 以及 YAssertNonnull.

platform::FAT::LFN::PDefH | ( | size_t | ,
|  | FetchLongNameOffset | ,
|  | EntryDataUnit | ord
| ) |  | const

inline

按指定序数取长文件名偏移。

转换 UCS-2 路径字符串为多字节字符串。

自从
  build 610

bool platform::FAT::LFN::ValidateName | ( | string_view | name | ) |

检查名称是否为合法的可被 UCS-2 表示的非控制字符组成。

前置条件
  断言：字符串参数的数据指针非空。

自从
  build 657

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

参考 ystdex::cpp2011::begin(), CHRLib::c, ystdex::cpp2011::end(), NPL::A1::name, YAssertNonnull , 以及 ynothrow.

函数调用图:

void platform::FAT::LFN::WriteNumericTail | ( | string & | alias,
|  | size_t | k
| ) |  |

在指定字符串写前缀字符 '~' 和整数的后缀以作为短文件名。

前置条件
  字符串长度不小于 MaxAliasMainPartLength 且可保存前缀字符和第二参数转换的数值。

自从
  build 608

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

参考 MaxAliasMainPartLength, CHRLib::p() , 以及 YAssert.

函数调用图:

## 变量说明

const char platform::FAT::LFN::IllegalCharacters[] {"\\/:*?\"<>|"}

非法长文件名字符。

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

yconstexpr const size_t platform::FAT::LFN::OffsetTable[]

初始值:
{0x01, 0x03, 0x05, 0x07, 0x09, 0x0E,
0x10, 0x12, 0x14, 0x16, 0x18, 0x1C, 0x1E}

组成长文件名中的 UCS-2 字符在项中的偏移量表。

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