Use SetKMode(TRUE) - this would make your thread run in kernel mode.
In old days of WM2003[se] both user and kernel code ran in kernel mode, so each process could access kernel data.
In WM5 MS designed a more "secure" OS. That is why it recommends protecting kernel address space if the CPU supports it. And this is on by default (this is one of the reasons why WM5 is slower then previous OSes).
The SetProcPermissions(-1) may also help - this function allows you to access address space of other processes. Both these 2 functions are protected. But it is not a problem
