Вообщем суть проблемы: Имеем драйвер режима ядра. В момент старта (это после входа пользователя) он ищет winlogon.exe, аттачится к нему, и заставляет какой-нибудь поток winlogon'а выполнить шэлкод. Шэлкод создает поток, из этого потока winlogon коннектится к этому драйверу и поидее должен начать передавать данные которые он получать с использованием апи (их около 10-ка) из user32.dll и msvcrt.dll, но почему-то этого не делает. При проделывании того же самого с explorer.exe все работает ок. Шэлкод привести немогу, он закрытый и занимает кучу места, может кто подскажет из-за чего такое может происходить и как такое исправить?
Винлогон работает с правами System, возможно дело в этом. А какие коды возврата и GetLastError несработавших API ?
Не совсем обычный, процесс этот под пользователем System. Ошибки в коде нет - это раз на 50 проверено под отладчиками. Поток создается, сегодня утром изучал под Soft-Ice'ом, там в потоке int 3 стоит, он срабатывает, но вот фишка - одна из функций - GetForegroundWindow не работает, то есть возращает ноль и код идет на выход. Слышал я что процесс этот какой-то особый и он не интерактивный, но зато стартует рано. В ReactOS по принципу NT указатель на это окно хранится в переменной win32k.sys (смотрел через IDA win32k.sys на самом деле так и есть). То есть теоретически все должно работать GetForegroundWindow возвращает значение этой переменной.
Еще бы, ведь винлогон работает на отдельном десктопе WinSta0\Winlogon, на нем может и не быть никаких окон. Если ты хочешь работать с окнами на интерактивном десктопе то нужно к нему подключаться.