Added protective technologies aimed to jam unsafe memory scanner of PunkBuster anticheat system and this way prevent this anticheat system from crashing graphics hardware when RivaTuner resides in memory.
Unfortunately new 1.7xx versions of PunkBuster client (debuted on 04.17.2007 with Battlefield 2142 client) caused major system stability issues in conjunction with wide range of applications accessing hardware via user mode MMIO address ranges.
Apart from scanning executable code new PunkBuster services also fully scan data memory ranges of each process, which is critically dangerous when it comes to applications accessing hardware registers via memory mapped I/O port user address ranges.
Unauthorized access to hardware mapped memory ranges performed by anticheat system's memory scanner may cause unpredictable results including hardware failures and freezing.
The problem is not specific to RivaTuner and also covers wide range of ATI and NVIDIA oriented diagnostic, overclocking and monitoring tools (e.g. ATITool, PowerStrip, HIS iTurbo etc) developed by third parties as well as by certified AIB/AIC partners.
The situation had been investigated with help of Battlefield 2142 gamers community and is fully documented in RivaTuner's support forums, however, many inexperienced gamers never visit forums or read documentation and still wrongly interpret these crashes as instability of third party tools including RivaTuner, hurting software reputation in different forums this way.
Unfortunately, the problem is still neither fixed nor documented by Evenbalance, furthermore, the situation got critically worse in the end on June 2007 when Evenbalance launched the same unsafe PunkBuster clients v1.7xx for America's Army, Call of duty, Call of duty 2, Enemy territory: Quake Wars, F.E.A.R etc.
Due to this sad reason I cannot longer wait for response and fix from Evenbalance and risk RivaTuner software reputation because of anticheat system issues. The following features are introduced and aimed to prevent RivaTuner from being improperly accessed by PunkBuster or any similar memory scanner:
* Process protection. Now RivaTuner reduces its own access privileges after startup to prevent simple user mode memory scanners from accessing RivaTuner's process virtual memory. This protective technique is enabled by default, but it can be disabled by setting ProtectProcess registry entry to 0.
* MMIO protection. Now RivaTuner hides MMIO range into kernel mode address space instead of user mode address space to prevent any other user mode application form accessing hardware improperly. This protective technique requires each graphics hardware access operation to be transferred via RivaTuner's kernel-mode driver, so it increases CPU performance hit caused by RivaTuner's background processes (e.g. hardware monitoring) with approximate factor of 3x - 5x. This protective technique is also enabled by default, but it can be disabled by setting ProtectMMIO registry entry to 0.
* Paged MMIO access mode. Now RivaTuner is able to use paged access to MMIO range, mapping only desired MMIO pages for access instead of mapping whole registers aperture. This mode is only available when MMIO protection mode is disabled. Paged acces mode can be activated by specifying power-of-two page size with MMIOPageSize registry entry.
Note: most of these protective techniques will be enabled by default until the problem is fixed in PunkBuster.
I realize that the protective techniques will cause side effects such as increased CPU load even to those who never play PunkBuster protected multiplayer games, but unfortunately I see no other ways of protecting software reputation against inexperienced gamers spreading rumors about RivaTuner instability.
It you don't play multiplayer PunkBuster protected games or if you're not affected by crashing caused by it then it is strongly recommended to disable all the protections mentioned above.