А надо всё это для того, чтобы в контексте csrss.exe получить KeServiceDescriptorTableShadow.
Тебе это в ядре надо? Это делается по-другому, через дизасм экспортов ядра, например, KeAddSystemServiceTable(). А если в режиме пользователя надо и если не малваре пишешь, тогда ещё проще, используя
Debug Help API выкачиваешь символы с сайта Microsoft для данного ядра и в них уже ищешь RVA символа "KeServiceDescriptorTableShadow", потом добавить базу ядра и получишь VA указателя на таблицу.
Я немного не то сказал, лезть в контекст csrss.exe нужно чтобы сделать подмену функций из KeServiceDescriptorTableShadow на свои. В контексте ядра случается BDOS при попытке даже прочитать содержимое KeServiceDescriptorTableShadow->win32k.ServiceTable[function_id], нужно лезть в контекст "графического" приложения.
Добавлено через 8 минут и 39 секунд:NtQuerySystemInformation ранее была недокументированной функцией. Но по крайней мере с MSDN2008 она уже документируется у Microsoft.
Да, она документирована, но только для UserMode. А в WDK (Built on December 01, 2009) её нет, соответственно и в заголовочных файлах, используемых для компиляции драйверов, её тоже нет. Если подключать ntdll.h, то куча ошибок вываливает.