@@ -178,6 +178,11 @@ class ProcessLauncher
178178 launcher.AddOption (wslrelay::disable_telemetry_option);
179179 }
180180
181+ if (WI_IsFlagSet (Flags, LaunchWslRelayFlags::ConnectPipe))
182+ {
183+ launcher.AddOption (wslrelay::connect_pipe_option);
184+ }
185+
181186 return launcher.Launch (UserToken, WI_IsFlagSet (Flags, LaunchWslRelayFlags::HideWindow));
182187}
183188} // namespace
@@ -501,11 +506,10 @@ bool wsl::windows::common::helpers::IsWslSupportInterfacePresent()
501506void wsl::windows::common::helpers::LaunchDebugConsole (
502507 _In_ LPCWSTR PipeName, _In_ bool ConnectExistingPipe, _In_ HANDLE UserToken, _In_opt_ HANDLE LogFile, _In_ bool DisableTelemetry)
503508{
504- wslrelay::RelayMode relayMode ;
509+ LaunchWslRelayFlags flags{} ;
505510 wil::unique_hfile pipe;
506511 if (ConnectExistingPipe)
507512 {
508- relayMode = wslrelay::RelayMode::DebugConsoleRelay;
509513 // Connect to an existing pipe. The connection should be:
510514 // Asynchronous (FILE_FLAG_OVERLAPPED)
511515 // Anonymous (SECURITY_SQOS_PRESENT | SECURITY_ANONYMOUS)
@@ -515,21 +519,20 @@ void wsl::windows::common::helpers::LaunchDebugConsole(
515519 }
516520 else
517521 {
518- relayMode = wslrelay::RelayMode::DebugConsole;
519- // Create a new pipe server. The pipe should be:
522+ // Create a new pipe server the child process will connect to. The pipe should be:
520523 // Bi-directional: PIPE_ACCESS_DUPLEX
521524 // Asynchronous: FILE_FLAG_OVERLAPPED
522525 // Raw: PIPE_TYPE_BYTE | PIPE_READMODE_BYTE
523526 // Blocking: PIPE_WAIT
527+ WI_SetFlag (flags, LaunchWslRelayFlags::ConnectPipe);
524528 pipe.reset (CreateNamedPipeW (
525529 PipeName, (PIPE_ACCESS_DUPLEX | FILE_FLAG_OVERLAPPED), (PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT), 1 , LX_RELAY_BUFFER_SIZE, LX_RELAY_BUFFER_SIZE, 0 , nullptr ));
526530 }
527531
528532 THROW_LAST_ERROR_IF (!pipe);
529533
530- LaunchWslRelayFlags flags{};
531534 WI_SetFlagIf (flags, LaunchWslRelayFlags::DisableTelemetry, DisableTelemetry);
532- wil::unique_handle info{LaunchWslRelay (relayMode , LogFile, nullptr , pipe.get (), {}, nullptr , UserToken, flags)};
535+ wil::unique_handle info{LaunchWslRelay (wslrelay::RelayMode::DebugConsole , LogFile, nullptr , pipe.get (), {}, nullptr , UserToken, flags)};
533536}
534537
535538[[nodiscard]] wil::unique_handle wsl::windows::common::helpers::LaunchInteropServer (
@@ -550,7 +553,7 @@ void wsl::windows::common::helpers::LaunchKdRelay(_In_ LPCWSTR PipeName, _In_ HA
550553
551554 THROW_LAST_ERROR_IF (!pipe);
552555
553- LaunchWslRelayFlags flags{} ;
556+ LaunchWslRelayFlags flags = LaunchWslRelayFlags::ConnectPipe ;
554557 WI_SetFlagIf (flags, LaunchWslRelayFlags::DisableTelemetry, DisableTelemetry);
555558 wil::unique_handle info{LaunchWslRelay (wslrelay::RelayMode::KdRelay, nullptr , nullptr , pipe.get (), Port, ExitEvent, UserToken, flags)};
556559}
0 commit comments