MCPcopy Create free account
hub / github.com/LUX-Core/lux / setPrivilege

Function setPrivilege

src/crypto/RandomX/virtual_memory.cpp:60–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58}
59
60void setPrivilege(const char* pszPrivilege, BOOL bEnable) {
61 HANDLE hToken;
62 TOKEN_PRIVILEGES tp;
63 BOOL status;
64 DWORD error;
65
66 if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
67 throw std::runtime_error(getErrorMessage("OpenProcessToken"));
68
69 if (!LookupPrivilegeValue(NULL, pszPrivilege, &tp.Privileges[0].Luid))
70 throw std::runtime_error(getErrorMessage("LookupPrivilegeValue"));
71
72 tp.PrivilegeCount = 1;
73
74 if (bEnable)
75 tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
76 else
77 tp.Privileges[0].Attributes = 0;
78
79 status = AdjustTokenPrivileges(hToken, FALSE, &tp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
80
81 error = GetLastError();
82 if (!status || (error != ERROR_SUCCESS))
83 throw std::runtime_error(getErrorMessage("AdjustTokenPrivileges"));
84
85 if (!CloseHandle(hToken))
86 throw std::runtime_error(getErrorMessage("CloseHandle"));
87}
88#endif
89
90void* allocMemoryPages(std::size_t bytes) {

Callers 1

allocLargePagesMemoryFunction · 0.85

Calls 1

getErrorMessageFunction · 0.85

Tested by

no test coverage detected