Files
RedHotRoast-ios/HybridCLRData/LocalIl2CppData-OSXEditor/il2cpp/libil2cpp/os/Win32/Path.cpp
T

66 lines
1.6 KiB
C++
Raw Normal View History

2026-07-17 14:03:00 +08:00
#include "il2cpp-config.h"
#if IL2CPP_TARGET_WINDOWS
#include "WindowsHeaders.h"
#undef GetTempPath
#include "os/Environment.h"
#include "os/Path.h"
#include "utils/PathUtils.h"
#include "utils/StringUtils.h"
#include "WindowsHelpers.h"
#include <string>
EXTERN_C IMAGE_DOS_HEADER __ImageBase;
namespace il2cpp
{
namespace os
{
std::string Path::GetExecutablePath()
{
wchar_t buffer[MAX_PATH];
GetModuleFileNameW(nullptr, buffer, MAX_PATH);
return utils::StringUtils::Utf16ToUtf8(buffer);
}
std::string Path::GetApplicationFolder()
{
wchar_t buffer[MAX_PATH];
GetModuleFileNameW(reinterpret_cast<HMODULE>(&__ImageBase), buffer, MAX_PATH);
return utils::PathUtils::DirectoryName(utils::StringUtils::Utf16ToUtf8(buffer));
}
std::string Path::GetTempPath()
{
#if IL2CPP_TARGET_GAMECORE_XBOX
return "T:\\";
#else
WCHAR tempPath[MAX_PATH + 1];
::GetTempPathW(sizeof(tempPath) / sizeof(tempPath[0]), tempPath);
#if !IL2CPP_TARGET_WINDOWS_GAMES
::GetLongPathNameW(tempPath, tempPath, sizeof(tempPath) / sizeof(tempPath[0]));
#endif // !IL2CPP_TARGET_WINDOWS_GAMES
return utils::StringUtils::Utf16ToUtf8(tempPath);
#endif
}
bool Path::IsAbsolute(const std::string& path)
{
if (path[0] != '\0' && path[1] != '\0')
{
if (path[1] == ':' && path[2] != '\0' && (path[2] == '\\' || path[2] == '/'))
return true;
/* UNC paths */
else if (path[0] == '\\' && path[1] == '\\' && path[2] != '\0')
return true;
}
return false;
}
}
}
#endif