If you think that Microsoft has already delivered all it has to give with Windows Vista Service Pack 1, Windows XP Service Pack 3 and Windows Server 208, then you are mistaken. The fact of the matter is that despite having produced a consistent and comprehensive collection of documentation on both service packs and its last 32-bit server operating system, Microsoft has also managed to omit a few details. Case in point, the introduction of new application programing interfaces in Vista SP1, XP SP3 and Windows Server 2008, designed to increase the usage of DEP in third-party applications, integrated with the client and server platforms. "In the interests of helping secure the platform, we want more people to opt-in to using Data Execution Prevention (aka DEP aka NX), and we have lowered the barrier to entry for application developers in Windows Vista SP1, Windows XP SP3 and Windows Server 2008. We've added some new APIs that allow a developer to set DEP on their process at runtime rather than using linker options. The new APIs also give developers some more flexibility if your application uses an older version of the Abstract Type Library (ATL)," revealed Michael Howard, Senior Security Program Manager in the Security Engineering group at Microsoft. Howard emphasized the fact that out of all the APIs, SetProcessDEPPolicy carries with it the most relevance. This specific item is intimately connected with the settings of the DEP policy for the running process. Essentially, DEP is a set of both hardware and software technologies that are focused on monitoring the usage of the system memory. DEP offers protection against malicious code exploits by ensuring that programs use the system memory in a correct manner. A program running code from memory incorrectly will result in DEP terminating the said application. "There are three main reasons to use these new APIs. If your application has some form of in-process extensibility mechanism, and some applications might use older ATL, then you can enable DEP for your process, and the extensibility mechanisms using ATL will function correctly. If you support DEP but want to allow customers to disable DEP if there are serious compatibility issues, then this is the API to use because the argument can be a configuration option. If your application uses an old version of ATL, and you still want to do the right thing by DEP, then use this function. Of course, you really ought to use an updated version of ATL". Source of information - News.softpedia.com