blob: a0ed2c821bcca12074d3461267e0f10343ec27a1 [file] [log] [blame]
//
// Copyright 2019 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// system_utils_winuwp.cpp: Implementation of OS-specific functions for Windows UWP
#include "common/debug.h"
#include "system_utils.h"
#include <stdarg.h>
#include <windows.h>
#include <array>
#include <string>
namespace angle
{
bool SetEnvironmentVar(const char *variableName, const char *value)
{
// Not supported for UWP
return false;
}
std::string GetEnvironmentVar(const char *variableName)
{
// Not supported for UWP
return "";
}
void *OpenSystemLibraryWithExtensionAndGetError(const char *libraryName,
SearchType searchType,
std::string *errorOut)
{
char buffer[MAX_PATH];
int ret = snprintf(buffer, MAX_PATH, "%s.%s", libraryName, GetSharedLibraryExtension());
if (ret <= 0 || ret >= MAX_PATH)
{
fprintf(stderr, "Error loading shared library: 0x%x", ret);
return nullptr;
}
HMODULE libraryModule = nullptr;
switch (searchType)
{
case SearchType::ModuleDir:
if (errorOut)
{
*errorOut = libraryName;
}
libraryModule = LoadPackagedLibrary(Widen(libraryName).c_str(), 0);
break;
case SearchType::SystemDir:
case SearchType::AlreadyLoaded:
// Not supported in UWP
break;
}
return reinterpret_cast<void *>(libraryModule);
}
namespace
{
class UwpPageFaultHandler : public PageFaultHandler
{
public:
UwpPageFaultHandler(PageFaultCallback callback) : PageFaultHandler(callback) {}
~UwpPageFaultHandler() override {}
bool enable() override;
bool disable() override;
};
bool UwpPageFaultHandler::disable()
{
UNIMPLEMENTED();
return true;
}
bool UwpPageFaultHandler::enable()
{
UNIMPLEMENTED();
return true;
}
} // namespace
bool ProtectMemory(uintptr_t start, size_t size)
{
UNIMPLEMENTED();
return true;
}
bool UnprotectMemory(uintptr_t start, size_t size)
{
UNIMPLEMENTED();
return true;
}
size_t GetPageSize()
{
UNIMPLEMENTED();
return 4096;
}
PageFaultHandler *CreatePageFaultHandler(PageFaultCallback callback)
{
return new UwpPageFaultHandler(callback);
}
uint64_t GetProcessMemoryUsageKB()
{
// Not available on UWP.
return 0;
}
} // namespace angle