Maybe a minimal example helps better understanding what my exact problem is
The call to VirtualAlloc will fail if the memory range is already reserved for something else.
(LPVOID)0x40000000, //reserve memory at a designated address 0x40000000
0x10000000, //size of memory to reserve is 256MB
MEM_RESERVE, //reserve the memory for myself, OS can't use it for anything else afterwards
PAGE_EXECUTE_READWRITE //security flag, doesn't matter here
The biggest reason that this range is already reserved is dynamic loaded DLL modules. And I can't find a way to prevent the loader to load any DLL module to 0x40000000. (This address is just an example)