The VirtualProtect function lets you change the protection of a page, but all it can do is replace the current protections with the protections you specify, returning the old protections. There is no way to add a protection to a page. In other words, there is an InterlockedExchange for page protections, but no InterlockedOr. Why...