MEMORY_BASIC_INFORMATION struct holds a "State" property that is one of the following:
MEM_RESERVE, MEM_COMMIT, MEM_FREE
You can only use VirtualProtect on pages that are actually allocated for use, i.e. the MEM_COMMIT type.
Reserved and free memory pages cannot be read or written to and so you cannot change their protection flags.
A process may take ...