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

YSTest PreAlpha_b700_20160611 The YSLib Test Project

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

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

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

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

## 类

struct | GlobalDelete
| 全局存储删除器。 更多...
class | GlobalLocked
| 全局锁定存储。 更多...
struct | LocalDelete
| 局部存储删除器。 更多...
class | RegistryKey
| 注册表键。 更多...
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 YB_STATELESS int | ConvertToErrno (ErrorCode) ynothrow
| 转换 Win32 错误为 errno 。 更多...
YF_API wstring | FetchModuleFileName (::HMODULE={})
| 取模块映像路径。 更多...
YF_API bool | CheckWine ()
| 判断是否在 Wine 环境下运行。 更多...
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
| PDefH (wstring, FetchCPFileNameFromRegistry, int cp) ImplRet(FetchNLSItemFromRegistry(to_wstring(cp).c_str())) YF_API const unsigned short *FetchDBCSOffset(int) ynothrow
| 取注册表中指定代码页的 NLS 文件路径。 更多...
YF_API pair< VolumeID, FileID > | QueryFileNodeID (UniqueHandle::pointer)
| 查询文件标识。 更多...
YF_API FileID | QueryFileNodeID (const wchar_t *, bool={})
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 历元起始度量的时间间隔为文件时间。 更多...
YF_API wstring | FetchSystemPath (size_t=MAX_PATH)
| 取系统目录路径。 更多...
YF_API wstring | FetchWindowsPath (size_t=MAX_PATH)
| 取系统目录路径。 更多...

## 变量

| IsDirectory
const ::WIN32_FIND_DATAW &d ynothrow ImplRet(d.dwFileAttributes &Directory) YF_API platform YF_API platform::NodeCategory | CategorizeNode (UniqueHandle::pointer) ynothrowv
| 按 `::WIN32_FIND_DATAW` 归类节点类别。 更多...
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 第 54 行定义.

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

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

自从
  build 651

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

## 枚举类型说明

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 第 346 行定义.

## 函数说明

YF_API bool platform_ex::Windows::CheckWine | ( |  | ) |

判断是否在 Wine 环境下运行。

注解
  检查 HKEY_CURRENT_USER 和 HKEY_LOCAL_MACHINE 下的 Software 键实现。

自从
  build 435

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 | = `{}` | ) |

取模块映像路径。

自从
  build 694

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

取系统目录路径。

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

自从
  build 593

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

取系统目录路径。

自从
  build 693

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) |  | ) |

platform_ex::Windows::PDefH | ( | wstring | ,
|  | FetchCPFileNameFromRegistry | ,
|  | int | cp
| ) |  | const

inline

取注册表中指定代码页的 NLS 文件路径。

自从
  build 593

取指定双字节字符集代码页的映射表。

返回
  成功则为映射表的起始指针，否则为空指针。

注解
  非双字节字符集视为失败。

自从
  build 552

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().

这是这个函数的调用关系图:
template<typename _func >

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

inline

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

前置条件
  参数非空。

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

参考 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 第 556 行定义.

const ::WIN32_FIND_DATAW& d ynothrow ImplRet (d.dwFileAttributes & Directory) YF_API platform YF_API platform::NodeCategory platform_ex::Windows::CategorizeNode(UniqueHandle::pointer) ynothrowv

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

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

自从
  build 658

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

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

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

返回
  指定句柄非打开的文件或调用失败时 NodeCategory::Invalid ， 否则为对应的其它节点类别。

自从
  build 658

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

参考自 platform::HDirectory::GetNodeCategory().

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

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

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

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

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

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

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

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

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

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

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

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

platform_ex::Windows::IsDirectory

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

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

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

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

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

const char* platform_ex::Windows::proc

初始值:
{
return LoadProc<_func>([&](const char* msg) YB_NONNULL(1){ const auto res(GetModuleHandleW(module)); if(YB_UNLIKELY(!res)) { const auto err(::GetLastError()); throw platform_ex::Windows::Win32Exception(err, "GetModuleHandleW", msg); }; return res; }(yfsig), proc)
yfsig
#define yfsig
展开为表示函数签名的预定义变量的宏。
Definition: ydef.h:702
YB_UNLIKELY
#define YB_UNLIKELY(_expr)
分支预测提示。
Definition: ydef.h:438
platform_ex::Windows::RegistryKey::YB_NONNULL
#define YB_NONNULL(...)
取注册表字符串值。
platform_ex::Windows::proc
const char * proc
Definition: MinGW32.h:230

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

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

const wchar_t FileAccessRights FileShareMode platform_ex::Windows::shared_mode

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