У меня есть код для вызова CreateProcess()
и получения дескрипторов для StdIn & StdOut.
Я использовал его с CMD, и он отлично работает. Тем не менее, я запустил PowerShell
с ним и PowerShell не играл приятно. Это в основном эксплуатировал мою программу
и взял на себя ответственность.
Это привело меня к отладке, и я обнаружил, что, как только ReadFile()
Функция читает вывод PowerShells, все кончено. Интересно.
Итак, мой вопрос: в каком формате PowerShell отправляет вывод в StdOut?
Я слышал, что он говорит в «Объектах», но, похоже, выводит необработанный машинный код.
DWORD WINAPI threadRead(HANDLE *cmdStd_OUT_RD) {
char *chBuff = malloc(READ_BUFFER_SM);
int check = 0;
for (;;) {
dwRead = 0; //Global Variable
check = 0;
memset(chBuff, 0, READ_BUFFER_SM);
puts("Reading..\n");
check = ReadFile(*cmdStd_OUT_RD, chBuff, READ_BUFFER_SM, &dwRead, NULL);
if (check || dwRead > 0) {
printf("Display: %s\n", chBuff);
}
}
return 0;
}
Кроме того, существует ли другая функция Read
, безопасная для PowerShell?
Редактировать: Я чувствую, что он посылает байты, поэтому может попробовать использовать void
. Будет обновлять после.
Редактировать: Нет, это все еще вступает во владение. Думаю, ReadFile()
не может прочитать его StdOut.