2
// Copyright 2019 The ANGLE Project Authors. All rights reserved.
3
// Use of this source code is governed by a BSD-style license that can be
4
// found in the LICENSE file.
6
// system_utils_win32.cpp: Implementation of OS-specific functions for Windows.
8
#include "system_utils.h"
15
bool UnsetEnvironmentVar(const char *variableName)
17
return (SetEnvironmentVariableA(variableName, nullptr) == TRUE);
20
bool SetEnvironmentVar(const char *variableName, const char *value)
22
return (SetEnvironmentVariableA(variableName, value) == TRUE);
25
std::string GetEnvironmentVar(const char *variableName)
27
std::array<char, MAX_PATH> oldValue;
29
GetEnvironmentVariableA(variableName, oldValue.data(), static_cast<DWORD>(oldValue.size()));
36
return std::string(oldValue.data());
40
class Win32Library : public Library
43
Win32Library(const char *libraryName, SearchType searchType)
45
char buffer[MAX_PATH];
46
int ret = snprintf(buffer, MAX_PATH, "%s.%s", libraryName, GetSharedLibraryExtension());
47
if (ret > 0 && ret < MAX_PATH)
51
case SearchType::ApplicationDir:
52
mModule = LoadLibraryA(buffer);
54
case SearchType::SystemDir:
55
mModule = LoadLibraryExA(buffer, nullptr, LOAD_LIBRARY_SEARCH_SYSTEM32);
61
~Win32Library() override
69
void *getSymbol(const char *symbolName) override
76
return reinterpret_cast<void *>(GetProcAddress(mModule, symbolName));
79
void *getNative() const override { return reinterpret_cast<void *>(mModule); }
82
HMODULE mModule = nullptr;
85
Library *OpenSharedLibrary(const char *libraryName, SearchType searchType)
87
return new Win32Library(libraryName, searchType);