diff --git a/.pipelines/nuget-stage.yml b/.pipelines/nuget-stage.yml
index f38c29de4..2700ed93e 100644
--- a/.pipelines/nuget-stage.yml
+++ b/.pipelines/nuget-stage.yml
@@ -35,7 +35,7 @@ stages:
displayName: Download nuget artifacts
inputs:
artifact: "drop_wsl_package"
- path: drop
+ path: $(Build.SourcesDirectory)\drop
# Note: this task might fail if there's been no commits between two nightly pipelines, which is fine.
- ${{ each package in parameters.nugetPackages }}:
@@ -43,7 +43,7 @@ stages:
displayName: Push nuget/${{ package }}.*.nupkg
inputs:
command: 'push'
- packagesToPush: drop/bin/nuget/${{ package }}.*.nupkg
+ packagesToPush: $(Build.SourcesDirectory)\drop\nuget\${{ package }}.$(WSL_NUGET_PACKAGE_VERSION).nupkg
nuGetFeedType: 'internal'
publishVstsFeed: wsl
allowPackageConflicts: ${{ parameters.isNightly }}
\ No newline at end of file
diff --git a/.pipelines/package-stage.yml b/.pipelines/package-stage.yml
index d3f2dc0a2..c421606d3 100644
--- a/.pipelines/package-stage.yml
+++ b/.pipelines/package-stage.yml
@@ -82,7 +82,7 @@ stages:
New-Item -ItemType Directory -Path $dest -Force
Copy-Item "$(Pipeline.Workspace)\drop_$($arch.platform)\installer\installer.$($arch.platform).msix" "$dest\installer.msix"
Copy-Item "$(Pipeline.Workspace)\drop_$($arch.platform)\sdk\$($arch.platform)\wslcsdk.lib" "$dest\wslcsdk.lib"
- Copy-Item "$(Pipeline.Workspace)\drop_$($arch.platform)\sdk\$($arch.platform)\wslcsdk.dll" "$dest\wslcsdk.dll"
+ Copy-Item "$(Pipeline.Workspace)\drop_$($arch.platform)\sdk\$($arch.platform)\wslcsdk.dll" "$dest\wslcsdk.dll"
}
# Copy MSIs to the output bundle directory
diff --git a/cgmanifest.json b/cgmanifest.json
index d49f7275e..f81e699f3 100644
--- a/cgmanifest.json
+++ b/cgmanifest.json
@@ -59,14 +59,14 @@
"version": "0.9.0",
"downloadUrl": "https://github.com/jbeder/yaml-cpp/releases/download/yaml-cpp-0.9.0/yaml-cpp-yaml-cpp-0.9.0.tar.gz",
"hash": "sha256:298593d9c440fd9034b8b193d96318b76d49bc97c6ceadb7b0836edf0b6d7539"
-
- }
- }
- },
- {
- "component": {
- "type": "other",
- "other": {
+
+ }
+ }
+ },
+ {
+ "component": {
+ "type": "other",
+ "other": {
"name": "GSL",
"version": "4.0.0",
"downloadUrl": "https://github.com/microsoft/GSL/archive/refs/tags/v4.0.0.tar.gz",
diff --git a/diagnostics/collect-wsl-logs.ps1 b/diagnostics/collect-wsl-logs.ps1
index 31323cf4e..02fdff72b 100644
--- a/diagnostics/collect-wsl-logs.ps1
+++ b/diagnostics/collect-wsl-logs.ps1
@@ -177,8 +177,12 @@ if (Test-Path $wslconfig)
Copy-Item $wslconfig $folder | Out-Null
}
+# Collect high-level WSL install log (written by WriteInstallLog() in install.cpp)
Copy-Item "C:\Windows\temp\wsl-install-log.txt" $folder -ErrorAction ignore
+# Collect MSI verbose install log (preserved on failure by wsl --update or WslInstaller service).
+Copy-Item "$env:TEMP\wsl-install-logs.txt" $folder -ErrorAction ignore
+
get-appxpackage MicrosoftCorporationII.WindowsSubsystemforLinux -ErrorAction Ignore > $folder/appxpackage.txt
get-acl "C:\ProgramData\Microsoft\Windows\WindowsApps" -ErrorAction Ignore | Format-List > $folder/acl.txt
Get-WindowsOptionalFeature -Online > $folder/optional-components.txt
diff --git a/distributions/DistributionInfo.json b/distributions/DistributionInfo.json
index 5999fa634..28d13b737 100644
--- a/distributions/DistributionInfo.json
+++ b/distributions/DistributionInfo.json
@@ -60,12 +60,12 @@
"FriendlyName": "openSUSE Tumbleweed",
"Default": true,
"Amd64Url": {
- "Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20260106.0/openSUSE-Tumbleweed-20260103.x86_64-1.224-Build1.224.wsl",
- "Sha256": "0x394be699da2821b331355f3541e237aa3aa00bc4068f33283d68303d8336d484"
+ "Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20260423.0/openSUSE-Tumbleweed-20260422.x86_64-2.97-Build2.97.wsl",
+ "Sha256": "0xc0dcf707276626e7a6227404c6a1e351dfdb9d39f2538d2b8a78a2c2e41f5912"
},
"Arm64Url": {
- "Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20260106.0/openSUSE-Tumbleweed-20260103.aarch64-2.195-Build2.195.wsl",
- "Sha256": "0xbcbb88e957091c425ecb42f3076b8882b5976fd94885e453afaee40de3b79470"
+ "Url": "https://github.com/openSUSE/WSL-instarball/releases/download/v20260423.0/openSUSE-Tumbleweed-20260422.aarch64-3.82-Build3.82.wsl",
+ "Sha256": "0x70d02e702b7788c494ad785bc3987ac1361f263af99d2c8180aac269cf0a9747"
}
},
{
@@ -325,8 +325,8 @@
"StoreAppId": "9MSSK2ZXXN11",
"Amd64": true,
"Arm64": true,
- "Amd64PackageUrl": "https://github.com/openSUSE/WSL-instarball/releases/download/v20260106.0/openSUSE-Tumbleweed-20260103-WSL.x86_64-26003.9.1368.0-Build9.1368.appx",
- "Arm64PackageUrl": "https://github.com/openSUSE/WSL-instarball/releases/download/v20260106.0/openSUSE-Tumbleweed-20260103-WSL.aarch64-26003.9.741.0-Build9.741.appx",
+ "Amd64PackageUrl": "https://github.com/openSUSE/WSL-instarball/releases/download/v20260423.0/openSUSE-Tumbleweed-20260422-WSL.x86_64-26112.10.203.0-Build10.203.appx",
+ "Arm64PackageUrl": "https://github.com/openSUSE/WSL-instarball/releases/download/v20260423.0/openSUSE-Tumbleweed-20260422-WSL.aarch64-26112.10.154.0-Build10.154.appx",
"PackageFamilyName": "46932SUSE.openSUSETumbleweed_022rs5jcyhyac"
}
]
diff --git a/localization/strings/cs-CZ/Resources.resw b/localization/strings/cs-CZ/Resources.resw
index 642245948..080b20409 100644
--- a/localization/strings/cs-CZ/Resources.resw
+++ b/localization/strings/cs-CZ/Resources.resw
@@ -744,6 +744,11 @@ Informace najdete na https://aka.ms/wslinstall
Spuštění ladicího prostředí vyžaduje spuštění wsl.exe jako správce.
+
+ Windows Admin Protection je povolená a vaše distribuce se můžou zaregistrovat pod jiným účtem.
+Další informace o Admin Protection najdete na https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Proces instalace pro distribuci '{}' selhal s ukončovacím kódem: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ Návrat k sítím NAT.
Verze Systému Windows {}. {} nemá požadované funkce.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ Protokol IPv6 je na hostiteli zakázán nepodporovaným způsobem (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Brána firewall technologie Hyper-V není podporována.
@@ -1877,6 +1886,41 @@ K dalším možnostem VS Code Remote můžete přistupovat také prostřednictv
Počet milisekund, po které je virtuální počítač nečinný, než se vypne.
+
+ Použít změny
+
+
+ Je potřeba vypnout WSL
+
+
+ Změny nastavení WSL vyžadují k dokončení vypnutí a restartování WSL. Po vypnutí se ukončí všechny aktivní relace WSL.
+
+
+ Vypnout WSL teď
+
+
+ Později
+
+
+ Nepovedlo se použít změny
+
+
+ Zavřít
+
+
+ Nepovedlo se uložit čekající změny nastavení. Kód chyby: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Nastavení se uložila, ale vypnutí WSL se nezdařilo: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Zapnuto
+
+
+ Vypnuto
+
Vytvářejte, spouštějte, laďte a profilujte své aplikace běžící na WSL z Visual Studia
diff --git a/localization/strings/da-DK/Resources.resw b/localization/strings/da-DK/Resources.resw
index f8727c206..93d4c41a5 100644
--- a/localization/strings/da-DK/Resources.resw
+++ b/localization/strings/da-DK/Resources.resw
@@ -744,6 +744,11 @@ Besøg https://aka.ms/wslinstall for at få flere oplysninger
Kørsel af fejlfindingsshell kræver, at der køres wsl.exe som administrator.
+
+ Windows Admin Protection er aktiveret, og dine uddelinger kan være registreret under en anden konto.
+Du kan få flere oplysninger om Admin Protection ved at besøge https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Installationsprocessen for distributionen '{}' mislykkedes med returkoden: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ Går tilbage til NAT-netværk.
Windows-version {}. {} har ikke de nødvendige funktioner
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 er deaktiveret på værten på en ikke-understøttet måde (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V-firewall understøttes ikke
@@ -1877,6 +1886,41 @@ Du kan også få adgang til flere Fjernindstillinger for VS-kode via kommandopal
Det antal millisekunder, en VM er inaktiv, før den lukkes.
+
+ Anvend ændringer
+
+
+ Nedlukning af WSL påkrævet
+
+
+ Ændrede WSL-indstillinger kræver WSL-lukning og genstart for at fuldføre. Hvis du lukker, afbrydes alle aktive WSL-sessioner.
+
+
+ Luk WSL ned nu
+
+
+ Senere
+
+
+ Kunne ikke anvende ændringer
+
+
+ Luk
+
+
+ De ventende ændringer af indstillingerne kunne ikke gemmes. Fejlkode: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Indstillingerne blev gemt, men WSL kunne ikke lukkes: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Til
+
+
+ Fra
+
Byg, kør, foretag fejlfinding og profilér dine apps, der kører på WSL, fra Visual Studio
diff --git a/localization/strings/de-DE/Resources.resw b/localization/strings/de-DE/Resources.resw
index 719cabe18..dc28f4aaa 100644
--- a/localization/strings/de-DE/Resources.resw
+++ b/localization/strings/de-DE/Resources.resw
@@ -750,6 +750,11 @@ Weitere Informationen finden Sie unter https://aka.ms/wslinstall
Zum Ausführen der Debug-Shell muss wsl.exe als Administrator ausgeführt werden.
+
+ Windows Admin Protection ist aktiviert, und Ihre Verteilungen werden möglicherweise unter einem anderen Konto registriert.
+Weitere Informationen zu Admin Protection finden Sie unter https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Fehler beim Installationsprozess für die Distribution „{}“. Exitcode: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -885,6 +890,10 @@ Fallback auf NAT-Netzwerk.
Windows-Version {}. {} verfügt nicht über die erforderlichen Features.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 ist auf dem Host auf eine nicht unterstützte Weise deaktiviert (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V-Firewall wird nicht unterstützt
@@ -1883,6 +1892,41 @@ Sie können auch über die Befehlspalette in VS Code selbst auf weitere VS Code
Die Anzahl von Millisekunden, die eine VM im Leerlauf ist, bevor sie heruntergefahren wird.
+
+ Änderungen anwenden
+
+
+ WSL-Herunterfahren erforderlich
+
+
+ Geänderte WSL-Einstellungen erfordern ein Herunterfahren und einen Neustart von WSL, um abgeschlossen zu werden. Das Herunterfahren beendet alle aktiven WSL-Sitzungen.
+
+
+ WSL jetzt herunterfahren
+
+
+ Später
+
+
+ Änderungen können nicht angewendet werden.
+
+
+ Schließen
+
+
+ Fehler beim Speichern ausstehender Einstellungsänderungen. Fehlercode: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Die Einstellungen wurden gespeichert, aber beim Herunterfahren der WSL ist ein Fehler aufgetreten: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Ein
+
+
+ Aus
+
Erstellen, Ausführen, Debuggen und Profilieren von Apps, die auf WSL laufen, direkt in Visual Studio
diff --git a/localization/strings/en-GB/Resources.resw b/localization/strings/en-GB/Resources.resw
index 12a4e984a..5e8a11d0d 100644
--- a/localization/strings/en-GB/Resources.resw
+++ b/localization/strings/en-GB/Resources.resw
@@ -744,6 +744,11 @@ For information please visit https://aka.ms/wslinstall
Running the debug shell requires running wsl.exe as Administrator.
+
+ Windows Admin Protection is enabled and your distributions may be registered under a different account.
+For more information on Admin Protection, please visit https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
The installation process for distribution '{}' failed with exit code: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ Falling back to NAT networking.
Windows version {}.{} does not have the required features
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 is disabled on the host in an unsupported way (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V firewall is not supported
@@ -1877,6 +1886,41 @@ You can also access more VS Code Remote options through the command palette with
The number of milliseconds that a VM is idle, before it is shut down.
+
+ Apply changes
+
+
+ WSL Shut-down Required
+
+
+ Changed WSL settings require a WSL shut-down and restart to finalise. Shutting down will cause any active WSL sessions to terminate.
+
+
+ Shut-down WSL now
+
+
+ Later
+
+
+ Unable to apply changes
+
+
+ Close
+
+
+ Failed to save pending settings changes. Error code: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Settings were saved, but shutting down WSL failed: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ On
+
+
+ Off
+
Build, run, debug, and profile your apps running on WSL from Visual Studio
diff --git a/localization/strings/en-US/Resources.resw b/localization/strings/en-US/Resources.resw
index de258d29d..639d4b79d 100644
--- a/localization/strings/en-US/Resources.resw
+++ b/localization/strings/en-US/Resources.resw
@@ -741,6 +741,11 @@ For information please visit https://aka.ms/wslinstall
Running the debug shell requires running wsl.exe as Administrator.
+
+ Windows Admin Protection is enabled and your distributions may be registered under a different account.
+For more information on Admin Protection, please visit https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
The installation process for distribution '{}' failed with exit code: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -880,6 +885,10 @@ Falling back to NAT networking.
Windows version {}.{} does not have the required features
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 is disabled on the host in an unsupported way (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V firewall is not supported
@@ -1878,6 +1887,41 @@ You can also access more VS Code Remote options through the command palette with
The number of milliseconds that a VM is idle, before it is shut down.
+
+ Apply changes
+
+
+ WSL Shutdown Required
+
+
+ Changed WSL settings require a WSL shutdown and restart to finalize. Shutting down will cause any active WSL sessions to terminate.
+
+
+ Shutdown WSL now
+
+
+ Later
+
+
+ Unable to apply changes
+
+
+ Close
+
+
+ Failed to save pending settings changes. Error code: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Settings were saved, but shutting down WSL failed: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ On
+
+
+ Off
+
Build, run, debug, and profile your apps running on WSL from Visual Studio
diff --git a/localization/strings/es-ES/Resources.resw b/localization/strings/es-ES/Resources.resw
index 4edcbb9c3..31c0602d9 100644
--- a/localization/strings/es-ES/Resources.resw
+++ b/localization/strings/es-ES/Resources.resw
@@ -750,6 +750,11 @@ Para obtener información, visite https://aka.ms/wslinstall
La ejecución del shell de depuración requiere ejecutar wsl.exe como administrador.
+
+ Windows Admin Protection está habilitada y es posible que las distribuciones se registren en otra cuenta.
+Para obtener más información sobre Admin Protection, visite https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Error en el proceso de instalación de la distribución "{}". Código de salida: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -885,6 +890,10 @@ Revirtiendo a las redes NAT.
Versión {}de Windows. {} no tiene las características necesarias
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 está deshabilitado en el host de forma no compatible (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
No se admite el firewall de Hyper-V
@@ -1883,6 +1892,41 @@ También puedes acceder a más opciones remotas de VS Code mediante la paleta d
Número de milisegundos que una VM está inactiva antes de apagarse.
+
+ Aplicar cambios
+
+
+ Apagado de WSL requerido
+
+
+ La configuración de WSL modificada requiere un apagado y reinicio de WSL para finalizar. Si se cierra, finalizarán todas las sesiones de WSL activas.
+
+
+ Apagar WSL ahora
+
+
+ Más tarde
+
+
+ No se pueden aplicar los cambios
+
+
+ Cerrar
+
+
+ No se pudieron guardar los cambios de configuración pendientes. Código de error: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Se guardó la configuración, pero se produjo un error al cerrar WSL: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Activado
+
+
+ Desactivado
+
Compila, ejecuta, depura y analiza el perfil de tus aplicaciones que se ejecutan en WSL desde Visual Studio
diff --git a/localization/strings/fi-FI/Resources.resw b/localization/strings/fi-FI/Resources.resw
index 67b5a6ea8..16f058d48 100644
--- a/localization/strings/fi-FI/Resources.resw
+++ b/localization/strings/fi-FI/Resources.resw
@@ -744,6 +744,11 @@ Saat lisätietoja osoitteesta https://aka.ms/wslinstall
Virheenkorjausliittymän suorittaminen edellyttää wsl.exe suorittamista järjestelmänvalvojana.
+
+ Windows Admin Protection on käytössä, ja jakelusi voidaan rekisteröidä toiselle tilille.
+Lisätietoja Admin Protection saat osoitteesta https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Jakelun {} asennusprosessi epäonnistui, lopetuskoodi: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ Palataan nat-verkkopalveluun.
Windows-versio {}. {} ei sisällä tarvittavia ominaisuuksia
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 on poistettu käytöstä isäntäkoneessa ei tuetulla tavalla (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V-palomuuria ei tueta
@@ -1877,6 +1886,41 @@ Voit käyttää myös muita VS Code Remote -asetuksia VS Coden komentovalikoiman
Virtuaalikoneen käyttämättömyysaika millisekunteina, ennen kuin se sammutetaan.
+
+ Ota muutokset käyttöön
+
+
+ WSL:n sammutus tarvitaan
+
+
+ Muutetut WSL-asetukset vaativat WSL:n sulkemisen ja uudelleenkäynnistyksen, jotta muutokset tulevat voimaan. Sulkeminen lopettaa kaikki aktiiviset WSL-istunnot.
+
+
+ Sammuta WSL nyt
+
+
+ Myöhemmin
+
+
+ Muutosten käyttöönotto epäonnistui
+
+
+ Sulje
+
+
+ Odottavien asetusten muutosten tallentaminen epäonnistui. Virhekoodi: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Asetukset tallennettiin, mutta WSL:n sammuttaminen epäonnistui: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Käytössä
+
+
+ Ei käytössä
+
Kehitä, suorita ja profiloi sovelluksiasi, jotka toimivat WSL:ssä, sekä korjaa niiden virheitä Visual Studion kautta
diff --git a/localization/strings/fr-FR/Resources.resw b/localization/strings/fr-FR/Resources.resw
index f4b881a09..42747d805 100644
--- a/localization/strings/fr-FR/Resources.resw
+++ b/localization/strings/fr-FR/Resources.resw
@@ -751,6 +751,11 @@ Pour plus d’informations, visitez https://aka.ms/wslinstall
L'exécution du shell de débogage nécessite l'exécution de wsl.exe en tant qu'administrateur.
+
+ Windows Admin Protection est activée et vos distributions peuvent être enregistrées sous un autre compte.
+Pour plus d’informations sur Admin Protection, veuillez consulter https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Le processus d’installation de la distribution « {} » a échoué avec le code de sortie : {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -886,6 +891,10 @@ Retour à la mise en réseau NAT.
Windows version {}. {} ne dispose pas des fonctionnalités requises
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 est désactivé sur l’hôte de manière non prise en charge (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Le pare-feu Hyper-V n’est pas pris en charge
@@ -1884,6 +1893,41 @@ Vous pouvez également accéder à davantage d'options VS Code Remote via la pal
Nombre de millisecondes pendant lesquelles une machine virtuelle est inactive, avant d’être éteinte.
+
+ Appliquer les modifications
+
+
+ Arrêt de WSL requis
+
+
+ Les paramètres WSL modifiés nécessitent un arrêt et un redémarrage WSL pour finalisation. L’arrêt entraîne l’arrêt de toutes les sessions WSL actives.
+
+
+ Arrêter WSL maintenant
+
+
+ Plus tard
+
+
+ Nous ne pouvons pas appliquer les modifications
+
+
+ Fermer
+
+
+ Échec de l’enregistrement des modifications des paramètres en attente. Code d’erreur : {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Les paramètres ont été enregistrés, mais l’arrêt de WSL a échoué : {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Activé
+
+
+ Désactivé
+
Créer, exécuter, déboguer et profiler vos applications exécutées sur WSL dans Visual Studio
diff --git a/localization/strings/hu-HU/Resources.resw b/localization/strings/hu-HU/Resources.resw
index 3ca74a9e6..3f402aa6e 100644
--- a/localization/strings/hu-HU/Resources.resw
+++ b/localization/strings/hu-HU/Resources.resw
@@ -744,6 +744,11 @@ További információért látogasson el a https://aka.ms/wslinstall
A hibakeresési felület futtatásához rendszergazdai wsl.exe fájlt kell futtatni.
+
+ Windows Admin Protection engedélyezve van, és előfordulhat, hogy a disztribúciók egy másik fiókban vannak regisztrálva.
+A Admin Protection kapcsolatos további információért látogasson el a https://aka.ms/apdevguide oldalra
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
A(z) {} disztribúció telepítési folyamata a következő kilépési kóddal meghiúsult: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ Visszaállás NAT-hálózatkezelésre.
Windows-verzió: {}. {} nem rendelkezik a szükséges funkciókkal
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ Az IPv6 nem támogatott módon van letiltva a gazdagépen (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
A Hyper-V tűzfal nem támogatott
@@ -1877,6 +1886,41 @@ A VS Code-ban található parancskatalógusban további VS Code Remote beállít
A virtuális gép üresjárati ideje ezredmásodpercben a leállítás előtt.
+
+ Módosítások alkalmazása
+
+
+ Le kell állítani a WSL-t
+
+
+ A módosított WSL-beállítások véglegesítéséhez le kell állítani és újra kell indítani a WSL-t. A leállítás megszakítja az összes aktív WSL-munkamenetet.
+
+
+ WSL leállítása most
+
+
+ Később
+
+
+ A módosítások alkalmazása nem sikerült
+
+
+ Bezárás
+
+
+ Nem sikerült menteni a függőben lévő beállítások módosításait. Hibakód: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ A beállítások mentése megtörtént, de a WSL leállítása nem sikerült: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Bekapcsolva
+
+
+ Kikapcsolva
+
WSL-en futó alkalmazásokat készíthet, futtathat, profilozhat és végezhet rajtuk hibakeresést a Visual Studio segítségével
diff --git a/localization/strings/it-IT/Resources.resw b/localization/strings/it-IT/Resources.resw
index 7a9d895c4..48e5d09f1 100644
--- a/localization/strings/it-IT/Resources.resw
+++ b/localization/strings/it-IT/Resources.resw
@@ -750,6 +750,11 @@ Per informazioni, visitare https://aka.ms/wslinstall
L'esecuzione della shell di debug richiede l'esecuzione wsl.exe come amministratore.
+
+ Windows Admin Protection è abilitato e le distribuzioni possono essere registrate con un account diverso.
+Per ulteriori informazioni su Admin Protection, visitare https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Il processo di installazione per la distribuzione '{}' non è riuscito con codice di uscita: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -885,6 +890,10 @@ Fallback alla rete NAT.
Versione di Windows {}. {} non dispone delle funzionalità necessarie
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 è disabilitato sull'host in modo non supportato (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Il firewall Hyper-V non è supportato
@@ -1883,6 +1892,41 @@ Puoi anche accedere a più opzioni remote di VS Code tramite il riquadro comandi
Numero di millisecondi di inattività di una macchina virtuale prima dell'arresto.
+
+ Applica modifiche
+
+
+ Arresto WSL richiesto
+
+
+ Le modifiche alle impostazioni di WSL richiedono un arresto e un riavvio di WSL per essere finalizzate. L'arresto causerà la terminazione di eventuali sessioni WSL attive.
+
+
+ Arresta WSL adesso
+
+
+ Più tardi
+
+
+ Non è possibile applicare le modifiche
+
+
+ Chiudi
+
+
+ Non è stato possibile salvare le modifiche alle impostazioni in sospeso. Codice errore: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Le impostazioni sono state salvate, ma l'arresto di WSL non è riuscito: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Attivato
+
+
+ Disattivato
+
Compila, esegui, esegui il debug e profila le app in esecuzione in WSL da Visual Studio
diff --git a/localization/strings/ja-JP/Resources.resw b/localization/strings/ja-JP/Resources.resw
index c911e47ea..0e420b3b3 100644
--- a/localization/strings/ja-JP/Resources.resw
+++ b/localization/strings/ja-JP/Resources.resw
@@ -750,6 +750,11 @@ Windows Update または {} 経由で必要な更新プログラムをインス
デバッグ シェルを実行するには、wsl.exe を管理者として実行する必要があります。
+
+ Windows Admin Protection が有効になり、ディストリビューションが別のアカウントに登録されている可能性があります。
+Admin Protection の詳細については、https://aka.ms/apdevguide をご覧ください
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
ディストリビューション '{}' のインストール プロセスが次の終了コードで失敗しました: {}。
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -885,6 +890,10 @@ NAT ネットワークにフォールバックしています。
Windows バージョン {}.{} には必要な機能がありません
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 が、サポートされていない方法でホスト上で無効になっています (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V ファイアウォールはサポートされていません
@@ -1883,6 +1892,41 @@ VS Code 自体のコマンド パレットから、より多くの VS Code リ
VM がシャットダウンされるまでのアイドル時間 (ミリ秒) です。
+
+ 変更の適用
+
+
+ WSL のシャットダウンが必要です
+
+
+ WSL 設定の変更を完了するには、WSL のシャットダウンと再起動が必要です。シャットダウンすると、アクティブな WSL セッションがすべて終了します。
+
+
+ WSL を今すぐシャットダウン
+
+
+ 後で
+
+
+ 変更を適用できません
+
+
+ 閉じる
+
+
+ 保留中の設定変更を保存できませんでした。エラー コード: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ 設定は保存されましたが、WSL のシャットダウンに失敗しました: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ オン
+
+
+ オフ
+
Visual Studio から WSL 上で動作するアプリをビルド、実行、デバッグ、プロファイル
diff --git a/localization/strings/ko-KR/Resources.resw b/localization/strings/ko-KR/Resources.resw
index 0cfcd26cb..fa3bbc47f 100644
--- a/localization/strings/ko-KR/Resources.resw
+++ b/localization/strings/ko-KR/Resources.resw
@@ -750,6 +750,11 @@ Windows 업데이트를 통해 또는 다음을 통해 필요한 업데이트
디버그 셸을 실행하려면 wsl.exe 관리자 권한으로 실행해야 합니다.
+
+ Windows Admin Protection이 활성화되었으며, 배포가 다른 계정에 등록될 수 있습니다.
+Admin Protection에 대해 자세히 알아보려면 https://aka.ms/apdevguide를 방문하세요.
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
배포 '{}'에 대한 설치 프로세스가 종료 코드 {}(으)로 인해 실패했습니다.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -885,6 +890,10 @@ NAT 네트워킹으로 대체합니다.
Windows 버전 {}. {}에 필요한 기능이 없습니다.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ 호스트에서 지원하지 않는 방식으로 IPv6가 비활성화되어 있습니다(HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff).
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V 방화벽은 지원되지 않습니다.
@@ -1883,6 +1892,41 @@ VS Code 자체 내의 명령 팔레트를 통해 더 많은 VS Code 원격 옵
VM이 종료되기 전에 유휴 상태인 시간(밀리초)입니다.
+
+ 변경 내용 적용
+
+
+ WSL 종료 필요
+
+
+ 변경된 WSL 설정을 완료하려면 WSL을 종료하고 다시 시작해야 합니다. 종료하면 활성 WSL 세션이 종료됩니다.
+
+
+ 지금 WSL 종료
+
+
+ 나중에
+
+
+ 변경 내용을 적용할 수 없음
+
+
+ 닫기
+
+
+ 보류 중인 설정 변경 내용을 저장하지 못했습니다. 오류 코드: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ 설정이 저장되었지만 WSL을 종료하지 못했습니다. {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ 켜짐
+
+
+ 꺼짐
+
Visual Studio에서 WSL로 실행 중인 앱을 빌드, 실행, 디버그 및 프로파일링하기
diff --git a/localization/strings/nb-NO/Resources.resw b/localization/strings/nb-NO/Resources.resw
index 3d8d8002f..4cde61dd2 100644
--- a/localization/strings/nb-NO/Resources.resw
+++ b/localization/strings/nb-NO/Resources.resw
@@ -744,6 +744,11 @@ Hvis du vil ha mer informasjon, kan du gå til https://aka.ms/wslinstall
Kjøring av feilsøkingsskallet krever kjøring wsl.exe som administrator.
+
+ Windows Admin Protection er aktivert, og distribusjonene kan registreres under en annen konto.
+Hvis du vil ha mer informasjon om Admin Protection, kan du gå til https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Installasjonsprosessen for distribusjonen {} mislyktes med avslutningskoden: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ Faller tilbake til NAT-nettverk.
Windows-versjon {}. {} har ikke de nødvendige funksjonene
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 er deaktivert på verten på en ikke-støttet måte (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Brannmuren støtter ikke Hyper-V
@@ -1877,6 +1886,41 @@ Du kan også åpne flere eksterne alternativer for VS Code gjennom kommandopalet
Antall millisekunder en virtuell maskin er inaktiv, før den avsluttes.
+
+ Bruk endringer
+
+
+ WSL-avslutning kreves
+
+
+ Endrede WSL-innstillinger krever WSL-avslutning og omstart for å fullføre. Hvis du avslutter, avsluttes alle aktive WSL-økter.
+
+
+ Avslutt WSL nå
+
+
+ Senere
+
+
+ Kan ikke ta i bruk endringene
+
+
+ Lukk
+
+
+ Kan ikke lagre ventende innstillingsendringer. Feilkode: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Innstillingene ble lagret, men avslutning av WSL mislyktes: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ På
+
+
+ Av
+
Bygg, kjør, feilsøk og profiler apper som kjører på WSL fra Visual Studio
diff --git a/localization/strings/nl-NL/Resources.resw b/localization/strings/nl-NL/Resources.resw
index 13dc23ebd..903fced0b 100644
--- a/localization/strings/nl-NL/Resources.resw
+++ b/localization/strings/nl-NL/Resources.resw
@@ -744,6 +744,11 @@ Ga naar https://aka.ms/wslinstall voor meer informatie
Als u de foutopsporingsshell wilt uitvoeren, moet u wsl.exe als beheerder uitvoeren.
+
+ Windows Admin Protection is ingeschakeld en uw uitkeringen kunnen onder een ander account worden geregistreerd.
+Ga voor meer informatie over Admin Protection naar https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Het installatieproces voor distributie {} is mislukt met afsluitcode: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ Terugvallen op NAT-netwerken.
Windows-versie {}. {} beschikt niet over de vereiste functies
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 is op de host uitgeschakeld op een niet-ondersteunde manier (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V-firewall wordt niet ondersteund
@@ -1877,6 +1886,41 @@ U hebt ook toegang tot meer externe VS Code-opties via het opdrachtpalet in VS C
Het aantal milliseconden dat een VM inactief is voordat deze wordt afgesloten.
+
+ Wijzigingen toepassen
+
+
+ WSL-afsluiting vereist
+
+
+ Voor gewijzigde WSL-instellingen is het afsluiten en opnieuw opstarten van WSL vereist. Als u afsluit, worden actieve WSL-sessies beëindigd.
+
+
+ WSL nu afsluiten
+
+
+ Later
+
+
+ Kan wijzigingen niet toepassen
+
+
+ Sluiten
+
+
+ Kan de in behandeling zijnde instellingswijzigingen niet opslaan. Foutcode: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Instellingen zijn opgeslagen, maar WSL kan niet worden afgesloten: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Aan
+
+
+ Uit
+
Apps die op WSL draaien vanuit Visual Studio maken, uitvoeren, profileren en fouten opsporen
diff --git a/localization/strings/pl-PL/Resources.resw b/localization/strings/pl-PL/Resources.resw
index a0f40b411..a7a657587 100644
--- a/localization/strings/pl-PL/Resources.resw
+++ b/localization/strings/pl-PL/Resources.resw
@@ -744,6 +744,11 @@ Aby uzyskać informacje, odwiedź stronę https://aka.ms/wslinstall
Uruchomienie powłoki debugowania wymaga uruchomienia programu wsl.exe jako administrator.
+
+ Windows Admin Protection jest włączona, a Twoje dystrybucje mogą być zarejestrowane na innym koncie.
+Więcej informacji na temat Admin Protection można znaleźć na stronie https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Proces instalacji dystrybucji „{}” nie powiódł się. Kod zakończenia: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ Powrót do sieci NAT.
Wersja systemu Windows {}. {} nie ma wymaganych funkcji
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ Protokół IPv6 na hoście został wyłączony w nieobsługiwany sposób (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Zapora funkcji Hyper-V nie jest obsługiwana
@@ -1877,6 +1886,41 @@ Możesz również uzyskać dostęp do większej liczby opcji zdalnych programu V
Liczba milisekund bezczynności maszyny wirtualnej przed jej zamknięciem.
+
+ Zastosuj zmiany
+
+
+ Wymagane zamknięcie systemu WSL
+
+
+ Zmienione ustawienia systemu WSL wymagają zamknięcia i ponownego uruchomienia systemu WSL w celu sfinalizowania. Zamknięcie spowoduje przerwanie wszystkich aktywnych sesji systemu WSL.
+
+
+ Zamknij system WSL teraz
+
+
+ Później
+
+
+ Nie można zastosować zmian
+
+
+ Zamknij
+
+
+ Nie można zapisać oczekujących zmian ustawień. Kod błędu: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Ustawienia zostały zapisane, ale zamknięcie systemu WSL nie powiodło się: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Włączony
+
+
+ Wyłączony
+
Kompiluj, uruchamiaj, debuguj i profiluj aplikacje działające w systemie WSL z poziomu programu Visual Studio
diff --git a/localization/strings/pt-BR/Resources.resw b/localization/strings/pt-BR/Resources.resw
index 9ba5274a8..f373c2384 100644
--- a/localization/strings/pt-BR/Resources.resw
+++ b/localization/strings/pt-BR/Resources.resw
@@ -751,6 +751,11 @@ Para obter informações, visite https://aka.ms/wslinstall
A execução do shell de depuração requer wsl.exe como Administrador.
+
+ Windows Admin Protection está habilitado e suas distribuições podem ser registradas em uma conta diferente.
+Para obter mais informações sobre Admin Protection, visite https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
O processo de instalação da distribuição '{}' falhou com o código de saída: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -886,6 +891,10 @@ Voltando à rede NAT.
Versão do Windows {}. {} não tem os recursos necessários
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ O IPv6 está desabilitado no host de uma forma sem suporte (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Não há suporte para o firewall do Hyper-V
@@ -1884,6 +1893,41 @@ Você também pode acessar mais opções do VS Code Remote através da paleta de
O número de milissegundos em que uma VM está ociosa, antes de ser desligada.
+
+ Aplicar alterações
+
+
+ É necessário desligar o WSL
+
+
+ As configurações alteradas do WSL exigem um desligamento do WSL e reinicialização para finalizar. O desligamento fará com que todas as sessões ativas do WSL sejam encerradas.
+
+
+ Desligar o WSL agora
+
+
+ Mais tarde
+
+
+ Não foi possível aplicar alterações
+
+
+ Fechar
+
+
+ Falha ao salvar alterações de configurações pendentes. Código de erro: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ As configurações foram salvas, mas o desligamento do WSL falhou: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Ligado
+
+
+ Desligado
+
Crie, execute, depure e crie o perfil de seus aplicativos em execução no WSL no Visual Studio
diff --git a/localization/strings/pt-PT/Resources.resw b/localization/strings/pt-PT/Resources.resw
index e91066245..7e6dc7aa8 100644
--- a/localization/strings/pt-PT/Resources.resw
+++ b/localization/strings/pt-PT/Resources.resw
@@ -744,6 +744,11 @@ Para obter informações, visite https://aka.ms/wslinstall
A execução da shell de depuração requer a execução de wsl.exe como Administrador.
+
+ Windows Admin Protection está ativada e as suas distribuições podem ser registadas numa conta diferente.
+Para mais informações sobre Admin Protection, visite https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
O processo de instalação da distribuição "{}" falhou com o código de saída: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ A reverter para a rede NAT.
Versão do Windows {}. {} não tem as funcionalidades necessárias
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ O IPv6 está desativado no anfitrião de uma forma não suportada (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
A firewall do Hyper-V não é suportada
@@ -1877,6 +1886,41 @@ Também pode aceder a mais Opções remotas do VS Code através da paleta de com
O número de milissegundos em que uma VM está inativa antes de ser encerrada.
+
+ Aplicar alterações
+
+
+ É Necessário Encerrar o WSL
+
+
+ As definições do WSL alteradas requerem o encerramento e o reinício do WSL para serem concluídas. O encerramento fará com que quaisquer sessões WSL ativas terminem.
+
+
+ Encerrar o WSL agora
+
+
+ Mais tarde
+
+
+ Não é possível aplicar as alterações
+
+
+ Fechar
+
+
+ Falha ao guardar alterações de definições pendentes. Código de erro: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ As definições foram guardadas, mas o encerramento do WSL falhou: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Ativado
+
+
+ Desativado
+
Crie, execute, depure e defina perfis para as suas aplicações em execução no WSL a partir do Visual Studio
diff --git a/localization/strings/ru-RU/Resources.resw b/localization/strings/ru-RU/Resources.resw
index 07d59e7c9..0a4157a02 100644
--- a/localization/strings/ru-RU/Resources.resw
+++ b/localization/strings/ru-RU/Resources.resw
@@ -751,6 +751,11 @@
Для запуска оболочки отладки требуется запуск wsl.exe от имени администратора.
+
+ Windows Admin Protection включена, а ваши дистрибутивы, возможно, зарегистрированы под другой учетной записью.
+Подробнее о Admin Protection можно узнать на https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Сбой процесса установки для распространения "{}" с кодом завершения: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -886,6 +891,10 @@
Версия Windows {}. У {} нет необходимых компонентов
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 отключен в узле неподдерживаемым способом (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Брандмауэр Hyper-V не поддерживается
@@ -1884,6 +1893,41 @@ wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe
Число миллисекунд бездействия виртуальной машины до ее завершения.
+
+ Применить изменения
+
+
+ Требуется завершить работу WSL
+
+
+ Измененные параметры WSL требуют завершения работы и перезапуска WSL для их применения. Завершение работы приведет к прекращению всех активных сеансов WSL.
+
+
+ Завершить работу WSL сейчас
+
+
+ Позже
+
+
+ Не удалось применить изменения
+
+
+ Закрыть
+
+
+ Не удалось сохранить ожидающие изменения параметров. Код ошибки: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Параметры сохранены, но не удалось завершить работу WSL: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Включено
+
+
+ Отключено
+
Создавайте, запускайте, отлаживайте и профилируйте приложения на WSL из Visual Studio
diff --git a/localization/strings/sv-SE/Resources.resw b/localization/strings/sv-SE/Resources.resw
index ec80f1e9c..b6cb64f95 100644
--- a/localization/strings/sv-SE/Resources.resw
+++ b/localization/strings/sv-SE/Resources.resw
@@ -744,6 +744,11 @@ Mer information finns på https://aka.ms/wslinstall
Om du kör felsökningsgränssnittet måste du köra wsl.exe som administratör.
+
+ Windows Admin Protection är aktiverat och dina distributioner kan registreras under ett annat konto.
+Mer information om Admin Protection finns på https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
Installationsprocessen för distributionen '{}' misslyckades med slutkoden: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ Mer information finns på https://aka.ms/wslinstall
Windows-version {}.{} har inte de nödvändiga funktionerna
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6 är inaktiverat på värden på ett sätt som inte stöds (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V-brandväggen stöds inte
@@ -1877,6 +1886,41 @@ Du kan också komma åt fler VS Code-fjärralternativ via kommandopaletten inom
Antalet millisekunder som en virtuell dator är inaktiv innan den stängs av.
+
+ Tillämpa ändringar
+
+
+ WSL-avstängning krävs
+
+
+ Ändrade WSL-inställningar kräver en WSL-avstängning och omstart för att slutföra. Om du stänger av avslutas alla aktiva WSL-sessioner.
+
+
+ Stäng av WSL nu
+
+
+ Senare
+
+
+ Det gick inte att tillämpa ändringarna
+
+
+ Stäng
+
+
+ Det gick inte att spara väntande inställningsändringar. Felkod: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Inställningarna sparades, men det gick inte att stänga WSL: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ På
+
+
+ Av
+
Skapa, kör, felsök och profilera dina appar som körs på WSL direkt från Visual Studio
diff --git a/localization/strings/tr-TR/Resources.resw b/localization/strings/tr-TR/Resources.resw
index 4af0a8b18..759053a90 100644
--- a/localization/strings/tr-TR/Resources.resw
+++ b/localization/strings/tr-TR/Resources.resw
@@ -744,6 +744,11 @@ Daha fazla bilgi için lütfen https://aka.ms/wslinstall adresini ziyaret edin.<
Hata ayıklama kabuğu çalıştırmak için yönetici wsl.exe çalıştırmanız gerekir.
+
+ Windows Admin Protection etkinleştirildi ve dağıtımlarınız farklı bir hesap altında kayıtlı olabilir.
+Admin Protection hakkında daha fazla bilgi için lütfen https://aka.ms/apdevguide adresini ziyaret edin
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
'{}' dağıtımı için yükleme işlemi şu çıkış koduyla başarısız oldu: {}.
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -879,6 +884,10 @@ NAT ağ bağlantısına geri dönülüyor.
Windows sürümü {}. {} gerekli özelliklere sahip değil
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ IPv6, ana bilgisayarda desteklenmeyen bir şekilde devre dışı bırakıldı (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V güvenlik duvarı desteklenmiyor
@@ -1877,6 +1886,41 @@ Ayrıca VS Code'un içindeki komut paleti aracılığıyla daha fazla VS Code Re
Bir VM'nin kapatılmadan önce boşta olduğu milisaniye sayısı.
+
+ Değişiklikleri uygula
+
+
+ WSL'nin Kapatılması Gerekiyor
+
+
+ Değiştirilen WSL ayarlarının geçerli hale gelmesi için WSL'nin kapatılıp yeniden başlatılması gerekir. Kapatma işlemi, aktif olan tüm WSL oturumlarının sonlanmasına yol açar.
+
+
+ WSL'yi şimdi kapatın
+
+
+ Daha sonra
+
+
+ Değişiklikler uygulanamıyor
+
+
+ Kapat
+
+
+ Bekleyen ayar değişiklikleri kaydedilemedi. Hata kodu: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ Ayarlar kaydedildi, ancak WSL kapatılamadı: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ Açık
+
+
+ Kapalı
+
Visual Studio'dan WSL üzerinde çalışan uygulamalarınızı derleyin, çalıştırın, hatalarını ayıklayın ve profillerini oluşturun
diff --git a/localization/strings/zh-CN/Resources.resw b/localization/strings/zh-CN/Resources.resw
index 7a674d4e0..6efcec29b 100644
--- a/localization/strings/zh-CN/Resources.resw
+++ b/localization/strings/zh-CN/Resources.resw
@@ -750,6 +750,11 @@ Windows: {}
运行调试 shell 需要以管理员身份运行 wsl.exe。
+
+ Windows Admin Protection 已启用,并且你的分发可能会在其他帐户下注册。
+有关 Admin Protection 的详细信息,请访问 https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
分发“{}”的安装过程失败,退出代码: {}。
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -885,6 +890,10 @@ Windows: {}
Windows 版本 {}。{} 没有所需的功能
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ 主机上以不受支持的方式禁用了 IPv6 (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
Hyper-V 防火墙不受支持
@@ -1883,6 +1892,41 @@ wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe
VM 在关闭之前处于空闲状态的毫秒数。
+
+ 应用更改
+
+
+ 需要关闭 WSL
+
+
+ 更改的 WSL 设置需要关闭 WSL 并重启才能完成。关闭将导致任何活动的 WSL 会话终止。
+
+
+ 立即关闭 WSL
+
+
+ 以后再说
+
+
+ 无法应用更改
+
+
+ 关闭
+
+
+ 未能保存挂起的设置更改。错误代码: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ 已保存设置,但关闭 WSL 失败: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ 开
+
+
+ 关
+
通过 Visual Studio 构建、运行、调试和分析运行于 WSL 上的应用
diff --git a/localization/strings/zh-TW/Resources.resw b/localization/strings/zh-TW/Resources.resw
index d0ddf6629..7f04ef0be 100644
--- a/localization/strings/zh-TW/Resources.resw
+++ b/localization/strings/zh-TW/Resources.resw
@@ -750,6 +750,11 @@ Windows 版本: {}
執行偵錯殼層需要以系統管理員身分執行 wsl.exe。
+
+ Windows Admin Protection 已啟用,您的發佈可能會在其他帳戶下註冊。
+如需 Admin Protection 的詳細資訊,請瀏覽 https://aka.ms/apdevguide
+ {Locked="Windows Admin Protection"}{Locked="Admin Protection"}{Locked="https://aka.ms/apdevguide"}Command line arguments, file names and string inserts should not be translated
+
發佈 '{}' 的安裝程序失敗,結束代碼: {}。
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
@@ -885,6 +890,10 @@ Windows 版本: {}
Windows 版本 {}。{} 沒有所需的功能
{FixedPlaceholder="{}"}Command line arguments, file names and string inserts should not be translated
+
+ 在主機上以不受支援的方式停用 IPv6 (HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters DisabledComponents=0xff)
+ {Locked="HKLM\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters"}{Locked="DisabledComponents"}{Locked="0xff"}
+
不支援 Hyper-V 防火牆
@@ -1883,6 +1892,41 @@ wsl.exe --manage <DistributionName> --set-sparse true --allow-unsafe
VM 在關機前閒置的毫秒數。
+
+ 套用變更
+
+
+ 需要關閉 WSL
+
+
+ 變更的 WSL 設定需要關閉 WSL 並重新啟動才能完成。關機會導致所有使用中的 WSL 工作階段終止。
+
+
+ 立即關閉 WSL
+
+
+ 稍後
+
+
+ 無法套用變更
+
+
+ 關閉
+
+
+ 無法儲存擱置中的設定變更。錯誤碼: {0}
+ {Locked="{0}"}Format placeholder for Win32 error code
+
+
+ 已儲存設定,但關閉 WSL 失敗: {0}
+ {Locked="{0}"}Format placeholder for exception message
+
+
+ 開啟
+
+
+ 關閉
+
從 Visual Studio 組建、執行、偵錯並分析在 WSL 上執行的應用程式
diff --git a/src/linux/inc/lxwil.h b/src/linux/inc/lxwil.h
index e5f5c2f04..2871dc6cc 100644
--- a/src/linux/inc/lxwil.h
+++ b/src/linux/inc/lxwil.h
@@ -223,7 +223,7 @@ inline int ResultFromCaughtException()
#define THROW_LAST_ERROR() THROW_ERRNO(errno);
#define THROW_INVALID() THROW_ERRNO(EINVAL)
-#define THROW_UNEXCEPTED() THROW_ERRNO(EINVAL)
+#define THROW_UNEXPECTED() THROW_ERRNO(EINVAL)
#define THROW_INVALID_IF(Condition) THROW_ERRNO_IF(EINVAL, (Condition))
#define THROW_UNEXPECTED_IF(Condition) THROW_ERRNO_IF(EINVAL, (Condition))
@@ -442,7 +442,7 @@ class unique_pipe
static unique_pipe create(int flags)
{
int pipe[2] = {-1, -1};
- if (pipe2(pipe, flags) < -1)
+ if (pipe2(pipe, flags) < 0)
{
THROW_ERRNO(errno);
}
diff --git a/src/linux/init/DnsServer.cpp b/src/linux/init/DnsServer.cpp
index cf5cac9df..dcad65349 100644
--- a/src/linux/init/DnsServer.cpp
+++ b/src/linux/init/DnsServer.cpp
@@ -193,7 +193,6 @@ try
// whenever there is new data on the TCP connection.
epoll_event event{};
event.events = EPOLLIN;
- event.data.fd = localContext->m_tcpConnection.get();
event.data.ptr = localContext.get();
Syscall(epoll_ctl, m_epollFd.get(), EPOLL_CTL_ADD, localContext->m_tcpConnection.get(), &event);
diff --git a/src/linux/init/GnsEngine.cpp b/src/linux/init/GnsEngine.cpp
index c0d826daf..b8128c1a3 100644
--- a/src/linux/init/GnsEngine.cpp
+++ b/src/linux/init/GnsEngine.cpp
@@ -25,12 +25,13 @@ constexpr auto c_ipStrings = {"ip", "ip6"};
const char* c_loopbackInterfaceName = "lo";
GnsEngine::GnsEngine(
+ wsl::shared::SocketChannel& channel,
const NotificationRoutine& notificationRoutine,
const StatusRoutine& statusRoutine,
NetworkManager& manager,
std::optional dnsTunnelingFd,
const std::string& dnsTunnelingIpAddress) :
- notificationRoutine(notificationRoutine), statusRoutine(statusRoutine), manager(manager)
+ channel(channel), notificationRoutine(notificationRoutine), statusRoutine(statusRoutine), manager(manager)
{
if (dnsTunnelingFd.has_value())
{
@@ -364,11 +365,11 @@ void GnsEngine::ProcessLinkChange(Interface& interface, const wsl::shared::hns::
}
}
-std::tuple GnsEngine::ProcessNextMessage()
+std::tuple GnsEngine::ProcessNextMessage(wsl::shared::Transaction& transaction)
{
int return_value = 0;
- auto payload = notificationRoutine();
+ auto payload = notificationRoutine(transaction);
if (!payload.has_value())
{
GNS_LOG_ERROR("Received empty message, exiting");
@@ -724,22 +725,23 @@ void GnsEngine::run()
while (true)
{
+ auto transaction = channel.ReceiveTransaction();
try
{
GNS_LOG_INFO("Processing Next Message");
- auto [should_continue, return_value] = ProcessNextMessage();
+ auto [should_continue, return_value] = ProcessNextMessage(transaction);
if (!should_continue)
{
break;
}
GNS_LOG_INFO("Processing Next Message Successful ({:#x})", return_value);
- statusRoutine(return_value, "");
+ statusRoutine(return_value, "", transaction);
}
catch (const std::exception& e)
{
GNS_LOG_ERROR("Error while processing message: {}", e.what());
- statusRoutine(-1, e.what());
+ statusRoutine(-1, e.what(), transaction);
}
}
diff --git a/src/linux/init/GnsEngine.h b/src/linux/init/GnsEngine.h
index c6ea91576..39119ead9 100644
--- a/src/linux/init/GnsEngine.h
+++ b/src/linux/init/GnsEngine.h
@@ -21,10 +21,11 @@ class GnsEngine
std::optional AdapterId;
};
- using NotificationRoutine = std::function()>;
- using StatusRoutine = std::function;
+ using NotificationRoutine = std::function(wsl::shared::Transaction&)>;
+ using StatusRoutine = std::function;
GnsEngine(
+ wsl::shared::SocketChannel& channel,
const NotificationRoutine& notificationRoutine,
const StatusRoutine& statusRoutine,
NetworkManager& manager,
@@ -36,7 +37,7 @@ class GnsEngine
void run();
private:
- std::tuple ProcessNextMessage();
+ std::tuple ProcessNextMessage(wsl::shared::Transaction& transaction);
void ProcessNotification(const nlohmann::json& payload, Interface& interface);
@@ -69,6 +70,7 @@ class GnsEngine
void ProcessNotificationImpl(
Interface& interface, const nlohmann::json& payload, void (GnsEngine::*routine)(Interface&, const T&, wsl::shared::hns::ModifyRequestType));
+ wsl::shared::SocketChannel& channel;
const NotificationRoutine& notificationRoutine;
const StatusRoutine& statusRoutine;
NetworkManager& manager;
diff --git a/src/linux/init/GnsPortTracker.cpp b/src/linux/init/GnsPortTracker.cpp
index 669582a14..92e4beff6 100644
--- a/src/linux/init/GnsPortTracker.cpp
+++ b/src/linux/init/GnsPortTracker.cpp
@@ -73,7 +73,6 @@ void GnsPortTracker::Run()
// for port deallocation
std::thread{std::bind(&GnsPortTracker::RunPortRefresh, this)}.detach();
- std::thread{std::bind(&GnsPortTracker::RunDeferredResolve, this)}.detach();
auto future = std::make_optional(m_allocatedPortsRefresh.get_future());
std::optional refreshResult;
@@ -121,13 +120,28 @@ void GnsPortTracker::Run()
{
try
{
- std::lock_guard lock(m_deferredMutex);
- m_deferredQueue.push_back(std::move(bindCall->PortZeroBind.value()));
- m_deferredCv.notify_one();
+ auto allocation = ResolvePortZeroBind(std::move(bindCall->PortZeroBind.value()));
+ if (allocation.has_value())
+ {
+ const auto portResult = HandleRequest(allocation.value());
+ if (portResult == 0)
+ {
+ TrackPort(std::move(allocation.value()));
+ }
+ else
+ {
+ GNS_LOG_ERROR(
+ "Failed to register resolved port-0 bind: family ({}) port ({}) protocol ({}), error {}",
+ allocation->Family,
+ allocation->Port,
+ allocation->Protocol,
+ portResult);
+ }
+ }
}
catch (const std::exception& e)
{
- GNS_LOG_ERROR("Failed to queue port-0 bind for deferred resolution, {}", e.what());
+ GNS_LOG_ERROR("Failed to resolve port-0 bind, {}", e.what());
}
}
}
@@ -148,30 +162,6 @@ void GnsPortTracker::Run()
}
}
- // Process any port-0 binds that the background thread has resolved.
- std::deque resolved;
- {
- std::lock_guard lock(m_resolvedMutex);
- resolved.swap(m_resolvedQueue);
- }
- for (auto& allocation : resolved)
- {
- const auto result = HandleRequest(allocation);
- if (result == 0)
- {
- TrackPort(std::move(allocation));
- }
- else
- {
- GNS_LOG_ERROR(
- "Failed to register resolved port-0 bind: family ({}) port ({}) protocol ({}), error {}",
- allocation.Family,
- allocation.Port,
- allocation.Protocol,
- result);
- }
- }
-
// Only look at bound ports if there's something to deallocate to avoid wasting cycles
if (refreshResult.has_value())
{
@@ -539,43 +529,16 @@ catch (const std::exception& e)
GNS_LOG_ERROR("Failed to track port allocation, {}", e.what());
}
-void GnsPortTracker::RunDeferredResolve()
-{
- UtilSetThreadName("GnsPortZero");
-
- for (;;)
- {
- DeferredPortLookup lookup{0, {}, 0};
- {
- std::unique_lock lock(m_deferredMutex);
- m_deferredCv.wait(lock, [&] { return !m_deferredQueue.empty(); });
- lookup = std::move(m_deferredQueue.front());
- m_deferredQueue.pop_front();
- }
-
- const auto pid = lookup.Pid;
- try
- {
- ResolvePortZeroBind(std::move(lookup));
- }
- catch (const std::exception& e)
- {
- GNS_LOG_ERROR("Failed to resolve port-0 bind for pid {}, {}", pid, e.what());
- }
- }
-}
-
-void GnsPortTracker::ResolvePortZeroBind(DeferredPortLookup lookup)
+std::optional GnsPortTracker::ResolvePortZeroBind(DeferredPortLookup lookup)
{
// The socket fd was already duplicated (via pidfd_getfd) while the target process
// was stopped by seccomp, so it remains valid even if the process has closed or
// reused the original fd number.
- // The bind() syscall is being completed asynchronously on the seccomp dispatcher
- // thread after CompleteRequest() unblocks it. Poll getsockname() briefly until
- // the kernel assigns a port.
+ // The bind() syscall has been completed (CompleteRequest() already unblocked the
+ // caller). Poll getsockname() briefly until the kernel assigns a port.
constexpr int maxRetries = 25;
- constexpr auto retryDelay = std::chrono::milliseconds(100);
+ constexpr auto retryDelay = std::chrono::milliseconds(10);
in_port_t port = 0;
in6_addr address = {};
@@ -593,7 +556,7 @@ void GnsPortTracker::ResolvePortZeroBind(DeferredPortLookup lookup)
if (getsockname(lookup.DuplicatedSocketFd.get(), reinterpret_cast(&storage), &addrLen) != 0)
{
GNS_LOG_ERROR("Port-0 bind: getsockname failed for pid {} (errno {})", lookup.Pid, errno);
- return;
+ return {};
}
resolvedFamily = static_cast(storage.ss_family);
@@ -613,7 +576,7 @@ void GnsPortTracker::ResolvePortZeroBind(DeferredPortLookup lookup)
else
{
GNS_LOG_ERROR("Port-0 bind: unexpected address family ({}) for pid {}", resolvedFamily, lookup.Pid);
- return;
+ return {};
}
if (port != 0)
@@ -625,16 +588,12 @@ void GnsPortTracker::ResolvePortZeroBind(DeferredPortLookup lookup)
if (port == 0)
{
GNS_LOG_ERROR("Port-0 bind: kernel did not assign a port for pid {} after retries", lookup.Pid);
- return;
+ return {};
}
- PortAllocation allocation(port, resolvedFamily, lookup.Protocol, address);
GNS_LOG_INFO(
"Port-0 bind resolved: family ({}) port ({}) protocol ({}) for pid {}", resolvedFamily, port, lookup.Protocol, lookup.Pid);
- {
- std::lock_guard lock(m_resolvedMutex);
- m_resolvedQueue.push_back(std::move(allocation));
- }
+ return PortAllocation(port, resolvedFamily, lookup.Protocol, address);
}
std::ostream& operator<<(std::ostream& out, const GnsPortTracker::PortAllocation& entry)
diff --git a/src/linux/init/GnsPortTracker.h b/src/linux/init/GnsPortTracker.h
index a3f2945a1..f15d7c50b 100644
--- a/src/linux/init/GnsPortTracker.h
+++ b/src/linux/init/GnsPortTracker.h
@@ -1,9 +1,7 @@
// Copyright (C) Microsoft Corporation. All rights reserved.
#pragma once
-#include
#include