[*] NT: AuProcess this is better
This commit is contained in:
parent
b46390f83a
commit
ffd61d4d54
@ -295,14 +295,22 @@ namespace Aurora::Processes
|
|||||||
}
|
}
|
||||||
else if (this->startup_.fwdOut == EStreamForward::eCurrentProcess)
|
else if (this->startup_.fwdOut == EStreamForward::eCurrentProcess)
|
||||||
{
|
{
|
||||||
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
|
HANDLE hHandle = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||||
|
|
||||||
if (handle != INVALID_HANDLE_VALUE && handle)
|
if (hHandle != INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
SetHandleInformation(handle, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT);
|
HANDLE hTargetProcess = ::GetCurrentProcess();
|
||||||
|
|
||||||
this->bDontRelOut_ = true;
|
if (!::DuplicateHandle(hTargetProcess,
|
||||||
this->pipeStdOutWrite_ = handle;
|
hHandle,
|
||||||
|
hTargetProcess,
|
||||||
|
&this->pipeStdOutWrite_,
|
||||||
|
GENERIC_READ | GENERIC_WRITE,
|
||||||
|
TRUE,
|
||||||
|
0))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -347,14 +355,22 @@ namespace Aurora::Processes
|
|||||||
}
|
}
|
||||||
else if (this->startup_.fwdErr == EStreamForward::eCurrentProcess)
|
else if (this->startup_.fwdErr == EStreamForward::eCurrentProcess)
|
||||||
{
|
{
|
||||||
HANDLE handle = GetStdHandle(STD_ERROR_HANDLE);
|
HANDLE hHandle = GetStdHandle(STD_ERROR_HANDLE);
|
||||||
|
|
||||||
if (handle != INVALID_HANDLE_VALUE && handle)
|
if (hHandle != INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
SetHandleInformation(handle, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT);
|
HANDLE hTargetProcess = ::GetCurrentProcess();
|
||||||
|
|
||||||
this->bDontRelErr_ = true;
|
if (!::DuplicateHandle(hTargetProcess,
|
||||||
this->pipeStdErrWrite_ = handle;
|
hHandle,
|
||||||
|
hTargetProcess,
|
||||||
|
&this->pipeStdErrWrite_,
|
||||||
|
GENERIC_READ | GENERIC_WRITE,
|
||||||
|
TRUE,
|
||||||
|
0))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -399,14 +415,22 @@ namespace Aurora::Processes
|
|||||||
}
|
}
|
||||||
else if (this->startup_.fwdIn == EStreamForward::eCurrentProcess)
|
else if (this->startup_.fwdIn == EStreamForward::eCurrentProcess)
|
||||||
{
|
{
|
||||||
HANDLE handle = GetStdHandle(STD_ERROR_HANDLE);
|
HANDLE hHandle = GetStdHandle(STD_INPUT_HANDLE);
|
||||||
|
|
||||||
if (handle != INVALID_HANDLE_VALUE && handle)
|
if (hHandle != INVALID_HANDLE_VALUE)
|
||||||
{
|
{
|
||||||
SetHandleInformation(handle, HANDLE_FLAG_INHERIT, HANDLE_FLAG_INHERIT);
|
HANDLE hTargetProcess = ::GetCurrentProcess();
|
||||||
|
|
||||||
this->bDontRelIn_ = true;
|
if (!::DuplicateHandle(hTargetProcess,
|
||||||
this->pipeStdInRead_ = handle;
|
hHandle,
|
||||||
|
hTargetProcess,
|
||||||
|
&this->pipeStdInRead_,
|
||||||
|
GENERIC_READ,
|
||||||
|
TRUE,
|
||||||
|
0))
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user