YSTest: platform_ex 命名空间参考

YSTest PreAlpha_b900_20201012 The YSLib Test Project

命名空间 | 类 | 类型定义 | 枚举 | 函数 | 变量
platform_ex 命名空间参考
Top-level Platform Namespaces

平台扩展命名空间。 更多...

## 命名空间

| Android
| Android 平台扩展接口。
| Windows
| Windows 平台扩展接口。

## 类

class | COM
| COM 全局状态。 更多...
class | COMException
| COM 异常基类。 更多...
class | DirectoryFindData
| 文件系统目录查找状态。 更多...
struct | GlobalDelete
| 全局存储删除器。 更多...
class | GlobalLocked
| 全局锁定存储。 更多...
class | InputQueue
| 输入队列。 更多...
struct | LocalDelete
| 局部存储删除器。 更多...
class | Mutex
| 互斥量：可用于进程间同步。 更多...
class | RegistryKey
| 注册表键。 更多...
class | ReparsePointData
| 重解析点数据。 更多...
class | WConsole
| Windows 控制台对象。 更多...

## 类型定义

using | ErrorCode = unsigned long
using | ModuleProc = ystdex::remove_reference_t< decltype(*::GetProcAddress(::HMODULE(), {}))>
| 加载过程地址得到的过程类型。 更多...
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
}

| 访问权限。 更多...

enum

FileFlags : unsigned long {
WriteThrough = FILE_FLAG_WRITE_THROUGH, Overlapped = FILE_FLAG_OVERLAPPED, NoBuffering = FILE_FLAG_NO_BUFFERING, RandomAccess = FILE_FLAG_RANDOM_ACCESS,
SequentialScan = FILE_FLAG_SEQUENTIAL_SCAN, DeleteOnClose = FILE_FLAG_DELETE_ON_CLOSE, BackupSemantics = FILE_FLAG_BACKUP_SEMANTICS, POSIXSemantics = FILE_FLAG_POSIX_SEMANTICS,
SessionAware = FILE_FLAG_SESSION_AWARE, OpenReparsePoint = FILE_FLAG_OPEN_REPARSE_POINT, OpenNoRecall = FILE_FLAG_OPEN_NO_RECALL, FirstPipeInstance = FILE_FLAG_FIRST_PIPE_INSTANCE
}

enum

SecurityQoS : unsigned long {
Anonymous = SECURITY_ANONYMOUS, ContextTracking = SECURITY_CONTEXT_TRACKING, Delegation = SECURITY_DELEGATION, EffectiveOnly = SECURITY_EFFECTIVE_ONLY,
Identification = SECURITY_IDENTIFICATION, Impersonation = SECURITY_IMPERSONATION, Present = SECURITY_SQOS_PRESENT, ValidFlags = SECURITY_VALID_SQOS_FLAGS
}

enum | FileAttributesAndFlags : unsigned long { NormalWithDirectory = Normal | BackupSemantics, NormalAll = NormalWithDirectory | OpenReparsePoint }

## 函数

YF_API ::ALooper & | FetchNativeLooper (bool)
| 取当前线程的本机消息循环。 更多...
YF_API void | TraceConfiguration (::AConfiguration &, platform::Logger::Level=platform::Descriptions::Notice)
YB_ATTR_nodiscard | YB_NONNULL (1) inline PDefH(u16string
| 构造适合表示路径的 `char16_t` 字符串。 更多...
YB_ATTR_nodiscard const char16_t *s | ImplRet (platform::Nonnull(s)) YB_ATTR_nodiscard inline PDefH(const u16string &
YB_ATTR_nodiscard const char16_t *s const u16string &s | ImplRet (s) YB_ATTR_nodiscard YF_API YB_NONNULL(1) u16string MakePathStringU(const char *)
YF_API const platform::KeyInput & | FetchKeyState ()
| 取按键状态。 更多...
YF_API const platform::KeyInput & | FetchOldKeyState ()
| 取上一次更新的按键状态。 更多...
YF_API platform::KeyInput | FetchKeyDownState ()
| 取键按下状态。 更多...
YF_API platform::KeyInput | FetchKeyUpState ()
| 取键释放状态。 更多...
YF_API void | ClearKeyStates ()
| 清除按键缓冲。 更多...
YF_API void | UpdateKeyStates ()
| 更新按键状态。 更多...
u16string | MakePathStringU (const char *s)
inline ::HRESULT | CheckHResult (::HRESULT h)
| 检查 ::HRESULT 值，若表示失败则抛出 COMException 。 更多...
template<class _iCOM >
bool | operator== (const COMPtr< _iCOM > &x, std::nullptr_t) ynothrow
template<class _iCOM >
bool | operator== (std::nullptr_t, const COMPtr< _iCOM > &x) ynothrow
template<class _iCOM1 , class _iCOM2 >
bool | operator!= (const COMPtr< _iCOM1 > &x, const COMPtr< _iCOM2 > &y) ynothrow
template<class _iCOM >
bool | operator!= (const COMPtr< _iCOM > &x, std::nullptr_t) ynothrow
template<class _iCOM >
bool | operator!= (std::nullptr_t, const COMPtr< _iCOM > &x) ynothrow
template<class _iCOM1 , class _iCOM2 >
bool | operator< (const COMPtr< _iCOM1 > &x, const COMPtr< _iCOM2 > &y) ynothrow
template<class _iCOM >
void | Attach (COMPtr< _iCOM > &ptr, typename COMPtr< _iCOM >::InterfaceType *p) ynothrow
template<class _iCOM >
_iCOM * | Detach (COMPtr< _iCOM > &ptr) ynothrow
template<class _iCOM >
unsigned long | Reset (COMPtr< _iCOM > &ptr) ynothrow
YF_API void | FixConsoleHandler (int(WINAPI *)(unsigned long)={}, bool=true)
| 安装控制台处理器。 更多...
YF_API YB_STATELESS int | ConvertToErrno (ErrorCode) ynothrow
| 转换 Win32 错误为 errno 。 更多...
template<typename _func >
YF_API YB_ATTR_returns_nonnull YB_NONNULL(2) ModuleProc *LoadProc( | YB_NONNULL (2) inline _func &LoadProc(
| 从模块加载指定过程的指针。 更多...
template<typename _func >
| YB_NONNULL (1, 2) inline _func &LoadProc(const wchar_t *module
YF_API wstring | FetchModuleFileName (::HMODULE={}, YSLib::RecordLevel=YSLib::Err)
| 取模块映像路径。 更多...
YB_ATTR_nodiscard YB_STATELESS yconstfn | PDefH (bool, IsDirectory, FileAttributes attr) ynothrow ImplRet(attr &Directory) YB_ATTR_nodiscard YB_STATELESS inline PDefH(bool
| 判断 `FileAttributes` 是否指定目录。 更多...
YB_ATTR_nodiscard YB_STATELESS yconstfnconst ::WIN32_FIND_DATAA &d ynothrow | ImplRet (IsDirectory(FileAttributes(d.dwFileAttributes))) YB_ATTR_nodiscard YB_STATELESS inline PDefH(bool
| 判断 `::WIN32_FIND_DATAW` 指定的节点是否为目录。 更多...
YB_ATTR_nodiscard YB_STATELESS 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)
| 按打开的文件句柄归类节点从属的属性类别。 更多...
YF_API YB_STATELESS platform::NodeCategory | CategorizeNode (FileAttributes, unsigned long=0) ynothrow
| 按 FileAttributes 和重解析标签归类节点类别。 更多...
YB_STATELESS | PDefH (platform::NodeCategory, CategorizeNode, const ::WIN32_FIND_DATAA &d) ynothrow ImplRet(CategorizeNode(FileAttributes(d.dwFileAttributes)
| 按 `::WIN32_FIND_DATAA` 归类节点类别。 更多...
YB_STATELESS d dwReserved0 YB_STATELESS | PDefH (platform::NodeCategory, CategorizeNode, const ::WIN32_FIND_DATAW &d) ynothrow ImplRet(CategorizeNode(FileAttributes(d.dwFileAttributes)
| 按 `::WIN32_FIND_DATAW` 归类节点类别。 更多...
YB_STATELESS d dwReserved0 YB_STATELESS d dwReserved0 YF_API platform::NodeCategory | CategorizeNode (UniqueHandle::pointer) ynothrow
| 按打开的文件句柄归类节点类别。 更多...
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)) YB_NONNULL(1) inline PDefH(UniqueHandle
YF_API size_t | QueryFileLinks (UniqueHandle::pointer)
| 查询文件链接数。 更多...
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
bool | UnlockFile (UniqueHandle::pointer, std::uint64_t=0, std::uint64_t=std::uint64_t(-1)) 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)
| 取系统目录路径。 更多...
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)) YB_NONNULL(1) inline 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 const wchar_t * | YB_NONNULL (2, 3) inline PDefH(wstring

## 变量

YB_ATTR_nodiscard | MakePathStringU
const char * | proc
YB_ATTR_nodiscard YB_STATELESS yconstfn | IsDirectory
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
const wchar_t FileAccessRights FileShareMode FileAttributesAndFlags attributes_and_flags ynothrowv const wchar_t FileAccessRights CreationDisposition FileAttributesAndFlags | attributes_and_flags
YF_API | bool = {})
YF_API | unsigned = CP_UTF8
| UTF8ToWCS
const char *str string_view sv | WCSToUTF8
YF_API const wchar_t | FetchRegistryString
YF_API const wchar_t ::HKEY | h_parent
YF_API const wchar_t ::HKEY const wchar_t * | key_name

## 详细描述

平台扩展命名空间。

注解
  为便于移植，部分平台扩展接口保留至平台中立文件，依赖性按后者处理。

## 函数说明

## ◆ Attach()

template<class _iCOM >

void platform_ex::Attach | ( | COMPtr< _iCOM > & | ptr,
|  | typename COMPtr< _iCOM >::InterfaceType * | p
| ) |  |

在文件 Win32/include/YCLib/COM.h 第 382 行定义.

引用了 platform::p, ystdex::ref(), yassume , 以及 yunused.

函数调用图:

## ◆ CheckHResult()

inline ::HRESULT platform_ex::CheckHResult | ( | ::HRESULT | h | ) |

检查 ::HRESULT 值，若表示失败则抛出 COMException 。

返回
  表示成功的值。

自从
  build 563

在文件 Win32/include/YCLib/COM.h 第 89 行定义.

## ◆ ClearKeyStates()

void platform_ex::ClearKeyStates | ( |  | ) |

清除按键缓冲。

自从
  build 299

在文件 Input.cpp 第 159 行定义.

引用了 platform::Deref(), ystdex::reset() , 以及 yunseq.

函数调用图:

## ◆ Detach()

template<class _iCOM >

_iCOM* platform_ex::Detach | ( | COMPtr< _iCOM > & | ptr | ) |

在文件 Win32/include/YCLib/COM.h 第 396 行定义.

引用了 platform::p.

## ◆ FetchKeyDownState()

platform::KeyInput platform_ex::FetchKeyDownState | ( |  | ) |

取键按下状态。

自从
  build 299

在文件 Input.cpp 第 143 行定义.

被这些函数引用 YSLib::Devices::InputManager::DispatchInput() , 以及 platform::WaitForInput().

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

## ◆ FetchKeyState()

const platform::KeyInput & platform_ex::FetchKeyState | ( |  | ) |

取按键状态。

自从
  build 321

在文件 Input.cpp 第 127 行定义.

被这些函数引用 YSLib::Devices::InputManager::DispatchInput(), YSLib::Devices::InputManager::Update() , 以及 YSLib::DS::ShlDS::WrapForSwapScreens().

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

## ◆ FetchKeyUpState()

platform::KeyInput platform_ex::FetchKeyUpState | ( |  | ) |

取键释放状态。

自从
  build 299

在文件 Input.cpp 第 151 行定义.

被这些函数引用 YSLib::Devices::InputManager::DispatchInput().

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

## ◆ FetchOldKeyState()

const platform::KeyInput & platform_ex::FetchOldKeyState | ( |  | ) |

取上一次更新的按键状态。

自从
  build 321

在文件 Input.cpp 第 135 行定义.

## ◆ ImplRet() [5/8]

YB_ATTR_nodiscard const char16_t* s platform_ex::ImplRet | ( | platform::Nonnull(s) |  | ) | const &

## ◆ ImplRet() [6/8]

YB_ATTR_nodiscard const char16_t* s const u16string& s platform_ex::ImplRet | ( | s |  | ) | const

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

## ◆ MakePathStringU()

u16string platform_ex::MakePathStringU | ( | const char * | s | ) |

在文件 FileIO.cpp 第 1353 行定义.

引用了 CHRLib::s.

## ◆ operator!=() [1/3]

template<class _iCOM >

bool platform_ex::operator!= | ( | const COMPtr< _iCOM > & | x,
|  | std::nullptr_t |
| ) |  |

inline

在文件 Win32/include/YCLib/COM.h 第 357 行定义.

引用了 x.

## ◆ operator!=() [2/3]

template<class _iCOM1 , class _iCOM2 >

bool platform_ex::operator!= | ( | const COMPtr< _iCOM1 > & | x,
|  | const COMPtr< _iCOM2 > & | y
| ) |  |

inline

在文件 Win32/include/YCLib/COM.h 第 351 行定义.

引用了 x , 以及 YSLib::UI::y.

## ◆ operator!=() [3/3]

template<class _iCOM >

bool platform_ex::operator!= | ( | std::nullptr_t | ,
|  | const COMPtr< _iCOM > & | x
| ) |  |

inline

在文件 Win32/include/YCLib/COM.h 第 364 行定义.

引用了 x.

## ◆ operator<()

template<class _iCOM1 , class _iCOM2 >

bool platform_ex::operator< | ( | const COMPtr< _iCOM1 > & | x,
|  | const COMPtr< _iCOM2 > & | y
| ) |  |

inline

在文件 Win32/include/YCLib/COM.h 第 370 行定义.

引用了 x , 以及 YSLib::UI::y.

## ◆ operator==() [1/2]

template<class _iCOM >

bool platform_ex::operator== | ( | const COMPtr< _iCOM > & | x,
|  | std::nullptr_t |
| ) |  |

inline

在文件 Win32/include/YCLib/COM.h 第 338 行定义.

引用了 x.

## ◆ operator==() [2/2]

template<class _iCOM >

bool platform_ex::operator== | ( | std::nullptr_t | ,
|  | const COMPtr< _iCOM > & | x
| ) |  |

inline

在文件 Win32/include/YCLib/COM.h 第 344 行定义.

引用了 x.

## ◆ Reset()

template<class _iCOM >

unsigned long platform_ex::Reset | ( | COMPtr< _iCOM > & | ptr | ) |

在文件 Win32/include/YCLib/COM.h 第 406 行定义.

被这些函数引用 YSLib::UI::SequenceViewer::AdjustForContent().

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

## ◆ UpdateKeyStates()

void platform_ex::UpdateKeyStates | ( |  | ) |

更新按键状态。

自从
  build 299

在文件 Input.cpp 第 170 行定义.

引用了 YSLib::i , 以及 ystdex::cpp2017::swap().

被这些函数引用 YSLib::Devices::InputManager::Update() , 以及 platform::WaitForInput().

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

## ◆ YB_NONNULL() [1/5]

YB_ATTR_nodiscard platform_ex::YB_NONNULL | ( | 1 |  | ) |

构造适合表示路径的 `char16_t` 字符串。

自从
  build 706

注解
  字符类型非 `char16_t` 时转换。

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

## 变量说明

## ◆ MakePathStringU

YB_ATTR_nodiscard const char16_t *s platform_ex::MakePathStringU

在文件 FileIO.h 第 1438 行定义.

被这些函数引用 platform::HDirectory::operator u16string(), platform::ReadLink() , 以及 platform::ugetcwd().