YSTest: platform_ex::Windows 命名空间参考

YSTest PreAlpha_b800_20170810 The YSLib Test Project

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

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

类 | 类型定义 | 函数 | 变量
platform_ex::Windows 命名空间参考

Windows 平台扩展接口。 更多...

## 类

class | DirectoryFindData
| 文件系统目录查找状态。 更多...
struct | GlobalDelete
| 全局存储删除器。 更多...
class | GlobalLocked
| 全局锁定存储。 更多...
struct | LocalDelete
| 局部存储删除器。 更多...
class | Mutex
| 互斥量：可用于进程间同步。 更多...
class | RegistryKey
| 注册表键。 更多...
class | ReparsePointData
| 重解析点数据。 更多...
class | WConsole

## 类型定义

using | ErrorCode = unsigned long
using | FileID = std::uint64_t
| 文件标识。 更多...
using | VolumeID = std::uint32_t
| 卷序列号。 更多...

## 枚举

enum

AccessRights : ::ACCESS_MASK {
AccessRights::None = 0, AccessRights::GenericRead = GENERIC_READ, AccessRights::GenericWrite = GENERIC_WRITE, AccessRights::GenericReadWrite = GenericRead | GenericWrite,
AccessRights::GenericExecute = GENERIC_EXECUTE, AccessRights::GenericAll = GENERIC_ALL, AccessRights::MaximumAllowed = MAXIMUM_ALLOWED, AccessRights::AccessSystemACL = ACCESS_SYSTEM_SECURITY,
AccessRights::Delete = DELETE, AccessRights::ReadControl = READ_CONTROL, AccessRights::Synchronize = SYNCHRONIZE, AccessRights::WriteDAC = WRITE_DAC,
AccessRights::WriteOwner = WRITE_OWNER, AccessRights::All = STANDARD_RIGHTS_ALL, AccessRights::Execute = STANDARD_RIGHTS_EXECUTE, AccessRights::StandardRead = STANDARD_RIGHTS_READ,
AccessRights::Required = STANDARD_RIGHTS_REQUIRED, AccessRights::StandardWrite = STANDARD_RIGHTS_WRITE
}

| 访问权限。 更多...

## 函数

YF_API void | FixConsoleHandler (int(WINAPI *)(unsigned long)={}, bool=true)
| 安装控制台处理器。 更多...
YF_API YB_STATELESS int | ConvertToErrno (ErrorCode) ynothrow
| 转换 Win32 错误为 errno 。 更多...
YF_API wstring | FetchModuleFileName (::HMODULE={}, YSLib::RecordLevel=YSLib::Err)
| 取模块映像路径。 更多...
yconstfnconst::WIN32_FIND_DATAA &d ynothrow | ImplRet (IsDirectory(FileAttributes(d.dwFileAttributes))) inline PDefH(bool
| 判断 `::WIN32_FIND_DATAW` 指定的节点是否为目录。 更多...
yconstfnconst::WIN32_FIND_DATAA &d ynothrowconst::WIN32_FIND_DATAW &d ynothrow ImplRet(IsDirectory(FileAttributes(d.dwFileAttributes))) YF_API platform YF_API platform::NodeCategory | TryCategorizeNodeDevice (UniqueHandle::pointer)
| 按打开的文件句柄归类节点从属的属性类别。 更多...
d dwReserved0 d dwReserved0 YF_API platform::NodeCategory | CategorizeNode (UniqueHandle::pointer) ynothrow
| 按打开的文件句柄归类节点类别。 更多...
bool | UnlockFile (UniqueHandle::pointer, std::uint64_t=0, std::uint64_t=std::uint64_t(-1)) ynothrow
| 解锁文件。 更多...
YF_API string | MBCSToMBCS (string_view, unsigned=CP_UTF8, unsigned=CP_ACP)
YF_API wstring | MBCSToWCS (string_view, unsigned=CP_ACP)
YF_API string | WCSToMBCS (wstring_view, unsigned=CP_ACP)
const char *str | ImplRet (MBCSToWCS(str, CP_UTF8)) inline PDefH(wstring
const char *str string_view sv | ImplRet (MBCSToWCS(sv, CP_UTF8)) inline YB_NONNULL(1) PDefH(string
const char *str string_view sv const wchar_t *str | ImplRet (WCSToMBCS(str, CP_UTF8)) inline PDefH(string
const char *str string_view sv const wchar_t *str wstring_view sv | ImplRet (WCSToMBCS(sv, CP_UTF8)) YF_API YB_NONNULL(1) wstring FetchNLSItemFromRegistry(const wchar_t *)
| 取注册表中 NLS 键中指定名称的值。 更多...
| PDefH (wstring, FetchCPFileNameFromRegistry, int cp) ImplRet(FetchNLSItemFromRegistry(to_wstring(cp).c_str())) YF_API const unsigned short *FetchDBCSOffset(int) ynothrow
| 取注册表中指定代码页的 NLS 文件路径。 更多...
YF_API platform::NodeCategory | CategorizeNode (FileAttributes, unsigned long=0) ynothrow
| 按 FileAttributes 和重解析标签归类节点类别。 更多...
| PDefH (platform::NodeCategory, CategorizeNode, const ::WIN32_FIND_DATAA &d) ynothrow ImplRet(CategorizeNode(FileAttributes(d.dwFileAttributes)
| 按 `::WIN32_FIND_DATAA` 归类节点类别。 更多...
d dwReserved0 | PDefH (platform::NodeCategory, CategorizeNode, const ::WIN32_FIND_DATAW &d) ynothrow ImplRet(CategorizeNode(FileAttributes(d.dwFileAttributes)
| 按 `::WIN32_FIND_DATAW` 归类节点类别。 更多...
YF_API pair< VolumeID, FileID > | QueryFileNodeID (UniqueHandle::pointer)
| 查询文件标识。 更多...
YF_API FileID | QueryFileNodeID (const wchar_t *, bool={})
YF_API std::uint64_t | QueryFileSize (UniqueHandle::pointer)
| 查询文件大小。 更多...
YF_API YB_NONNULL(1) std YF_API void | QueryFileTime (UniqueHandle::pointer,::FILETIME *={},::FILETIME *={},::FILETIME *={})
| 查询文件的创建、访问和/或修改时间。 更多...
YF_API void | SetFileTime (UniqueHandle::pointer,::FILETIME *={},::FILETIME *={},::FILETIME *={})
| 设置文件的创建、访问和/或修改时间。 更多...
YF_API std::chrono::nanoseconds | ConvertTime (const ::FILETIME &)
| 转换文件时间为以 POSIX 历元起始度量的时间间隔。 更多...
YF_API::FILETIME | ConvertTime (std::chrono::nanoseconds)
| 转换以 POSIX 历元起始度量的时间间隔为文件时间。 更多...
void | LockFile (UniqueHandle::pointer, std::uint64_t=0, std::uint64_t=std::uint64_t(-1), bool=true, bool={})
| 锁定文件。 更多...
bool | TryLockFile (UniqueHandle::pointer, std::uint64_t=0, std::uint64_t=std::uint64_t(-1), bool=true, bool=true) ynothrow
YF_API void | WaitUnique (UniqueHandle::pointer, unsigned long=INFINITE)
| 以指定的时间间隔上限等待句柄指定的同步对象。 更多...
YF_API bool | TryWaitUnique (UniqueHandle::pointer, unsigned long=0) ynothrow
YF_API wstring | FetchSystemPath (size_t=MAX_PATH)
| 取系统目录路径。 更多...
YF_API wstring | FetchWindowsPath (size_t=MAX_PATH)
| 取系统目录路径。 更多...

## 变量

yconstfn | IsDirectory
const wchar_t FileAccessRights FileShareMode FileAttributesAndFlags attributes_and_flags ynothrowv const wchar_t FileAccessRights CreationDisposition FileAttributesAndFlags | attributes_and_flags
YF_API | unsigned = CP_UTF8
| UTF8ToWCS
const char *str string_view sv | WCSToUTF8
using | ModuleProc = ystdex::remove_reference_t< decltype(*::GetProcAddress(::HMODULE(),{}))>
| 加载过程地址得到的过程类型。 更多...
const char * | proc
template<typename _func >
YF_API YB_ATTR_returns_nonnull YB_NONNULL(2) ModuleProc *LoadProc( | YB_NONNULL (2) _func &LoadProc(
| 从模块加载指定过程的指针。 更多...
template<typename _func >
| YB_NONNULL (1, 2) _func &LoadProc(const wchar_t *module
YF_API | FileAccessRights = AccessRights::None
YF_API | FileShareMode = FileShareMode::All
YF_API | CreationDisposition = CreationDisposition::OpenExisting
YF_API | FileAttributesAndFlags = FileAttributesAndFlags::NormalAll) ynothrowv
| MakeFile
const wchar_t * | path
const wchar_t FileAccessRights | desired_access
const wchar_t FileAccessRights FileShareMode | shared_mode
const wchar_t FileAccessRights FileShareMode FileAttributesAndFlags attributes_and_flags ynothrowv const wchar_t FileAccessRights CreationDisposition | creation_disposition
YF_API | YB_NONNULL (1) UniqueHandle MakeFile(const wchar_t *
| 创建或打开独占的文件或设备。 更多...
const wchar_t FileAccessRights FileShareMode FileAttributesAndFlags attributes_and_flags ynothrowv | ImplRet (MakeFile(path, desired_access, shared_mode, CreationDisposition::OpenExisting, attributes_and_flags)) inline YB_NONNULL(1) PDefH(UniqueHandle
YF_API | bool = {})
YF_API size_t | QueryFileLinks (UniqueHandle::pointer)
| 查询文件链接数。 更多...

## 详细描述

Windows 平台扩展接口。

自从
  build 427

## 类型定义说明

using platform_ex::Windows::ErrorCode = typedef unsigned long

自从
  build 435

在文件 MinGW32.h 第 57 行定义.

using platform_ex::Windows::FileID = typedef std::uint64_t

文件标识。

参见
  https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa363788(v=vs.85).aspx 。

自从
  build 638

在文件 MinGW32.h 第 825 行定义.

using platform_ex::Windows::ModuleProc = typedef ystdex::remove_reference_t<decltype(*::GetProcAddress(::HMODULE(), {}))>

加载过程地址得到的过程类型。

自从
  build 651

在文件 MinGW32.h 第 222 行定义.

using platform_ex::Windows::VolumeID = typedef std::uint32_t

卷序列号。

在文件 MinGW32.h 第 827 行定义.

## 枚举类型说明

enum platform_ex::Windows::AccessRights : ::ACCESS_MASK

strong

访问权限。

自从
  build 629

参见
  https://msdn.microsoft.com/en-us/library/windows/desktop/aa374892(v=vs.85).aspx 。
  https://msdn.microsoft.com/en-us/library/windows/desktop/aa374896(v=vs.85).aspx 。

枚举值
None |
GenericRead |
GenericWrite |
GenericReadWrite |
GenericExecute |
GenericAll |
MaximumAllowed |
AccessSystemACL |
Delete |
ReadControl |
Synchronize |
WriteDAC |
WriteOwner |
All |
Execute |
StandardRead |
Required |
StandardWrite |

在文件 MinGW32.h 第 356 行定义.

## 函数说明

YF_API platform::NodeCategory platform_ex::Windows::CategorizeNode | ( | FileAttributes | ,
|  | unsigned | long = `0`
| ) |  |

按 FileAttributes 和重解析标签归类节点类别。

返回
  指定非目录或不被支持的重解析标签时为 NodeCategory::Empty ， 否则为对应的目录和重解析标签的组合节点类别。

自从
  build 701

待办事项:
  对目录链接和符号链接的重解析标签提供适当实现。

d dwReserved0 d dwReserved0 YF_API platform::NodeCategory platform_ex::Windows::CategorizeNode | ( | UniqueHandle::pointer |  | ) |

按打开的文件句柄归类节点类别。

返回
  指定句柄空时为 NodeCategory::Invalid ， 否则为文件属性和设备类别查询的位或结果。

参见
  TryCategorizeNodeAttributes
  TryCategorizeNodeDevice

自从
  build 701

YF_API std::chrono::nanoseconds platform_ex::Windows::ConvertTime | ( | const ::FILETIME & |  | ) |

转换文件时间为以 POSIX 历元起始度量的时间间隔。

异常

  std::system_error

  调用失败。
  - std::errc::not_supported 输入的时间表示不被实现支持。

自从
  build 632

参考自 platform::FileDescriptor::SetAccessTime(), platform::FileDescriptor::SetModificationAndAccessTime() , 以及 platform::FileDescriptor::SetModificationTime().

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

YF_API ::FILETIME platform_ex::Windows::ConvertTime | ( | std::chrono::nanoseconds |  | ) |

转换以 POSIX 历元起始度量的时间间隔为文件时间。

自从
  build 651

YF_API YB_STATELESS int platform_ex::Windows::ConvertToErrno | ( | ErrorCode |  | ) |

转换 Win32 错误为 errno 。

返回
  当对应不存在时 EINVAL ，否则参数对应的 errno 。

自从
  build 639

YF_API wstring platform_ex::Windows::FetchModuleFileName | ( | ::HMODULE | = `{}`,
|  | YSLib::RecordLevel | = `YSLib::Err`
| ) |  |

取模块映像路径。

自从
  build 701

YF_API wstring platform_ex::Windows::FetchSystemPath | ( | size_t | = `MAX_PATH` | ) |

取系统目录路径。

异常

  Win32Exception | 调用失败。

注解
  保证以一个分隔符结束。

自从
  build 593

YF_API wstring platform_ex::Windows::FetchWindowsPath | ( | size_t | = `MAX_PATH` | ) |

取系统目录路径。

自从
  build 693

YF_API void platform_ex::Windows::FixConsoleHandler | ( | int(WINAPI *)(unsigned long) | = `{}`,
|  | bool | = `true`
| ) |  |

安装控制台处理器。

异常

  Win32Exception | 设置失败。

注解
  默认行为使用 `::ExitProcess` ，可能造成 C/C++ 运行时无法正常清理。

警告
  默认不应在 std::at_quick_exit 注册依赖静态或线程生存期对象状态的回调。

参见
  http://msdn.microsoft.com/en-us/library/windows/desktop/ms682658(v=vs.85).aspx
  http://msdn.microsoft.com/en-us/library/windows/desktop/ms686016(v=vs.85).aspx
  $2015-01 @ Documentation::Workflow::Annual2015.

自从
  build 565

若第一参数为空，则使用具有以下行为的处理器： 对 `CTRL_C_EVENT` `CTRL_CLOSE_EVENT` 、 `CTRL_BREAK_EVENT` 、 `CTRL_LOGOFF_EVENT` 、和 `CTRL_SHUTDOWN_EVENT` ，调用 `std::_Exit(STATUS_CONTROL_C_EXIT)` 。 第二参数指定添加或移除。

参考自 YSLib::Environment::Environment().

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

yconstfnconst ::WIN32_FIND_DATAA& d ynothrow platform_ex::Windows::ImplRet | ( | IsDirectory(FileAttributes(d.dwFileAttributes)) |  | ) |

判断 `::WIN32_FIND_DATAW` 指定的节点是否为目录。

自从
  build 299

const wchar_t FileAccessRights FileShareMode FileAttributesAndFlags attributes_and_flags ynothrowv platform_ex::Windows::ImplRet | ( | MakeFile(path, desired_access, shared_mode,CreationDisposition::OpenExisting, attributes_and_flags) |  | ) |

void platform_ex::Windows::LockFile | ( | UniqueHandle::pointer | ,
|  | std::uint64_t | = `0`,
|  | std::uint64_t | = `std::uint64_t(-1)`,
|  | bool | = `true`,
|  | bool | = `{}`
| ) |  |

锁定文件。

前置条件
  文件句柄不为 `INVALID_HANDLE_VALUE` ， 且具有 AccessRights::GenericRead 或 AccessRights::GenericWrite 权限。

自从
  build 721

注解
  对内存映射文件为协同锁，其它文件为强制锁。
  第二和第三参数指定文件锁定范围的起始偏移量和大小。
  最后两个参数分别表示是否为独占锁和是否立刻返回。

异常

  Win32Exception | 锁定失败。

参考自 platform::FileDescriptor::lock() , 以及 platform::FileDescriptor::lock_shared().

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

platform_ex::Windows::PDefH | ( | platform::NodeCategory | ,
|  | CategorizeNode | ,
|  | const ::WIN32_FIND_DATAA & | d
| ) |  |

inline

按 `::WIN32_FIND_DATAA` 归类节点类别。

d dwReserved0 platform_ex::Windows::PDefH | ( | platform::NodeCategory | ,
|  | CategorizeNode | ,
|  | const ::WIN32_FIND_DATAW & | d
| ) |  |

inline

按 `::WIN32_FIND_DATAW` 归类节点类别。

自从
  build 658

YF_API size_t platform_ex::Windows::QueryFileLinks | ( | UniqueHandle::pointer |  | ) |

查询文件链接数。

异常

  Win32Exception | 访问文件或查询文件元数据失败。

自从
  build 660
  build 637

参考自 platform::FileDescriptor::GetNumberOfLinks().

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

YF_API pair<VolumeID, FileID> platform_ex::Windows::QueryFileNodeID | ( | UniqueHandle::pointer |  | ) |

查询文件标识。

返回
  卷标识和卷上文件的标识的二元组。

Bug:
  ReFS 上不保证唯一。
  参见
    https://msdn.microsoft.com/zh-cn/library/windows/desktop/aa363788(v=vs.85).aspx 。

自从
  build 638

参考自 platform::FileDescriptor::GetNodeID().

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

YF_API FileID platform_ex::Windows::QueryFileNodeID | ( | const wchar_t * | ,
|  | bool | = `{}`
| ) |  |

YF_API std::uint64_t platform_ex::Windows::QueryFileSize | ( | UniqueHandle::pointer |  | ) |

查询文件大小。

异常

  std::invalid_argument | 查询文件得到的大小小于 0 。

自从
  build 718

参考自 platform::FileDescriptor::GetSize().

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

YF_API YB_NONNULL (1) std YF_API void platform_ex::Windows::QueryFileTime | ( | UniqueHandle::pointer | ,
|  | ::FILETIME * | = `{}`,
|  | ::FILETIME * | = `{}`,
|  | ::FILETIME * | = `{}`
| ) |  |

查询文件的创建、访问和/或修改时间。

前置条件
  间接断言：路径参数非空。
  文件句柄不为 `INVALID_HANDLE_VALUE` ， 且具有 AccessRights::GenericRead 权限。

自从
  build 629

YF_API void platform_ex::Windows::SetFileTime | ( | UniqueHandle::pointer | ,
|  | ::FILETIME * | = `{}`,
|  | ::FILETIME * | = `{}`,
|  | ::FILETIME * | = `{}`
| ) |  |

设置文件的创建、访问和/或修改时间。

自从
  build 651

前置条件
  文件句柄不为 `INVALID_HANDLE_VALUE` ， 且具有 FileSpecificAccessRights::WriteAttributes 权限。

参考自 platform::FileDescriptor::SetAccessTime(), platform::FileDescriptor::SetModificationAndAccessTime() , 以及 platform::FileDescriptor::SetModificationTime().

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

yconstfnconst ::WIN32_FIND_DATAA& d ynothrowconst ::WIN32_FIND_DATAW& d ynothrow ImplRet (IsDirectory(FileAttributes(d.dwFileAttributes))) YF_API platform YF_API platform::NodeCategory platform_ex::Windows::TryCategorizeNodeDevice | ( | UniqueHandle::pointer |  | ) |

按打开的文件句柄归类节点从属的属性类别。

异常

  Win32Exception | 调用失败。

自从
  build 701

返回
  指定句柄为字符、管道或未知类别。

按打开的文件句柄归类节点从属的设备类别。

返回
  指定句柄为字符、管道或未知类别。

bool platform_ex::Windows::TryLockFile | ( | UniqueHandle::pointer | ,
|  | std::uint64_t | = `0`,
|  | std::uint64_t | = `std::uint64_t(-1)`,
|  | bool | = `true`,
|  | bool | = `true`
| ) |  |

参考自 platform::FileDescriptor::try_lock() , 以及 platform::FileDescriptor::try_lock_shared().

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

YF_API bool platform_ex::Windows::TryWaitUnique | ( | UniqueHandle::pointer | ,
|  | unsigned | long = `0`
| ) |  |

返回
  是否等待成功。

bool platform_ex::Windows::UnlockFile | ( | UniqueHandle::pointer | ,
|  | std::uint64_t | = `0`,
|  | std::uint64_t | = `std::uint64_t(-1)`
| ) |  |

解锁文件。

前置条件
  文件已被锁定。

YF_API void platform_ex::Windows::WaitUnique | ( | UniqueHandle::pointer | ,
|  | unsigned | long = `INFINITE`
| ) |  |

以指定的时间间隔上限等待句柄指定的同步对象。

注解
  时间间隔单位为毫秒。

自从
  build 720

异常

  等待失败。 |

template<typename _func >

YF_API YB_ATTR_returns_nonnull YB_NONNULL (2) ModuleProc* LoadProc( platform_ex::Windows::YB_NONNULL | ( | 2 |  | ) |

inline

从模块加载指定过程的指针。

前置条件
  参数非空。

在文件 MinGW32.h 第 232 行定义.

参考 platform::Deref().

函数调用图:
template<typename _func >

platform_ex::Windows::YB_NONNULL | ( | 1 | ,
|  | 2 |
| ) |  | const

## 变量说明

const wchar_t FileAccessRights FileShareMode FileAttributesAndFlags attributes_and_flags ynothrowv const wchar_t FileAccessRights CreationDisposition FileAttributesAndFlags platform_ex::Windows::attributes_and_flags

在文件 MinGW32.h 第 606 行定义.

YF_API::FILETIME::FILETIME::FILETIME platform_ex::Windows::bool = {})

在文件 MinGW32.h 第 844 行定义.

const wchar_t FileAccessRights FileShareMode FileAttributesAndFlags attributes_and_flags ynothrowv const wchar_t FileAccessRights CreationDisposition platform_ex::Windows::creation_disposition

在文件 MinGW32.h 第 603 行定义.

YF_API platform_ex::Windows::CreationDisposition = CreationDisposition::OpenExisting

在文件 MinGW32.h 第 595 行定义.

const wchar_t FileAccessRights FileShareMode FileAttributesAndFlags attributes_and_flags ynothrowv const wchar_t FileAccessRights platform_ex::Windows::desired_access

在文件 MinGW32.h 第 598 行定义.

YF_API platform_ex::Windows::FileAccessRights = AccessRights::None

在文件 MinGW32.h 第 593 行定义.

YF_API platform_ex::Windows::FileAttributesAndFlags = FileAttributesAndFlags::NormalAll) ynothrowv

在文件 MinGW32.h 第 596 行定义.

YF_API platform_ex::Windows::FileShareMode = FileShareMode::All

在文件 MinGW32.h 第 594 行定义.

yconstfnconst::WIN32_FIND_DATAA &d ynothrow platform_ex::Windows::IsDirectory

在文件 MinGW32.h 第 522 行定义.

const wchar_t FileAccessRights FileShareMode FileAttributesAndFlags attributes_and_flags ynothrowv platform_ex::Windows::MakeFile

在文件 MinGW32.h 第 598 行定义.

const wchar_t FileAccessRights FileShareMode FileAttributesAndFlags attributes_and_flags ynothrowv const wchar_t * platform_ex::Windows::path

在文件 MinGW32.h 第 598 行定义.

const char* platform_ex::Windows::proc

初始值:
{
return LoadProc<_func>([&](const char* sig_) YB_NONNULL(1){ const auto res_(GetModuleHandleW(module)); if(YB_UNLIKELY(!res_)) do { const auto err_(::GetLastError()); throw platform_ex::Windows::Win32Exception(err_, "GetModuleHandleW", sig_); }while(false); return res_; }(yfsig), proc)
YSLib::IO::Path::YB_NONNULL
PDefH(String, GetExtensionOf, const Path &pth) ImplRet(pth.empty()?String() YF_API YB_NONNULL(1) bool VerifyDirectory(const char *)
判断路径表示绝对路径。
Definition: YSLib/Service/FileSystem.h:466
yfsig
#define yfsig
展开为表示函数签名的预定义变量的宏。
Definition: ydef.h:728
YB_UNLIKELY
#define YB_UNLIKELY(_expr)
分支预测提示。
Definition: ydef.h:464
platform_ex::Windows::proc
const char * proc
Definition: MinGW32.h:240

在文件 MinGW32.h 第 240 行定义.

参考自 YSLib::Drawing::MultiBitmapData::MultiBitmapData().

const wchar_t FileAccessRights FileShareMode platform_ex::Windows::shared_mode

在文件 MinGW32.h 第 598 行定义.