25 static NTSTATUS StdOutNetworkTracertThreadStart(
 
   56     return STATUS_SUCCESS;
 
   63     HANDLE pipeWriteHandle = INVALID_HANDLE_VALUE;
 
   66     if (CreatePipe(&context->
PipeReadHandle, &pipeWriteHandle, NULL, 0))
 
   68         HANDLE threadHandle = NULL;
 
   69         STARTUPINFO startupInfo = { 
sizeof(startupInfo) };
 
   73         startupInfo.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
 
   74         startupInfo.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
 
   75         startupInfo.hStdOutput = pipeWriteHandle;
 
   76         startupInfo.hStdError = pipeWriteHandle;
 
   77         startupInfo.wShowWindow = SW_HIDE;
 
   82                 L
"%s\\system32\\tracert.exe %s",
 
   83                 USER_SHARED_DATA->NtSystemRoot,
 
   91                 L
"%s\\system32\\tracert.exe -d %s",
 
   92                 USER_SHARED_DATA->NtSystemRoot,
 
  101         NtSetInformationObject(
 
  122         NtClose(pipeWriteHandle);
 
  125         if (threadHandle = 
PhCreateThread(0, StdOutNetworkTracertThreadStart, context))
 
  126             NtClose(threadHandle);
 
  129     return STATUS_SUCCESS;