хэндлы stdin,stdout для каждого процесса одинаковые (3,7) разные только хэндлы консоли при прописывании в peb-> process parameters хэндла консоли нужного приложения при попытке записи writefile вылетает ошибка 6 invalid handle. в wxp есть функция AttachConsole. в W2k ее нет(. В сорцах reactos не реализована. нид хэлп, в общем.
Инжект->GetStdHandle->DuplicateHandle. Упс, только это не пройдет - консольные хэндлы можно дупликатить только внутри процесса.
Конечно ошибка, если у тебя консоли нету, кто ж тебе даст писать то? AllocConsole надо вызывать, тогда она сама туда запишет эти три хендла (3,7,11), но они будут для твоего процесса. Полюбому чтобы писать в чужую консоль нужен инжект
Great да вишь в чем дело... ConsoleHandle он у кждого процесса с консолью разный. Было подозрение (судя по реализации в reactos) что пройдет вариант прописать себе чужой ConsoleHandle. Кстати, ошибка возникает и если консоль уже есть, а хэндл подменен.
При создании нового процесса: Код (Text): if (dwCreationFlags & DETACHED_PROCESS) { ProcessParameters->ConsoleHandle = (HANDLE)CONSOLE_DETACHED_PROCESS; } else if (dwCreationFlags & CREATE_NEW_CONSOLE) { ProcessParameters->ConsoleHandle = (HANDLE)CONSOLE_NEW_CONSOLE; } else if (dwCreationFlags & CREATE_NO_WINDOW) { ProcessParameters->ConsoleHandle = (HANDLE)CONSOLE_CREATE_NO_WINDOW; } else { ProcessParameters->ConsoleHandle = NtCurrentPeb()->ProcessParameters->ConsoleHandle; Видно это константы..
Дизасмом kernel32.BasePushProcessParameters выяснено, что данные константы равны соотв.: #define CONSOLE_DETACHED_PROCESS 0xFFFFFFFF #define CONSOLE_NEW_CONSOLE 0xFFFFFFFE #define CONSOLE_CREATE_NO_WINDOW 0xFFFFFFFD