Create a MemoryObject kernel object. Userspace can only create "blank" MemoryObjects (that are allocated to free, conventional physical memory). MemoryObjects that point to special objects (e.g. framebuffer data, PCI configuration spaces) must be created by the kernel.
a- the virtual address to map the MemoryObject at
b- the size of the MemoryObject's memory area (in bytes)
0: set if the memory should be writable
1: set if the memory should be executable
d- a pointer to which the kernel will write the physical address to which the MemoryObject was allocated. Ignored if null.
Uses the standard representation to return a
Result<Handle, MemoryObjectError> method. Error status
1if the given virtual address is invalid
2if the given set of flags are invalid
3if memory of the requested size could not be allocated
4if the pointer to write the allocated physical address to was not valid