Error Handling & Global Variables
Error Handling
The Styx API uses the vmxroot_error_t enumeration for error codes. Here are some common error codes defined as macros:
STY_SUCCESSSTY_PML4E_NOT_PRESENTSTY_PDPTE_NOT_PRESENTSTY_PDE_NOT_PRESENTSTY_PTE_NOT_PRESENTSTY_TRANSLATE_FAILURESTY_INVALID_SELF_REF_PML4ESTY_INVALID_MAPPING_PML4ESTY_INVALID_HOST_VIRTUALSTY_INVALID_GUEST_PHYSICALSTY_INVALID_GUEST_VIRTUALSTY_PAGE_TABLE_INIT_FAILED
These error codes can be used to handle specific error conditions in your code. For example:
ScyHV::vmxroot_error_t result = ScyHV::some_function();
if (result != SCY_SUCCESS) {
switch(result) {
case SCY_PML4E_NOT_PRESENT:
std::cerr << "PML4E not present" << std::endl;
break;
case SCY_TRANSLATE_FAILURE:
std::cerr << "Address translation failed" << std::endl;
break;
// Handle other error codes...
default:
std::cerr << "Unknown error occurred" << std::endl;
}
}Global Variables
pmem_ranges
A map of physical memory ranges.
Type: std::map<std::uintptr_t, std::uintptr_t>
Description: This map contains information about the physical memory ranges available in the system. The key represents the start address of a range, and the value represents the size of the range.
Example:
for (const auto& range : Styx::pmem_ranges) {
std::cout << "Range start: 0x" << std::hex << range.first
<< ", size: 0x" << range.second << std::endl;
}This global variable can be useful for:
Iterating through available physical memory ranges
Checking if a physical address falls within a valid range
Determining the total amount of physical memory available
Last updated