Showing preview only (9,775K chars total). Download the full file or copy to clipboard to get everything.
Repository: microsoft/WSL
Branch: master
Commit: d7ff5b96315a
Files: 730
Total size: 9.2 MB
Directory structure:
gitextract_550h3trh/
├── .clang-format
├── .gdnsuppress
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ ├── Bug_Report.yaml
│ │ └── feature_request.md
│ ├── actions/
│ │ └── triage/
│ │ └── action.yml
│ ├── copilot-instructions.md
│ ├── policies/
│ │ └── resourceManagement.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── distributions.yml
│ ├── documentation.yml
│ ├── issue_edited.yml
│ ├── modern-distributions.yml
│ ├── new_issue.yml
│ ├── new_issue_comment.yml
│ └── winget.yml
├── .gitignore
├── .pipelines/
│ ├── build-stage.yml
│ ├── flight-stage.yml
│ ├── nuget-stage.yml
│ ├── test-job.yml
│ ├── test-stage.yml
│ ├── wsl-build-nightly-localization.yml
│ ├── wsl-build-nightly-onebranch.yml
│ ├── wsl-build-notice.yml
│ ├── wsl-build-pr-onebranch.yml
│ ├── wsl-build-pr.yml
│ └── wsl-build-release-onebranch.yml
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── DATA_AND_PRIVACY.md
├── Directory.Build.Props
├── LICENSE
├── NOTICE.txt
├── README.md
├── SECURITY.md
├── SUPPORT.md
├── UserConfig.cmake.sample
├── cgmanifest.json
├── cloudtest/
│ ├── CMakeLists.txt
│ ├── TestGroup.xml.in
│ └── TestMap.xml.in
├── cmake/
│ ├── FindIDL.cmake
│ ├── FindLINUXBUILD.cmake
│ ├── FindMC.cmake
│ ├── findAppx.cmake
│ ├── findNuget.cmake
│ └── findVersion.cmake
├── diagnostics/
│ ├── collect-wsl-logs.ps1
│ ├── dump-init-stacks.sh
│ ├── dump-init.sh
│ ├── networking.sh
│ └── wsl.wprp
├── distributions/
│ ├── DistributionInfo.json
│ ├── requirements.txt
│ ├── validate-modern.py
│ └── validate.py
├── doc/
│ ├── README.md
│ ├── docs/
│ │ ├── debugging.md
│ │ ├── dev-loop.md
│ │ ├── index.md
│ │ └── technical-documentation/
│ │ ├── boot-process.md
│ │ ├── drvfs.md
│ │ ├── gns.md
│ │ ├── index.md
│ │ ├── init.md
│ │ ├── interop.md
│ │ ├── localhost.md
│ │ ├── mini_init.md
│ │ ├── plan9.md
│ │ ├── relay.md
│ │ ├── session-leader.md
│ │ ├── systemd.md
│ │ ├── wsl.exe.md
│ │ ├── wslconfig.exe.md
│ │ ├── wslg.exe.md
│ │ ├── wslhost.exe.md
│ │ ├── wslrelay.exe.md
│ │ └── wslservice.exe.md
│ └── mkdocs.yml
├── intune/
│ ├── WSL.admx
│ └── en-US/
│ └── WSL.adml
├── localization/
│ ├── CMakeLists.txt
│ └── strings/
│ ├── cs-CZ/
│ │ └── Resources.resw
│ ├── da-DK/
│ │ └── Resources.resw
│ ├── de-DE/
│ │ └── Resources.resw
│ ├── en-GB/
│ │ └── Resources.resw
│ ├── en-US/
│ │ └── Resources.resw
│ ├── es-ES/
│ │ └── Resources.resw
│ ├── fi-FI/
│ │ └── Resources.resw
│ ├── fr-FR/
│ │ └── Resources.resw
│ ├── hu-HU/
│ │ └── Resources.resw
│ ├── it-IT/
│ │ └── Resources.resw
│ ├── ja-JP/
│ │ └── Resources.resw
│ ├── ko-KR/
│ │ └── Resources.resw
│ ├── nb-NO/
│ │ └── Resources.resw
│ ├── nl-NL/
│ │ └── Resources.resw
│ ├── pl-PL/
│ │ └── Resources.resw
│ ├── pt-BR/
│ │ └── Resources.resw
│ ├── pt-PT/
│ │ └── Resources.resw
│ ├── ru-RU/
│ │ └── Resources.resw
│ ├── sv-SE/
│ │ └── Resources.resw
│ ├── tr-TR/
│ │ └── Resources.resw
│ ├── zh-CN/
│ │ └── Resources.resw
│ └── zh-TW/
│ └── Resources.resw
├── msipackage/
│ ├── CMakeLists.txt
│ └── package.wix.in
├── msixgluepackage/
│ ├── AppxManifest.in
│ └── CMakeLists.txt
├── msixinstaller/
│ ├── AppxManifest.in
│ └── CMakeLists.txt
├── nuget/
│ ├── CMakeLists.txt
│ ├── Microsoft.WSL.PluginApi.nuspec.in
│ └── README.WslPluginApi.MD
├── nuget.config
├── packages.config
├── src/
│ ├── linux/
│ │ ├── inc/
│ │ │ ├── lxdef.h
│ │ │ ├── lxwil.h
│ │ │ └── seccomp_defs.h
│ │ ├── init/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── DnsServer.cpp
│ │ │ ├── DnsServer.h
│ │ │ ├── DnsTunnelingChannel.cpp
│ │ │ ├── DnsTunnelingChannel.h
│ │ │ ├── DnsTunnelingManager.cpp
│ │ │ ├── DnsTunnelingManager.h
│ │ │ ├── GnsEngine.cpp
│ │ │ ├── GnsEngine.h
│ │ │ ├── GnsPortTracker.cpp
│ │ │ ├── GnsPortTracker.h
│ │ │ ├── Localization.cpp
│ │ │ ├── NetworkManager.cpp
│ │ │ ├── NetworkManager.h
│ │ │ ├── SecCompDispatcher.cpp
│ │ │ ├── SecCompDispatcher.h
│ │ │ ├── WslDistributionConfig.cpp
│ │ │ ├── WslDistributionConfig.h
│ │ │ ├── binfmt.cpp
│ │ │ ├── binfmt.h
│ │ │ ├── common.h
│ │ │ ├── config.cpp
│ │ │ ├── config.h
│ │ │ ├── drvfs.cpp
│ │ │ ├── drvfs.h
│ │ │ ├── escape.cpp
│ │ │ ├── escape.h
│ │ │ ├── init.cpp
│ │ │ ├── localhost.cpp
│ │ │ ├── localhost.h
│ │ │ ├── main.cpp
│ │ │ ├── plan9.cpp
│ │ │ ├── plan9.h
│ │ │ ├── telemetry.cpp
│ │ │ ├── telemetry.h
│ │ │ ├── timezone.cpp
│ │ │ ├── timezone.h
│ │ │ ├── util.cpp
│ │ │ ├── util.h
│ │ │ ├── waitablevalue.h
│ │ │ ├── wslinfo.cpp
│ │ │ ├── wslinfo.h
│ │ │ ├── wslpath.cpp
│ │ │ └── wslpath.h
│ │ ├── mountutil/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── mountflags.cpp
│ │ │ ├── mountutil.c
│ │ │ ├── mountutil.h
│ │ │ └── mountutilcpp.h
│ │ ├── netlinkutil/
│ │ │ ├── Address.cpp
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Forwarder.h
│ │ │ ├── Forwarder.hxx
│ │ │ ├── Fwd.h
│ │ │ ├── Interface.cpp
│ │ │ ├── Interface.h
│ │ │ ├── InterfaceConfiguration.h
│ │ │ ├── IpNeighborManager.cpp
│ │ │ ├── IpNeighborManager.h
│ │ │ ├── IpRuleManager.cpp
│ │ │ ├── IpRuleManager.h
│ │ │ ├── Makefile.linux
│ │ │ ├── Neighbor.cpp
│ │ │ ├── Neighbor.h
│ │ │ ├── NetLinkStrings.h
│ │ │ ├── NetlinkChannel.h
│ │ │ ├── NetlinkChannel.hxx
│ │ │ ├── NetlinkError.cpp
│ │ │ ├── NetlinkError.h
│ │ │ ├── NetlinkMessage.h
│ │ │ ├── NetlinkMessage.hxx
│ │ │ ├── NetlinkParseException.cpp
│ │ │ ├── NetlinkParseException.h
│ │ │ ├── NetlinkResponse.cpp
│ │ │ ├── NetlinkResponse.h
│ │ │ ├── NetlinkResponse.hxx
│ │ │ ├── NetlinkTransaction.cpp
│ │ │ ├── NetlinkTransaction.h
│ │ │ ├── NetlinkTransactionError.cpp
│ │ │ ├── NetlinkTransactionError.h
│ │ │ ├── Operation.h
│ │ │ ├── Packet.h
│ │ │ ├── Protocol.h
│ │ │ ├── Route.cpp
│ │ │ ├── Route.h
│ │ │ ├── RoutingTable.cpp
│ │ │ ├── RoutingTable.h
│ │ │ ├── Rule.cpp
│ │ │ ├── Rule.h
│ │ │ ├── RuntimeErrorWithSourceLocation.cpp
│ │ │ ├── RuntimeErrorWithSourceLocation.h
│ │ │ ├── Syscall.h
│ │ │ ├── Syscall.hxx
│ │ │ ├── SyscallError.cpp
│ │ │ ├── SyscallError.h
│ │ │ ├── Utils.cpp
│ │ │ ├── Utils.h
│ │ │ ├── Utils.hxx
│ │ │ └── address.h
│ │ └── plan9/
│ │ ├── CMakeLists.txt
│ │ ├── expected.h
│ │ ├── p9await.h
│ │ ├── p9commonutil.h
│ │ ├── p9data.h
│ │ ├── p9defs.h
│ │ ├── p9errors.h
│ │ ├── p9fid.cpp
│ │ ├── p9fid.h
│ │ ├── p9file.cpp
│ │ ├── p9file.h
│ │ ├── p9fs.cpp
│ │ ├── p9fs.h
│ │ ├── p9handler.cpp
│ │ ├── p9handler.h
│ │ ├── p9ihandler.h
│ │ ├── p9io.cpp
│ │ ├── p9io.h
│ │ ├── p9log.h
│ │ ├── p9lx.cpp
│ │ ├── p9lx.h
│ │ ├── p9platform.h
│ │ ├── p9protohelpers.h
│ │ ├── p9readdir.cpp
│ │ ├── p9readdir.h
│ │ ├── p9scheduler.cpp
│ │ ├── p9scheduler.h
│ │ ├── p9tracelogging.cpp
│ │ ├── p9tracelogging.h
│ │ ├── p9tracelogginghelper.h
│ │ ├── p9util.cpp
│ │ ├── p9util.h
│ │ ├── p9xattr.cpp
│ │ ├── p9xattr.h
│ │ ├── precomp.h
│ │ └── result_macros.h
│ ├── shared/
│ │ ├── configfile/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── configfile.cpp
│ │ │ ├── configfile.h
│ │ │ ├── linux/
│ │ │ │ └── CMakeLists.txt
│ │ │ └── windows/
│ │ │ └── CMakeLists.txt
│ │ └── inc/
│ │ ├── CommandLine.h
│ │ ├── JsonUtils.h
│ │ ├── SocketChannel.h
│ │ ├── conncheckshared.h
│ │ ├── defs.h
│ │ ├── gslhelpers.h
│ │ ├── hns_schema.h
│ │ ├── lxfsshares.h
│ │ ├── lxinitshared.h
│ │ ├── message.h
│ │ ├── prettyprintshared.h
│ │ ├── retryshared.h
│ │ ├── socketshared.h
│ │ └── stringshared.h
│ └── windows/
│ ├── common/
│ │ ├── CMakeLists.txt
│ │ ├── ConsoleProgressBar.cpp
│ │ ├── ConsoleProgressBar.h
│ │ ├── ConsoleProgressIndicator.cpp
│ │ ├── ConsoleProgressIndicator.h
│ │ ├── ConsoleState.cpp
│ │ ├── ConsoleState.h
│ │ ├── DeviceHostProxy.cpp
│ │ ├── DeviceHostProxy.h
│ │ ├── Distribution.cpp
│ │ ├── Distribution.h
│ │ ├── Dmesg.cpp
│ │ ├── Dmesg.h
│ │ ├── DnsResolver.cpp
│ │ ├── DnsResolver.h
│ │ ├── DnsTunnelingChannel.cpp
│ │ ├── DnsTunnelingChannel.h
│ │ ├── ExecutionContext.cpp
│ │ ├── ExecutionContext.h
│ │ ├── GnsChannel.cpp
│ │ ├── GnsChannel.h
│ │ ├── GnsPortTrackerChannel.cpp
│ │ ├── GnsPortTrackerChannel.h
│ │ ├── GuestDeviceManager.cpp
│ │ ├── GuestDeviceManager.h
│ │ ├── HandleConsoleProgressBar.cpp
│ │ ├── HandleConsoleProgressBar.h
│ │ ├── INetworkingEngine.h
│ │ ├── Localization.cpp
│ │ ├── LxssMessagePort.cpp
│ │ ├── LxssMessagePort.h
│ │ ├── LxssPort.h
│ │ ├── LxssSecurity.cpp
│ │ ├── LxssSecurity.h
│ │ ├── LxssServerPort.cpp
│ │ ├── LxssServerPort.h
│ │ ├── NatNetworking.cpp
│ │ ├── NatNetworking.h
│ │ ├── Redirector.cpp
│ │ ├── Redirector.h
│ │ ├── RingBuffer.cpp
│ │ ├── RingBuffer.h
│ │ ├── Stringify.h
│ │ ├── SubProcess.cpp
│ │ ├── SubProcess.h
│ │ ├── VirtioNetworking.cpp
│ │ ├── VirtioNetworking.h
│ │ ├── WslClient.cpp
│ │ ├── WslClient.h
│ │ ├── WslCoreConfig.cpp
│ │ ├── WslCoreConfig.h
│ │ ├── WslCoreFilesystem.cpp
│ │ ├── WslCoreFilesystem.h
│ │ ├── WslCoreFirewallSupport.cpp
│ │ ├── WslCoreFirewallSupport.h
│ │ ├── WslCoreHostDnsInfo.cpp
│ │ ├── WslCoreHostDnsInfo.h
│ │ ├── WslCoreMessageQueue.h
│ │ ├── WslCoreNetworkEndpointSettings.cpp
│ │ ├── WslCoreNetworkEndpointSettings.h
│ │ ├── WslCoreNetworkingSupport.cpp
│ │ ├── WslCoreNetworkingSupport.h
│ │ ├── WslInstall.cpp
│ │ ├── WslInstall.h
│ │ ├── WslSecurity.cpp
│ │ ├── WslSecurity.h
│ │ ├── WslTelemetry.cpp
│ │ ├── WslTelemetry.h
│ │ ├── disk.cpp
│ │ ├── disk.hpp
│ │ ├── filesystem.cpp
│ │ ├── filesystem.hpp
│ │ ├── hcs.cpp
│ │ ├── hcs.hpp
│ │ ├── hcs_schema.h
│ │ ├── helpers.cpp
│ │ ├── helpers.hpp
│ │ ├── hvsocket.cpp
│ │ ├── hvsocket.hpp
│ │ ├── install.cpp
│ │ ├── install.h
│ │ ├── interop.cpp
│ │ ├── interop.hpp
│ │ ├── lxssbusclient.cpp
│ │ ├── lxssclient.cpp
│ │ ├── notifications.cpp
│ │ ├── notifications.h
│ │ ├── precomp.h
│ │ ├── registry.cpp
│ │ ├── registry.hpp
│ │ ├── relay.cpp
│ │ ├── relay.hpp
│ │ ├── socket.cpp
│ │ ├── socket.hpp
│ │ ├── string.cpp
│ │ ├── string.hpp
│ │ ├── svccomm.cpp
│ │ ├── svccomm.hpp
│ │ ├── wslutil.cpp
│ │ └── wslutil.h
│ ├── inc/
│ │ ├── LxssDynamicFunction.h
│ │ ├── RegistryWatcher.h
│ │ ├── WmiService.h
│ │ ├── WmiVariant.h
│ │ ├── WslCoreConfigInterface.h
│ │ ├── WslPluginApi.h
│ │ ├── comservicehelper.h
│ │ ├── lxssbusclient.h
│ │ ├── lxssclient.h
│ │ ├── traceloggingconfig.h
│ │ ├── wdk.h
│ │ ├── wsl.h
│ │ ├── wslconfig.h
│ │ ├── wslhost.h
│ │ ├── wslpolicies.h
│ │ ├── wslrelay.h
│ │ └── wslversioninfo.h
│ ├── libwsl/
│ │ ├── CMakeLists.txt
│ │ ├── DllMain.cpp
│ │ ├── WslCoreConfigInterface.cpp
│ │ └── libwsl.def
│ ├── service/
│ │ ├── CMakeLists.txt
│ │ ├── exe/
│ │ │ ├── BridgedNetworking.cpp
│ │ │ ├── BridgedNetworking.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── DistributionRegistration.cpp
│ │ │ ├── DistributionRegistration.h
│ │ │ ├── GnsRpcServer.cpp
│ │ │ ├── GnsRpcServer.h
│ │ │ ├── GuestTelemetryLogger.cpp
│ │ │ ├── GuestTelemetryLogger.h
│ │ │ ├── IMirroredNetworkManager.h
│ │ │ ├── Lifetime.cpp
│ │ │ ├── Lifetime.h
│ │ │ ├── LxssConsoleManager.cpp
│ │ │ ├── LxssConsoleManager.h
│ │ │ ├── LxssCreateProcess.cpp
│ │ │ ├── LxssCreateProcess.h
│ │ │ ├── LxssHttpProxy.cpp
│ │ │ ├── LxssHttpProxy.h
│ │ │ ├── LxssInstance.cpp
│ │ │ ├── LxssInstance.h
│ │ │ ├── LxssIpTables.cpp
│ │ │ ├── LxssIpTables.h
│ │ │ ├── LxssUserCallback.cpp
│ │ │ ├── LxssUserCallback.h
│ │ │ ├── LxssUserSession.cpp
│ │ │ ├── LxssUserSession.h
│ │ │ ├── LxssUserSessionFactory.cpp
│ │ │ ├── LxssUserSessionFactory.h
│ │ │ ├── MirroredNetworking.cpp
│ │ │ ├── MirroredNetworking.h
│ │ │ ├── PluginManager.cpp
│ │ │ ├── PluginManager.h
│ │ │ ├── ServiceMain.cpp
│ │ │ ├── WslCoreAdviseHandler.h
│ │ │ ├── WslCoreGuestNetworkService.cpp
│ │ │ ├── WslCoreGuestNetworkService.h
│ │ │ ├── WslCoreInstance.cpp
│ │ │ ├── WslCoreInstance.h
│ │ │ ├── WslCoreNetworkEndpoint.h
│ │ │ ├── WslCoreTcpIpStateTracking.cpp
│ │ │ ├── WslCoreTcpIpStateTracking.h
│ │ │ ├── WslCoreVm.cpp
│ │ │ ├── WslCoreVm.h
│ │ │ ├── WslMirroredNetworking.cpp
│ │ │ ├── WslMirroredNetworking.h
│ │ │ ├── application.manifest
│ │ │ ├── main.rc
│ │ │ └── resource.h
│ │ ├── inc/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── windowsdefs.idl
│ │ │ └── wslservice.idl
│ │ ├── mc/
│ │ │ ├── CMakeLists.txt
│ │ │ └── wsleventschema.mc
│ │ └── stub/
│ │ ├── CMakeLists.txt
│ │ ├── WslServiceProxyStub.def
│ │ └── WslServiceProxyStub.rc
│ ├── wsl/
│ │ ├── CMakeLists.txt
│ │ ├── main.cpp
│ │ ├── main.rc
│ │ └── resource.h
│ ├── wslg/
│ │ ├── CMakeLists.txt
│ │ ├── main.cpp
│ │ ├── main.rc
│ │ └── resource.h
│ ├── wslhost/
│ │ ├── CMakeLists.txt
│ │ ├── main.cpp
│ │ ├── main.rc
│ │ └── resource.h
│ ├── wslinstall/
│ │ ├── CMakeLists.txt
│ │ ├── DllMain.cpp
│ │ ├── version.rc
│ │ └── wslinstall.def
│ ├── wslinstaller/
│ │ ├── exe/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ServiceMain.cpp
│ │ │ ├── WslInstaller.cpp
│ │ │ ├── WslInstaller.h
│ │ │ ├── WslInstallerFactory.cpp
│ │ │ ├── WslInstallerFactory.h
│ │ │ └── main.rc
│ │ ├── inc/
│ │ │ ├── CMakeLists.txt
│ │ │ └── wslinstallerservice.idl
│ │ ├── stub/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── WslInstallerProxyStub.def
│ │ │ └── WslInstallerProxyStub.rc
│ │ └── wslinstaller.idl
│ ├── wslrelay/
│ │ ├── CMakeLists.txt
│ │ ├── localhost.cpp
│ │ ├── localhost.h
│ │ ├── main.cpp
│ │ ├── main.rc
│ │ └── resource.h
│ └── wslsettings/
│ ├── Activation/
│ │ ├── ActivationHandler.cs
│ │ ├── DefaultActivationHandler.cs
│ │ ├── IActivationHandler.cs
│ │ └── ProtocolActivationHandler.cs
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── Behaviors/
│ │ ├── NavigationViewHeaderBehavior.cs
│ │ └── NavigationViewHeaderMode.cs
│ ├── CMakeLists.txt
│ ├── Constants.cs
│ ├── Contracts/
│ │ ├── Services/
│ │ │ ├── IActivationService.cs
│ │ │ ├── INavigationService.cs
│ │ │ ├── INavigationViewService.cs
│ │ │ ├── IPageService.cs
│ │ │ ├── IWindowService.cs
│ │ │ └── IWslConfigService.cs
│ │ └── ViewModels/
│ │ └── INavigationAware.cs
│ ├── Controls/
│ │ ├── HyperlinkTextBlock.xaml
│ │ ├── HyperlinkTextBlock.xaml.cs
│ │ ├── OOBEContent.xaml
│ │ └── OOBEContent.xaml.cs
│ ├── Converters/
│ │ ├── BooleanToVisibilityConverter.cs
│ │ ├── MegabyteNumberConverter.cs
│ │ ├── MegabyteStringConverter.cs
│ │ └── MillisecondsStringConverter.cs
│ ├── Helpers/
│ │ ├── FrameExtensions.cs
│ │ ├── NavigationHelper.cs
│ │ ├── ResourceExtensions.cs
│ │ ├── RuntimeHelper.cs
│ │ └── TitleBarHelper.cs
│ ├── LibWsl.cs
│ ├── Services/
│ │ ├── ActivationService.cs
│ │ ├── NavigationService.cs
│ │ ├── NavigationViewService.cs
│ │ ├── PageService.cs
│ │ ├── WindowService.cs
│ │ └── WslConfigService.cs
│ ├── Styles/
│ │ ├── Button.xaml
│ │ ├── CommonStyles.xaml
│ │ ├── FontSizes.xaml
│ │ └── Thickness.xaml
│ ├── Usings.cs
│ ├── ViewModels/
│ │ ├── OOBE/
│ │ │ ├── DistroManagementViewModel.cs
│ │ │ ├── DockerDesktopIntegrationViewModel.cs
│ │ │ ├── GPUAccelerationViewModel.cs
│ │ │ ├── GUIAppsViewModel.cs
│ │ │ ├── GeneralViewModel.cs
│ │ │ ├── NetworkingIntegrationViewModel.cs
│ │ │ ├── VSCodeIntegrationViewModel.cs
│ │ │ ├── VSIntegrationViewModel.cs
│ │ │ ├── WelcomeToUbuntuViewModel.cs
│ │ │ └── WorkingAcrossFileSystemsViewModel.cs
│ │ ├── Settings/
│ │ │ ├── AboutViewModel.cs
│ │ │ ├── DeveloperViewModel.cs
│ │ │ ├── FileSystemViewModel.cs
│ │ │ ├── MemAndProcViewModel.cs
│ │ │ ├── NetworkingViewModel.cs
│ │ │ ├── OptionalFeaturesViewModel.cs
│ │ │ └── WslConfigSettingViewModel.cs
│ │ └── ShellViewModel.cs
│ ├── Views/
│ │ ├── OOBE/
│ │ │ ├── DistroManagementPage.xaml
│ │ │ ├── DistroManagementPage.xaml.cs
│ │ │ ├── DockerDesktopIntegrationPage.xaml
│ │ │ ├── DockerDesktopIntegrationPage.xaml.cs
│ │ │ ├── GPUAccelerationPage.xaml
│ │ │ ├── GPUAccelerationPage.xaml.cs
│ │ │ ├── GUIAppsPage.xaml
│ │ │ ├── GUIAppsPage.xaml.cs
│ │ │ ├── GeneralPage.xaml
│ │ │ ├── GeneralPage.xaml.cs
│ │ │ ├── NetworkingIntegrationPage.xaml
│ │ │ ├── NetworkingIntegrationPage.xaml.cs
│ │ │ ├── ShellPage.xaml
│ │ │ ├── ShellPage.xaml.cs
│ │ │ ├── VSCodeIntegrationPage.xaml
│ │ │ ├── VSCodeIntegrationPage.xaml.cs
│ │ │ ├── VSIntegrationPage.xaml
│ │ │ ├── VSIntegrationPage.xaml.cs
│ │ │ ├── WorkingAcrossFileSystemsPage.xaml
│ │ │ └── WorkingAcrossFileSystemsPage.xaml.cs
│ │ └── Settings/
│ │ ├── AboutPage.xaml
│ │ ├── AboutPage.xaml.cs
│ │ ├── DeveloperPage.xaml
│ │ ├── DeveloperPage.xaml.cs
│ │ ├── FileSystemPage.xaml
│ │ ├── FileSystemPage.xaml.cs
│ │ ├── MemAndProcPage.xaml
│ │ ├── MemAndProcPage.xaml.cs
│ │ ├── NetworkingPage.xaml
│ │ ├── NetworkingPage.xaml.cs
│ │ ├── OptionalFeaturesPage.xaml
│ │ ├── OptionalFeaturesPage.xaml.cs
│ │ ├── ShellPage.xaml
│ │ └── ShellPage.xaml.cs
│ ├── Windows/
│ │ ├── MainWindow.xaml
│ │ ├── MainWindow.xaml.cs
│ │ ├── OOBEWindow.xaml
│ │ └── OOBEWindow.xaml.cs
│ ├── app.manifest
│ ├── directory.build.targets.in
│ └── properties/
│ └── AssemblyInfo.cs.in
├── storebroker/
│ ├── PDPs/
│ │ ├── cs-CZ/
│ │ │ └── PDP.xml
│ │ ├── da-DK/
│ │ │ └── PDP.xml
│ │ ├── de-DE/
│ │ │ └── PDP.xml
│ │ ├── en-GB/
│ │ │ └── PDP.xml
│ │ ├── en-us/
│ │ │ └── PDP.xml
│ │ ├── es-ES/
│ │ │ └── PDP.xml
│ │ ├── fi-FI/
│ │ │ └── PDP.xml
│ │ ├── fr-FR/
│ │ │ └── PDP.xml
│ │ ├── hu-HU/
│ │ │ └── PDP.xml
│ │ ├── it-IT/
│ │ │ └── PDP.xml
│ │ ├── ja-JP/
│ │ │ └── PDP.xml
│ │ ├── ko-KR/
│ │ │ └── PDP.xml
│ │ ├── nb-NO/
│ │ │ └── PDP.xml
│ │ ├── nl-NL/
│ │ │ └── PDP.xml
│ │ ├── pl-PL/
│ │ │ └── PDP.xml
│ │ ├── pt-BR/
│ │ │ └── PDP.xml
│ │ ├── pt-PT/
│ │ │ └── PDP.xml
│ │ ├── qps-ploc/
│ │ │ └── PDP.xml
│ │ ├── qps-ploca/
│ │ │ └── PDP.xml
│ │ ├── qps-plocm/
│ │ │ └── PDP.xml
│ │ ├── ru-RU/
│ │ │ └── PDP.xml
│ │ ├── sv-SE/
│ │ │ └── PDP.xml
│ │ ├── tr-TR/
│ │ │ └── PDP.xml
│ │ ├── zh-CN/
│ │ │ └── PDP.xml
│ │ └── zh-TW/
│ │ └── PDP.xml
│ └── sbconfig.json
├── test/
│ ├── README.md
│ ├── linux/
│ │ └── unit_tests/
│ │ ├── Makefile
│ │ ├── auxv.c
│ │ ├── binfmt.c
│ │ ├── brk.c
│ │ ├── build_tests.sh
│ │ ├── cgroup.c
│ │ ├── common.c
│ │ ├── common.h
│ │ ├── dev_pt.c
│ │ ├── dev_pt_2.c
│ │ ├── dev_pt_common.c
│ │ ├── dev_pt_common.h
│ │ ├── drvfs.c
│ │ ├── dup.c
│ │ ├── epoll.c
│ │ ├── eventfd.c
│ │ ├── execve.c
│ │ ├── flock.c
│ │ ├── fork.c
│ │ ├── fscommon.c
│ │ ├── fstab.c
│ │ ├── get_set_id.c
│ │ ├── getaddrinfo.c
│ │ ├── gettime.c
│ │ ├── inotify.c
│ │ ├── interop.c
│ │ ├── ioprio.c
│ │ ├── keymgmt.c
│ │ ├── lxtcommon.h
│ │ ├── lxtevent.c
│ │ ├── lxtevent.h
│ │ ├── lxtfs.c
│ │ ├── lxtfs.h
│ │ ├── lxtlog.c
│ │ ├── lxtlog.h
│ │ ├── lxtmount.c
│ │ ├── lxtmount.h
│ │ ├── lxtutil.c
│ │ ├── lxtutil.h
│ │ ├── madvise.c
│ │ ├── mprotect.c
│ │ ├── mremap.c
│ │ ├── namespace.c
│ │ ├── netlink.c
│ │ ├── overlayfs.c
│ │ ├── pipe.c
│ │ ├── poll.c
│ │ ├── random.c
│ │ ├── resourcelimits.c
│ │ ├── sched.c
│ │ ├── select.c
│ │ ├── sem.c
│ │ ├── shm.c
│ │ ├── socket.c
│ │ ├── socket_nonblock.c
│ │ ├── splice.c
│ │ ├── sysfs.c
│ │ ├── sysinfo.c
│ │ ├── timer.c
│ │ ├── timerfd.c
│ │ ├── tty.c
│ │ ├── ttys.c
│ │ ├── unittests.c
│ │ ├── unittests.h
│ │ ├── user.c
│ │ ├── utimensat.c
│ │ ├── vfsaccess.c
│ │ ├── vnet.c
│ │ ├── waitpid.c
│ │ ├── wslpath.c
│ │ └── xattr.c
│ └── windows/
│ ├── CMakeLists.txt
│ ├── Common.cpp
│ ├── Common.h
│ ├── DrvFsTests.cpp
│ ├── InstallerTests.cpp
│ ├── MountTests.cpp
│ ├── NetworkTests.cpp
│ ├── Plan9Tests.cpp
│ ├── PluginTests.cpp
│ ├── PluginTests.h
│ ├── PolicyTests.cpp
│ ├── SimpleTests.cpp
│ ├── UnitTests.cpp
│ ├── lxsstest.h
│ └── testplugin/
│ ├── CMakeLists.txt
│ └── Plugin.cpp
├── tools/
│ ├── FormatSource.ps1.in
│ ├── SetupClangFormat.bat
│ ├── build-bundle.bat
│ ├── create-dev-cert.ps1
│ ├── create-initrd.ps1
│ ├── deploy/
│ │ ├── deploy-to-host.ps1
│ │ └── deploy-to-vm.ps1
│ ├── devops/
│ │ ├── create-change.py
│ │ ├── create-release.py
│ │ ├── find-release.py
│ │ ├── requirements.txt
│ │ ├── validate-copyright-headers.py
│ │ ├── validate-localization.py
│ │ └── version_functions.ps1
│ ├── generateLocalizationHeader.ps1
│ ├── hooks/
│ │ └── pre-commit
│ └── test/
│ ├── CloudTest-Setup.bat
│ ├── build-test-distro.ps1
│ ├── copy_and_build_tests.ps1
│ ├── copy_tests.ps1
│ ├── gh-release-server.py
│ ├── run-tests.ps1
│ ├── setup-vm-for-tests.ps1
│ ├── test-setup.ps1
│ └── test.bat.in
└── triage/
├── config.yml
├── install-latest-wsl.ps1
└── no-filter.wpaProfile
================================================
FILE CONTENTS
================================================
================================================
FILE: .clang-format
================================================
---
# this file work is a derivative of onecoreuap/net/.clang-format
# https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md
#
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: -4
AlignAfterOpenBracket: AlwaysBreak
AlignConsecutiveAssignments: false
AlignEscapedNewlines: DontAlign
AlignOperands: true
AlignTrailingComments: true
AllowAllParametersOfDeclarationOnNextLine: true
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: None
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
AlwaysBreakAfterDefinitionReturnType: None
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: Custom
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: true
AfterEnum: true
AfterFunction: true
AfterNamespace: false
AfterStruct: true
AfterUnion: true
AfterExternBlock: false
BeforeCatch: true
BeforeElse: true
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeTernaryOperators: true
BreakConstructorInitializers: AfterColon
ColumnLimit: 130
CommentPragmas: '^ IWYU pragma:'
CompactNamespaces: true
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: true
DerivePointerAlignment: false
DisableFormat: false
ExperimentalAutoDetectBinPacking: false
FixNamespaceComments: true
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '^"(stdafx.h|pch.h|precomp.h)"$'
Priority: -1
IndentCaseLabels: false
InsertBraces: true
IndentWidth: 4
IndentWrappedFunctionNames: false
KeepEmptyLinesAtTheStartOfBlocks: true
MacroBlockBegin: '^BEGIN_COM_MAP$|^BEGIN_CONNECTION_POINT_MAP$|^BEGIN_HELPER_NODEMAP$|^BEGIN_MODULE$|^BEGIN_MSG_MAP$|^BEGIN_OBJECT_MAP$|^BEGIN_TEST_CLASS$|^BEGIN_TEST_METHOD$|^BEGIN_TEST_METHOD_PROPERTIES$'
MacroBlockEnd: '^END_COM_MAP$|^END_CONNECTION_POINT_MAP$|^END_HELPER_NODEMAP$|^END_MODULE$|^END_MSG_MAP$|^END_OBJECT_MAP$|^END_TEST_CLASS$|^END_TEST_METHOD$|^END_TEST_METHOD_PROPERTIES$'
MaxEmptyLinesToKeep: 1
NamespaceIndentation: Inner
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
PenaltyBreakBeforeFirstCallParameter: 19
PenaltyBreakComment: 300
PenaltyBreakFirstLessLess: 120
PenaltyBreakString: 1000
PenaltyExcessCharacter: 1
PenaltyReturnTypeOnItsOwnLine: 1000
PointerAlignment: Left
SortIncludes: false
SpaceAfterCStyleCast: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
StatementMacros: [
_Acquires_exclusive_lock_,
_Acquires_lock_,
_Acquires_nonreentrant_lock_,
_Acquires_shared_lock_,
_Analysis_assume_smart_lock_acquired_,
_Analysis_assume_smart_lock_released_,
_Create_lock_level_,
_Detaches_lock_,
_Function_class_,
_Global_cancel_spin_lock_,
_Global_critical_region_,
_Global_interlock_,
_Global_priority_region_,
_Has_lock_kind_,
_Has_lock_level_,
_IRQL_always_function_max_,
_IRQL_always_function_min_,
_IRQL_raises_,
_IRQL_requires_,
_IRQL_requires_max_,
_IRQL_requires_min_,
_IRQL_requires_same_,
_IRQL_restores_,
_IRQL_restores_global_,
_IRQL_saves_,
_IRQL_saves_global_,
_Lock_level_order_,
_Moves_lock_,
_Must_inspect_result_,
_No_competing_thread_,
_Post_same_lock_,
_Post_writable_byte_size_,
_Pre_satisfies_,
_Releases_exclusive_lock_,
_Releases_lock_,
_Releases_nonreentrant_lock_,
_Releases_shared_lock_,
_Replaces_lock_,
_Requires_exclusive_lock_held_,
_Requires_lock_held_,
_Requires_lock_not_held_,
_Requires_no_locks_held_,
_Requires_shared_lock_held_,
_Ret_maybenull_,
_Ret_range_,
_Success_,
_Swaps_locks_,
_Use_decl_annotations_,
_When_,
RpcEndExcept,
]
TabWidth: 4
TypenameMacros: [
IFACEMETHOD,
STDMETHOD,
]
UseTab: Never
...
================================================
FILE: .gdnsuppress
================================================
{
"hydrated": false,
"properties": {
"helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/suppressions"
},
"version": "1.0.0",
"suppressionSets": {
"default": {
"name": "default",
"createdDate": "2025-04-30 22:17:21Z",
"lastUpdatedDate": "2025-04-30 22:17:21Z"
}
},
"results": {
"3d7d59d41a06e01093616033ddd4ecec1e8dcb65363768638eea6acb6d012b4e": {
"signature": "3d7d59d41a06e01093616033ddd4ecec1e8dcb65363768638eea6acb6d012b4e",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"aa145b1818ed203013a6267ca382110ec5ea9c1bf50a812964d4c7b5671224ec": {
"signature": "aa145b1818ed203013a6267ca382110ec5ea9c1bf50a812964d4c7b5671224ec",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"c5f15f6ef4ac3f1e82c31ae0f651ab0f1c8448e34824bf231dd2104cef70d9e5": {
"signature": "c5f15f6ef4ac3f1e82c31ae0f651ab0f1c8448e34824bf231dd2104cef70d9e5",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"e8eb99fd7876f9c79c0ff194de9e21cc77d63573a9b73ba1666778a247dcebff": {
"signature": "e8eb99fd7876f9c79c0ff194de9e21cc77d63573a9b73ba1666778a247dcebff",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"43df748a685bc9feca8cf04c518f57a82012d61665dca65d8a1fb652a55d9391": {
"signature": "43df748a685bc9feca8cf04c518f57a82012d61665dca65d8a1fb652a55d9391",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"fc58019c679cf3c469af5161b1f237f7552ee81c3d3ae29aff2d18fcceafe3e7": {
"signature": "fc58019c679cf3c469af5161b1f237f7552ee81c3d3ae29aff2d18fcceafe3e7",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"bedcd464fd4426dbd786cb09b7407100aa548dfff85d3c89e7fd79c8c2623391": {
"signature": "bedcd464fd4426dbd786cb09b7407100aa548dfff85d3c89e7fd79c8c2623391",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"06d5d116da395c14acda7a67c6530e675cc6d59593a94f37fbc2b91ce05380ca": {
"signature": "06d5d116da395c14acda7a67c6530e675cc6d59593a94f37fbc2b91ce05380ca",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"a93af66a96249e7041eee45e325c2548da917d4c6984e7cf67fa0c052a01a980": {
"signature": "a93af66a96249e7041eee45e325c2548da917d4c6984e7cf67fa0c052a01a980",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"2950fa4920cef845442e43dccfbdd49ca5935a1f0aa115c3b25bf5397d39bac7": {
"signature": "2950fa4920cef845442e43dccfbdd49ca5935a1f0aa115c3b25bf5397d39bac7",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"d747605a4cb9b5cbe7715f638b3909572302db204327120c50f712064c405380": {
"signature": "d747605a4cb9b5cbe7715f638b3909572302db204327120c50f712064c405380",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"be9c9eacd39f7740ac8794956f9133718e7bac4556a7a29ebdbcae5a1c762faf": {
"signature": "be9c9eacd39f7740ac8794956f9133718e7bac4556a7a29ebdbcae5a1c762faf",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"1af653b6acce89da21e37933f80d0686bf8a01aab386620533b42e06b55a3f26": {
"signature": "1af653b6acce89da21e37933f80d0686bf8a01aab386620533b42e06b55a3f26",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"5ba96332382fbe9cfb5c6baf51b5bd6e2644f1aa86c3fad66562dd648458f431": {
"signature": "5ba96332382fbe9cfb5c6baf51b5bd6e2644f1aa86c3fad66562dd648458f431",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"29432097a113f870ee7f86e585601fa1a6013f50b65893a359391ef47f996c73": {
"signature": "29432097a113f870ee7f86e585601fa1a6013f50b65893a359391ef47f996c73",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"352c2da0bfcde6f9f60c43359e7263b07247d26bff0343a369c8e3667c37fbe1": {
"signature": "352c2da0bfcde6f9f60c43359e7263b07247d26bff0343a369c8e3667c37fbe1",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"64bf4920e1b5b21e7312594ca9d95e3b48ac05a9cef507b21d91ba588a0ab08e": {
"signature": "64bf4920e1b5b21e7312594ca9d95e3b48ac05a9cef507b21d91ba588a0ab08e",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"720d1478e66c5f46670729c232d5afb787cdcc007f53e67d31edd4457e60967c": {
"signature": "720d1478e66c5f46670729c232d5afb787cdcc007f53e67d31edd4457e60967c",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"cf0a86680efb56a7eb351df85c51c6ad2e1ae64f108b8729ab7a9dd148d8312b": {
"signature": "cf0a86680efb56a7eb351df85c51c6ad2e1ae64f108b8729ab7a9dd148d8312b",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"3cedf840f8bdf45d29de68eedf06e3548fbdf86ebe3929c38b1be7babd790142": {
"signature": "3cedf840f8bdf45d29de68eedf06e3548fbdf86ebe3929c38b1be7babd790142",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"2e746764a2b4ee4971e2afded4c2dd99c5bf7647a5c8d9ae027d901caf7c5982": {
"signature": "2e746764a2b4ee4971e2afded4c2dd99c5bf7647a5c8d9ae027d901caf7c5982",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"04e31f322d76e5b2d92d36987ae5453b9d7b4eb1aba2e59f9956e088756eb3d3": {
"signature": "04e31f322d76e5b2d92d36987ae5453b9d7b4eb1aba2e59f9956e088756eb3d3",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"df6145ffc4e1301e28b405ec934470ab2346ac60ef1b5a806a470f6a86907141": {
"signature": "df6145ffc4e1301e28b405ec934470ab2346ac60ef1b5a806a470f6a86907141",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"53daee355a750916f6516911381cd31bfbb8de644cb0158a7bfb6456ffab163c": {
"signature": "53daee355a750916f6516911381cd31bfbb8de644cb0158a7bfb6456ffab163c",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"cf5679eb50b6062e91bab7a9a53aa2c356a41289192081f733e42c6def3abc96": {
"signature": "cf5679eb50b6062e91bab7a9a53aa2c356a41289192081f733e42c6def3abc96",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"9dac4ccae735c85dd3974f876f336accefa2f90f3cea74801bf4b148926bd132": {
"signature": "9dac4ccae735c85dd3974f876f336accefa2f90f3cea74801bf4b148926bd132",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"d05aa96a810d8140a0c2269e8d5e64b8b6db02652da6842547e1e1c4139096b5": {
"signature": "d05aa96a810d8140a0c2269e8d5e64b8b6db02652da6842547e1e1c4139096b5",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"cd0ad7bf2ffe4b3d068dc6c9731aa1d8f001250f30ebd3667a8982f03e72c879": {
"signature": "cd0ad7bf2ffe4b3d068dc6c9731aa1d8f001250f30ebd3667a8982f03e72c879",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"8415dbbf5b26dadc3e7d7f09b496a7f53452c60b67019bbb92c48dd1cd0f703a": {
"signature": "8415dbbf5b26dadc3e7d7f09b496a7f53452c60b67019bbb92c48dd1cd0f703a",
"alternativeSignatures": [
"88c2fa648d6200a3832a1a4b6d568c43a9dd89e05e4032c4286450c4d3a9171d"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"20edc36496c8274a97fe9179b56fcc1b5aab4b7e0d6769c23e14181844f64f35": {
"signature": "20edc36496c8274a97fe9179b56fcc1b5aab4b7e0d6769c23e14181844f64f35",
"alternativeSignatures": [
"14b018ac237bbbfe6304e73f454e190a2c60d335f249db0a9af6500eeae4808f"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
},
"2652e38833372ca84eeebf1e9cd6145d4556e3851f7e698f95b5f01574cef372": {
"signature": "2652e38833372ca84eeebf1e9cd6145d4556e3851f7e698f95b5f01574cef372",
"alternativeSignatures": [
"d705445d04087b944ab3e7777bce5c61a4efc64fc7be2953cf7ed8573321a87b"
],
"memberOf": [
"default"
],
"createdDate": "2025-04-30 22:17:21Z"
}
}
}
================================================
FILE: .github/CODEOWNERS
================================================
# File containing policy for file ownership
# Reviewers for all files in the repository
* @microsoft/wsl-maintainers
================================================
FILE: .github/ISSUE_TEMPLATE/Bug_Report.yaml
================================================
---
name: "WSL - Bug Report"
description: Report a bug on Windows Subsystem for Linux
body:
- type: markdown
attributes:
value: |
Please [search for existing issues](https://github.com/microsoft/WSL/issues) before creating a new one.
If you'd like to create a new bug report, please [read the guidance here](https://github.com/Microsoft/WSL/blob/master/CONTRIBUTING.md) before getting started. This will save you time.
- type: input
attributes:
label: Windows Version
description: |
Please run `cmd.exe /c ver` to get the build of Windows you are on.
placeholder: "Microsoft Windows [Version 10.0.19042.867]"
validations:
required: true
- type: input
attributes:
label: WSL Version
description: |
If you are running Windows Subsystem for Linux from the Microsoft Store, please run `wsl.exe --version`.
Else `0.0.0.0`
placeholder: "0.0.0.0"
validations:
required: true
- type: checkboxes
attributes:
label: Are you using WSL 1 or WSL 2?
description: |
Tell us whether the issue is on WSL 2 and/or WSL 1. You can tell by running `wsl -l -v`.
options:
- label: "WSL 2"
- label: "WSL 1"
- type: input
attributes:
label: Kernel Version
description: |
Please tell us what version of the Linux kernel you are using, or if you are using a custom kernel.
You can run `wsl.exe --status` if that command is available to you, or by running `cat /proc/version` in your distro.
placeholder: "5.4.72"
validations:
required: false
- type: input
attributes:
label: Distro Version
description: |
Please tell us what distro you are using (if applicable).
You can get additional information about the version where possible, e.g. on Debian / Ubuntu, run `lsb_release -r`
placeholder: "Ubuntu 16.04"
validations:
required: false
- type: textarea
attributes:
label: Other Software
description: If you're reporting a bug involving WSL's interaction with other applications, please tell us. What applications? What versions?
placeholder: |
Docker Desktop (Windows), version 3.2.2
traceroute, Version: 1:2.0.21-1
Visual Studio Code 1.54.3 with Remote-WSL Extension 0.54.6
MyCustomApplication
validations:
required: false
- type: textarea
attributes:
label: Repro Steps
description: Please list out the steps to reproduce your bug.
placeholder: Your steps go here. Include relevant environmental variables or any other configuration.
validations:
required: true
- type: textarea
attributes:
label: Expected Behavior
description: What were you expecting to see? Include any relevant examples or documentation links.
placeholder: If you want to include screenshots, paste them into the text area or follow up with a separate comment.
validations:
required: true
- type: textarea
attributes:
label: Actual Behavior
description: What happened instead?
placeholder: Include the terminal output, straces of the failing command, etc. as necessary.
validations:
required: true
- type: textarea
attributes:
label: Diagnostic Logs
description: |
Please provide additional diagnostics if needed.
See the [guidance](https://github.com/Microsoft/WSL/blob/master/CONTRIBUTING.md) for info on how to gather Feedback Hub logs, networking logs, and more.
placeholder: Your links to logs or other information go here.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request / Contribution idea
about: Suggest a feature or improvement for the Windows Subsystem for Linux
title: ''
labels: 'feature'
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/actions/triage/action.yml
================================================
name: Run automated triage
inputs:
issue:
required: false
type: string
comment:
required: false
type: string
token:
required: false
type: string
previous_body:
required: false
type: string
runs:
using: "composite"
steps:
- name: 'Run WTI'
shell: pwsh
env:
previous_body: "${{ inputs.previous_body }}"
run: |
$ErrorActionPreference = [System.Management.Automation.ActionPreference]::Stop
$maybe_comment = @()
if (![string]::IsNullOrEmpty("${{ inputs.comment }}"))
{
$maybe_comment = @("--comment", "${{ inputs.comment }}")
}
$maybe_previous_body = @()
if (![string]::IsNullOrEmpty("$env:previous_body"))
{
$env:previous_body | Out-File -Encoding utf8 "triage\previous_body.txt"
$maybe_previous_body = @("--previous-issue-body", "previous_body.txt")
}
curl.exe -L https://github.com/OneBlue/wti/releases/download/v0.1.12/wti.exe -o triage/wti.exe
cd triage && .\wti.exe --issue ${{ inputs.issue }} --config config.yml --github-token "${{ inputs.token }}" --ignore-tags @maybe_comment @maybe_previous_body
================================================
FILE: .github/copilot-instructions.md
================================================
# Windows Subsystem for Linux (WSL)
**ALWAYS reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.**
WSL is the Windows Subsystem for Linux - a compatibility layer for running Linux binary executables natively on Windows. This repository contains the core Windows components that enable WSL functionality.
## Working Effectively
### Critical Platform Requirements
- **Full builds ONLY work on Windows** with Visual Studio and Windows SDK 26100
- **DO NOT attempt to build the main WSL components on Linux** - they require Windows-specific APIs, MSBuild, and Visual Studio toolchain
- Many validation and development tasks CAN be performed on Linux (documentation, formatting, Python validation scripts)
### Windows Build Requirements (Required for Full Development)
- CMake >= 3.25 (`winget install Kitware.CMake`)
- Visual Studio with these components:
- Windows SDK 26100
- MSBuild
- Universal Windows platform support for v143 build tools (X64 and ARM64)
- MSVC v143 - VS 2022 C++ ARM64 build tools (Latest + Spectre) (X64 and ARM64)
- C++ core features
- C++ ATL for latest v143 tools (X64 and ARM64)
- C++ Clang compiler for Windows
- .NET desktop development
- .NET WinUI app development tools
- Enable Developer Mode in Windows Settings OR run with Administrator privileges (required for symbolic link support)
### Building WSL (Windows Only)
1. Clone the repository
2. Generate Visual Studio solution: `cmake .`
3. Build: `cmake --build . -- -m` OR open `wsl.sln` in Visual Studio
4. **NEVER CANCEL: Build takes 20-45 minutes on typical hardware. Set timeout to 60+ minutes.**
Build parameters:
- `cmake . -A arm64` - Build for ARM64
- `cmake . -DCMAKE_BUILD_TYPE=Release` - Release build
- `cmake . -DBUILD_BUNDLE=TRUE` - Build bundle msix package (requires ARM64 built first)
### Deploying WSL (Windows Only)
- Install MSI: `bin\<platform>\<target>\wsl.msi`
- OR use script: `powershell tools\deploy\deploy-to-host.ps1`
- For Hyper-V VM: `powershell tools\deploy\deploy-to-vm.ps1 -VmName <vm> -Username <user> -Password <pass>`
## Cross-Platform Development Tasks
### Documentation (Works on Linux/Windows)
- Install tools: `pip install mkdocs-mermaid2-plugin mkdocs --break-system-packages`
- Build docs: `mkdocs build -f doc/mkdocs.yml`
- **Build time: ~0.5 seconds. Set timeout to 5+ minutes for safety.**
- Output location: `doc/site/`
- **Note**: May show warnings about mermaid CDN access on restricted networks
### Code Formatting and Validation (Works on Linux/Windows)
- Format check: `clang-format --dry-run --style=file <files>`
- Apply formatting: `clang-format -i --style=file <files>`
- Format all source: `powershell formatsource.ps1` (available at repo root after running `cmake .`)
- Validate copyright headers: `python3 tools/devops/validate-copyright-headers.py`
- **Note**: Will report missing headers in generated/dependency files (_deps/), which is expected
- Validate localization: `python3 tools/devops/validate-localization.py`
- **Note**: Only works after Windows build (requires localization/strings/en-us/Resources.resw)
### Distribution Validation (Limited on Linux)
- Validate distribution info: `python3 distributions/validate.py distributions/DistributionInfo.json`
- **Note**: May fail on Linux due to network restrictions accessing distribution URLs
## Testing
### Unit Tests (Windows Only - TAEF Framework)
**CRITICAL: ALWAYS build the ENTIRE project before running tests:**
```powershell
# Build everything first - this is required!
cmake --build . -- -m
# Then run tests
bin\<platform>\<target>\test.bat
```
**Why full build is required:**
- Tests depend on multiple components (libwsl.dll, wsltests.dll, wslservice.exe, etc.)
- Partial builds (e.g., only `configfile` or `wsltests`) will cause test failures
- Changed components must be built together to ensure compatibility
- **DO NOT skip the full build step even if only one file changed**
Test execution:
- Run all tests: `bin\<platform>\<target>\test.bat`
- **NEVER CANCEL: Full test suite takes 30-60 minutes. Set timeout to 90+ minutes.**
- Run subset: `bin\<platform>\<target>\test.bat /name:*UnitTest*`
- Run specific test: `bin\<platform>\<target>\test.bat /name:<class>::<test>`
- WSL1 tests: Add `-Version 1` flag
- Fast mode (after first run): Add `-f` flag (requires `wsl --set-default test_distro`)
- **Requires Administrator privileges** - test.bat will fail without admin rights
Test debugging:
- Wait for debugger: `/waitfordebugger`
- Break on failure: `/breakonfailure`
- Run in-process: `/inproc`
### Linux Unit Tests (Linux Only)
- Location: `test/linux/unit_tests/`
- Build script: `test/linux/unit_tests/build_tests.sh`
- **Note**: Requires specific Linux build environment setup not covered in main build process
## Validation Scenarios
### Always Test These After Changes:
1. **Documentation Build**: Run `mkdocs build -f doc/mkdocs.yml` and verify no errors
2. **Code Formatting**: Run `clang-format --dry-run --style=file` on changed files
3. **Windows Build** (if on Windows): Full cmake build cycle
4. **Distribution Validation**: Run Python validation scripts on any distribution changes
### Manual Validation Requirements
- **Windows builds**: Install MSI and test basic WSL functionality (`wsl --version`, `wsl -l`)
- **Documentation changes**: Review generated HTML in `doc/site/`
- **Distribution changes**: Test with actual WSL distribution installation
## Repository Navigation
### Key Directories
- `src/windows/` - Main Windows WSL service components
- `src/linux/` - Linux-side WSL components
- `src/shared/` - Shared code between Windows and Linux
- `test/windows/` - Windows-based tests (TAEF framework)
- `test/linux/unit_tests/` - Linux unit test suite
- `doc/` - Documentation source (MkDocs)
- `tools/` - Build and deployment scripts
- `distributions/` - Distribution validation and metadata
### Key Files
- `CMakeLists.txt` - Main build configuration
- `doc/docs/dev-loop.md` - Developer build instructions
- `test/README.md` - Testing framework documentation
- `CONTRIBUTING.md` - Contribution guidelines
- `.clang-format` - Code formatting rules
- `UserConfig.cmake.sample` - Optional build customizations
### Frequently Used Commands (Platform-Specific)
#### Windows Development:
```bash
# Initial setup
cmake .
cmake --build . -- -m # 20-45 minutes, NEVER CANCEL
# Deploy and test
powershell tools\deploy\deploy-to-host.ps1
wsl --version
# Run tests
bin\x64\debug\test.bat # 30-60 minutes, NEVER CANCEL
```
#### Cross-Platform Validation:
```bash
# Documentation (0.5 seconds)
mkdocs build -f doc/mkdocs.yml
# Code formatting
find src -name "*.cpp" -o -name "*.h" | xargs clang-format --dry-run --style=file
# Copyright header validation (reports expected issues in _deps/)
python3 tools/devops/validate-copyright-headers.py
# Distribution validation (may fail on networks without external access)
python3 distributions/validate.py distributions/DistributionInfo.json
```
## Debugging and Logging
### ETL Tracing (Windows Only)
```powershell
# Collect traces
wpr -start diagnostics\wsl.wprp -filemode
# [reproduce issue]
wpr -stop logs.ETL
# Available profiles:
# - WSL (default) - General WSL tracing
# - WSL-Storage - Enhanced storage tracing
# - WSL-Networking - Comprehensive networking tracing
# - WSL-HvSocket - HvSocket-specific tracing
# Example: wpr -start diagnostics\wsl.wprp!WSL -filemode
```
### Log Analysis Tools
- Use WPA (Windows Performance Analyzer) for ETL traces
- Key providers: `Microsoft.Windows.Lxss.Manager`, `Microsoft.Windows.Subsystem.Lxss`
### Debug Console (Linux)
Add to `%USERPROFILE%\.wslconfig`:
```ini
[wsl2]
debugConsole=true
```
### Common Debugging Commands
- Debug shell: `wsl --debug-shell`
- Collect WSL logs: `powershell diagnostics\collect-wsl-logs.ps1`
- Network logs: `powershell diagnostics\collect-wsl-logs.ps1 -LogProfile networking`
## Critical Timing and Timeout Guidelines
**NEVER CANCEL these operations - always wait for completion:**
- **Full Windows build**: 20-45 minutes (set timeout: 60+ minutes)
- **Full test suite**: 30-60 minutes (set timeout: 90+ minutes)
- **Unit test subset**: 5-15 minutes (set timeout: 30+ minutes)
- **Documentation build**: ~0.5 seconds (set timeout: 5+ minutes)
- **Distribution validation**: 2-5 minutes (set timeout: 15+ minutes)
## CI/CD Integration
### GitHub Actions
- **distributions.yml**: Validates distribution metadata (Linux)
- **documentation.yml**: Builds and deploys docs (Linux)
- **modern-distributions.yml**: Tests modern distribution support
### Pre-commit Validation
Always run before committing:
1. `clang-format --dry-run --style=file` on changed C++ files
2. `python3 tools/devops/validate-copyright-headers.py` (ignore _deps/ warnings)
3. `mkdocs build -f doc/mkdocs.yml` if documentation changed
4. Full Windows build if core components changed
**Note**: The `.gitignore` file properly excludes build artifacts (*.sln, *.dll, *.pdb, obj/, bin/, etc.) - do not commit these files.
## Development Environment Setup
### Windows (Full Development)
1. Install Visual Studio with required components (listed above)
2. Install CMake 3.25+
3. Enable Developer Mode
4. Clone repository
5. Run `cmake .` to generate solution
### Linux (Documentation/Validation Only)
1. Install Python 3.8+
2. Install clang-format
3. Install docs tools: `pip install mkdocs-mermaid2-plugin mkdocs`
4. Clone repository
5. Run validation commands as needed
Remember: **This is a Windows-focused project**. While some tasks can be performed on Linux, full WSL development requires Windows with Visual Studio.
================================================
FILE: .github/policies/resourceManagement.yml
================================================
id:
name: GitOps.PullRequestIssueManagement
description: GitOps.PullRequestIssueManagement primitive
owner:
resource: repository
disabled: false
where:
configuration:
resourceManagementConfiguration:
scheduledSearches:
- description:
frequencies:
- hourly:
hour: 3
filters:
- isIssue
- isOpen
- hasLabel:
label: needs-author-feedback
- noActivitySince:
days: 7
actions:
- closeIssue
- addReply:
reply: >-
This issue has been automatically closed since it has not had any author activity for the past **7 days**. If you're still experiencing this issue please re-file it as a new issue.
Thank you!
- description: Close year old issues
frequencies:
- weekday:
day: Thursday
time: 12:00
filters:
- isIssue
- isOpen
- isNotLabeledWith:
label: feature
- noActivitySince:
days: 365
actions:
- closeIssue
- addReply:
reply: >-
This issue has been automatically closed since it has not had any activity for the past **year**. If you're still experiencing this issue please re-file this as a new issue or feature request.
Thank you!
eventResponderTasks:
- if:
- payloadType: Issue_Comment
- isAction:
action: Created
- isActivitySender:
issueAuthor: True
- hasLabel:
label: needs-author-feedback
then:
- removeLabel:
label: needs-author-feedback
description:
- if:
- payloadType: Issue_Comment
- commentContains:
pattern: '\/dup(licate|e)?(\s+of)?\s+\#[\d]+'
isRegex: True
- or:
- activitySenderHasPermission:
permission: Admin
- activitySenderHasPermission:
permission: Write
then:
- addReply:
reply: >-
Hi! We've identified this issue as a duplicate of another one that already exists in this repository. This specific instance is being closed in favor of tracking the concern over on the referenced thread.
Thanks for your report!
- closeIssue
- addLabel:
label: duplicate
description:
- if:
- payloadType: Issue_Comment
- commentContains:
pattern: '\/need-repro'
isRegex: True
- or:
- activitySenderHasPermission:
permission: Admin
- activitySenderHasPermission:
permission: Write
then:
- addReply:
reply: >-
We’ve labelled your issue as ‘need-repro’ since we need more steps to help identify your problem.
Could you please provide us with reproducible steps for the issue you’re experiencing, including things such as the specific command line steps necessary to reproduce the behavior and their output.
Thank you!
- addLabel:
label: need-repro
description:
- if:
- payloadType: Issue_Comment
then:
- cleanEmailReply
description:
- if:
- payloadType: Issue_Comment
- commentContains:
pattern: '\/template'
isRegex: True
- or:
- activitySenderHasPermission:
permission: Admin
- activitySenderHasPermission:
permission: Write
then:
- closeIssue
- addReply:
reply: >-
Hi! We've closed your issue since you haven't used the template, or it is incomplete. Could you please provide all the requested info in the bug template and resubmit? Having that information will help us be able to accurately diagnose and resolve your issue.
Thank you!
- lockIssue
description:
- if:
- payloadType: Issue_Comment
- commentContains:
pattern: '\/fixed'
isRegex: True
- or:
- activitySenderHasPermission:
permission: Admin
- activitySenderHasPermission:
permission: Write
then:
- closeIssue
- addLabel:
label: fixedininsiderbuilds
- addReply:
reply: >-
This bug or feature request originally submitted has been addressed in whole or in part. Related or ongoing bug or feature gaps should be opened as a new issue submission if one does not already exist.
Thank you!
- removeLabel:
label: fixinbound
description:
- if:
- payloadType: Issue_Comment
- commentContains:
pattern: '\/logs?'
isRegex: True
- or:
- activitySenderHasPermission:
permission: Admin
- activitySenderHasPermission:
permission: Write
then:
- addReply:
reply: >-
Hello! Could you please provide more logs to help us better diagnose your issue?
To collect WSL logs, download and execute [collect-wsl-logs.ps1](https://github.com/Microsoft/WSL/blob/master/diagnostics/collect-wsl-logs.ps1) in an **administrative powershell prompt**:
```
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1
```
The script will output the path of the log file once done.
Once completed please upload the output files to this GitHub issue.
See [Collect WSL logs (recommended method)](https://github.com/microsoft/WSL/blob/master/CONTRIBUTING.md#8-collect-wsl-logs-recommended-method).
If you choose to email these logs instead of attaching them to the bug, please send them to wsl-gh-logs@microsoft.com with the GitHub issue number in the subject, and include a link to your GitHub issue comment in the message body.
Thank you!
- addLabel:
label: needs-author-feedback
description:
- if:
- payloadType: Issue_Comment
- commentContains:
pattern: '\/dump?'
isRegex: True
- or:
- activitySenderHasPermission:
permission: Admin
- activitySenderHasPermission:
permission: Write
then:
- addReply:
reply: >-
Hello! Could you please provide logs and process dumps to help us better diagnose your issue?
To collect WSL logs and dumps, download and execute [collect-wsl-logs.ps1](https://github.com/Microsoft/WSL/blob/master/diagnostics/collect-wsl-logs.ps1) in an **administrative powershell prompt**:
```
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1 -Dump
```
The script will output the path of the log file once done.
Once completed please upload the output files to this GitHub issue.
See [Collect WSL logs (recommended method)](https://github.com/microsoft/WSL/blob/master/CONTRIBUTING.md#8-collect-wsl-logs-recommended-method).
Thank you!
- addLabel:
label: needs-author-feedback
description:
- if:
- payloadType: Issue_Comment
- commentContains:
pattern: '\/bsod?'
isRegex: True
- or:
- activitySenderHasPermission:
permission: Admin
- activitySenderHasPermission:
permission: Write
then:
- addReply:
reply: >-
Hello! Could you please provide a kernel dump to help us better diagnose your issue?
To collect a kernel dump, follow [10) Reporting a Windows crash (BSOD)](https://github.com/microsoft/WSL/blob/master/CONTRIBUTING.md#10-reporting-a-windows-crash-bsod)
Thank you!
- addLabel:
label: needs-author-feedback
description:
onFailure:
onSuccess:
================================================
FILE: .github/pull_request_template.md
================================================
<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even manually, if necessary)? -->
## Summary of the Pull Request
<!-- Please review the items on the PR checklist before submitting-->
## PR Checklist
- [ ] **Closes:** Link to issue #xxx
- [ ] **Communication:** I've discussed this with core contributors already. If work hasn't been agreed, this work might be rejected
- [ ] **Tests:** Added/updated if needed and all pass
- [ ] **Localization:** All end user facing strings can be localized
- [ ] **Dev docs:** Added/updated if needed
- [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/wsl/) and link it here: #xxx
<!-- Provide a more detailed description of the PR, other things fixed or any additional comments/features here -->
## Detailed Description of the Pull Request / Additional comments
<!-- Describe how you validated the behavior. Add automated tests wherever possible, but list manual validation steps taken as well -->
## Validation Steps Performed
================================================
FILE: .github/workflows/distributions.yml
================================================
name: Validate distributions
on:
pull_request:
paths: ['distributions/**']
jobs:
check:
name: Validate distributions
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Run validation
run: python distributions/validate.py distributions/DistributionInfo.json
shell: bash
================================================
FILE: .github/workflows/documentation.yml
================================================
name: Build documentation
on:
workflow_dispatch:
push:
branches: [main, master]
jobs:
DeployDocs:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
permissions:
contents: read
pages: write
id-token: write
steps:
- name: Checkout actions
uses: actions/checkout@v4
- name: Install packages
run: pip install mkdocs-mermaid2-plugin mkdocs --break-system-packages
shell: bash
- name: Build documentation
run: mkdocs build -f doc/mkdocs.yml
shell: bash
- uses: actions/upload-pages-artifact@v4
with:
path: doc/site
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
================================================
FILE: .github/workflows/issue_edited.yml
================================================
name: Process edited issue
on:
workflow_dispatch:
issues:
types: [edited]
jobs:
wti:
name: Run wti
runs-on: windows-2022
permissions:
issues: write
steps:
- name: Checkout repo
uses: actions/checkout@v4
- uses: ./.github/actions/triage
with:
issue: "${{ github.event.issue.number }}"
previous_body: "${{ github.event.changes.body.from }}"
token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/modern-distributions.yml
================================================
name: Validate tar based distributions
on:
pull_request:
paths: ['distributions/**']
jobs:
check:
name: Validate tar based distributions changes
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install pip packages
run: pip install -r distributions/requirements.txt
shell: bash
- name: Run validation
run: |
python distributions/validate-modern.py \
--repo-path . \
--compare-with-branch 'origin/${{ github.base_ref }}' \
--manifest distributions/DistributionInfo.json \
shell: bash
================================================
FILE: .github/workflows/new_issue.yml
================================================
name: Process new issue
on:
workflow_dispatch :
issues:
types: [opened]
jobs:
wti:
name: Run wti
runs-on: windows-2022
permissions:
issues: write
steps:
- name: Checkout repo
uses: actions/checkout@v4
- uses: ./.github/actions/triage
with:
issue: "${{ github.event.issue.number }}"
token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/new_issue_comment.yml
================================================
name: Process new comment on issue
on:
workflow_dispatch :
issue_comment:
types: [created]
jobs:
wti:
name: Run wti
runs-on: windows-2022
permissions:
issues: write
if: ${{ !github.event.issue.pull_request && github.event.issue.user.id == github.event.comment.user.id }}
steps:
- name: Checkout repo
uses: actions/checkout@v4
- uses: ./.github/actions/triage
with:
issue: '${{ github.event.issue.number }}'
comment: '${{ github.event.comment.id }}'
token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/winget.yml
================================================
name: Publish to WinGet
on:
release:
types: [released]
jobs:
publish:
if: github.event.release.prerelease == false
runs-on: windows-latest # Action can only run on Windows
steps:
- name: Publish WSL
run: |
Set-StrictMode -Version Latest
$ErrorActionPreference = "Stop"
$assets = '${{ toJSON(github.event.release.assets) }}' | ConvertFrom-Json
$wingetRelevantAssetx64 = $assets | Where-Object { $_.name -like '*x64.msi' } | Select-Object -First 1
$wingetRelevantAssetARM64 = $assets | Where-Object { $_.name -like '*arm64.msi' } | Select-Object -First 1
$version = "${{ github.event.release.tag_name }}"
$wingetx64URL = $wingetRelevantAssetx64.browser_download_url
$wingetARM64URL = $wingetRelevantAssetARM64.browser_download_url
$wingetPackageId = "Microsoft.WSL"
& curl.exe -JLO https://aka.ms/wingetcreate/latest
& .\wingetcreate.exe update $wingetPackageId -s -v $version -u "$wingetx64URL|x64" "$wingetARM64URL|arm64" -t "${{ secrets.WINGET_TOKEN }}"
================================================
FILE: .gitignore
================================================
.vscode/*
.vs/
!vendor/.preserve
out
tmp
/.vs/
/.vscode/
*.sln
*.slnx
*.user
*.csproj
*.vcxproj
*.filters
*.pdb
*.lib
*.dll
obj/
Debug/
Release/
Properties/
/_deps/
/package/Strings/en-US/
/packages/
CMakeFiles/
CMakeCache.txt
*.msix
cmake_install.cmake
build_tools/
*_i.c
*_p.c
*_p.c
wslsupport/wslsupport.h
dlldata.c
.gdbinit
llvm/
*.a
*.so
*.o
linux/init/init
linux/init
initrd/init
bin/
*.nupkg
generated/
*.nuspec
test/linux/unit_tests/wsl_unit_tests
*.dir/
UserConfig.cmake
*.wix
*.wixobj
*.wixpdb
test.bat
AppxManifest.xml
package_layout/
priconf.xml
resources.map.txt
resources.pri
msi-install-*.txt
kernellogs.txt
FormatSource.ps1
msixinstaller/x64
package/x64
/appx-logs.txt
tools/clang-format.exe
/linux-crashes
doc/site/
directory.build.targets
test-storage/
*.vhdx
================================================
FILE: .pipelines/build-stage.yml
================================================
parameters:
- name: isRelease
type: boolean
default: true
- name: packageVersion
type: string
default: ""
- name: isNightly
type: boolean
default: false
- name: nugetPackages
type: object
default:
- Microsoft.WSL.PluginApi.nuspec
- name: traceLoggingConfig
type: string
default: ''
- name: targets
type: object
default:
- target: "wsl;libwsl;wslg;wslservice;wslhost;wslrelay;wslinstaller;wslinstall;initramfs;wslserviceproxystub;wslsettings;wslinstallerproxystub;testplugin"
pattern: "wsl.exe,libwsl.dll,wslg.exe,wslservice.exe,wslhost.exe,wslrelay.exe,wslinstaller.exe,wslinstall.dll,wslserviceproxystub.dll,wslsettings/wslsettings.dll,wslsettings/wslsettings.exe,wslinstallerproxystub.dll,wsldevicehost.dll,WSLDVCPlugin.dll,testplugin.dll,wsldeps.dll"
- target: "msixgluepackage"
pattern: "gluepackage.msix"
- target: "msipackage"
pattern: "wsl.msi"
- name: platforms
type: object
default:
- x64
- arm64
- name: pool
type: string
default: ''
- name: vsoOrg
type: string
- name: vsoProject
type: string
- name: esrp
type: object
default:
ConnectedServiceName: "AzureConnection-AME"
signConfigType: "inlineSignParams"
SessionTimeout: 60
MaxConcurrency: 50
MaxRetryAttempts: 5
ServiceEndpointUrl: $(EsrpServiceEndpointUrl)
AuthAKVName: $(EsrpAuthAKVName)
AuthSignCertName: $(EsrpAuthSignCertName)
AppRegistrationClientId: $(EsrpAppRegistrationClientId)
AppRegistrationTenantId: $(EsrpAppRegistrationTenantId)
EsrpClientId: $(EsrpClientId)
stages:
- stage: build
jobs:
- job:
displayName: "Formatting & localization checks"
timeoutInMinutes: 30
variables:
ob_outputDirectory: '$(Build.SourcesDirectory)\out'
${{ if eq(parameters.pool, '') }}:
pool: {'type': 'windows'}
${{ else }}:
pool: ${{ parameters.pool }}
steps:
- script: python tools/devops/validate-localization.py localization/strings en-US
displayName: Validate localization resources
- script: python tools\devops\validate-copyright-headers.py src
displayName: Validate copyright headers (src/)
- script: python tools\devops\validate-copyright-headers.py test
displayName: Validate copyright headers (test/)
- task: CMake@1
displayName: "CMake ."
inputs:
workingDirectory: "."
cmakeArgs: .
- task: PowerShell@2
inputs:
targetType: "filePath"
filePath: FormatSource.ps1
arguments: "-ModifiedOnly $false -Verify $true"
displayName: "Clang-format check"
- job: build
displayName: "Build WSL package"
timeoutInMinutes: 120
${{ if eq(parameters.pool, '') }}:
pool: {'type': 'windows'}
${{ else }}:
pool: ${{ parameters.pool }}
variables:
NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS: 60
NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS: 60
ob_outputDirectory: '$(Build.SourcesDirectory)\out'
ob_artifactBaseName: 'drop_wsl'
ob_artifactSuffix: '_build'
ob_sdl_codeSignValidation_excludes: -|**testbin\**
Codeql.PublishDatabaseLog: true
Codeql.SourceRoot: src
packageStagingDir: '$(Build.SourcesDirectory)\packageStagingDir'
${{ if eq(parameters.isRelease, 'true') }}:
packageInputDirArg: '-DPACKAGE_INPUT_DIR=$(packageStagingDir)'
${{ else }}:
packageInputDirArg: ''
steps:
- task: CodeQL3000Init@0
inputs:
Enabled: ${{ and(parameters.isNightly, eq(variables['Build.SourceBranch'], 'refs/heads/main'))}}
- task: UseDotNet@2
displayName: Install .NET Core SDK (required by EsrpCodeSigning)
condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
inputs:
packageType: "sdk"
- task: PowerShell@2
displayName: Set trace logging configuration
condition: ne('${{ parameters.traceLoggingConfig }}', '')
inputs:
targetType: 'inline'
script: 'Set-Content -Path src/windows/inc/traceloggingconfig.h -Value $env:config.replace("\n", "`n")'
env:
config: '${{ parameters.traceLoggingConfig }}'
- task: PowerShell@2
displayName: "Compute package version"
name: version
inputs:
targetType: inline
${{ if eq(parameters.packageVersion, '') }}:
script: |
$gitversion_version = (Select-Xml -Path packages.config -XPath '/packages/package[@id=''GitVersion.CommandLine'']/@version').Node.Value
$env:path = "packages/GitVersion.CommandLine.$gitversion_version/tools;$env:path"
. .\tools\devops\version_functions.ps1
$version = Get-VersionInfo -Nightly $${{ parameters.isNightly }}
Write-Host "##vso[task.setvariable variable=WSL_PACKAGE_VERSION;isOutput=true]$($version.MsixVersion)"
Write-Host "##vso[task.setvariable variable=WSL_NUGET_PACKAGE_VERSION;isOutput=true]$($version.NugetVersion)"
${{ else }}:
script: |
Write-Host "##vso[task.setvariable variable=WSL_PACKAGE_VERSION;isOutput=true]$([string]('${{ parameters.packageVersion }}' + '.0'))"
Write-Host "##vso[task.setvariable variable=WSL_NUGET_PACKAGE_VERSION;isOutput=true]$([string]('${{ parameters.packageVersion }}'))"
- ${{ each platform in parameters.platforms }}:
- task: CMake@1
displayName: "CMake ${{ platform }}"
inputs:
workingDirectory: "."
cmakeArgs: . --fresh -A ${{ platform }} -DCMAKE_BUILD_TYPE=Release -DCMAKE_SYSTEM_VERSION=10.0.26100.0 -DPACKAGE_VERSION=$(version.WSL_PACKAGE_VERSION) -DWSL_NUGET_PACKAGE_VERSION=$(version.WSL_NUGET_PACKAGE_VERSION) -DSKIP_PACKAGE_SIGNING=${{ parameters.isRelease }} -DOFFICIAL_BUILD=${{ parameters.isRelease }} -DPIPELINE_BUILD_ID=$(Build.BuildId) -DVSO_ORG=${{ parameters.vsoOrg }} -DVSO_PROJECT=${{ parameters.vsoProject }} -DWSL_BUILD_WSL_SETTINGS=true $(packageInputDirArg)\${{ platform }}
# This additional Restore NuGet package task is added as a workaround for WSL Settings to have its packages restored properly.
# Without this, building wsl settings may encounter the following error:
#
# The plugin credential provider could not acquire credentials. Authentication may require manual action.
# Consider re-running the command with --interactive for `dotnet`, /p:NuGetInteractive="true" for MSBuild or removing the -NonInteractive switch for `NuGet`
# Response status code does not indicate success: 401 (Unauthorized)
- script: _deps\nuget.exe restore -NonInteractive
- ${{ each target in parameters.targets }}:
- script: cmake --build . --config Release --target ${{ target.target }} -- -m
condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
displayName: "Build ${{ target.target }} (${{ platform }})"
- ${{ if eq(parameters.isRelease, 'true') }}:
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
displayName: "Sign ${{ target.target }} (${{ platform }})"
condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
inputs:
ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}}
signConfigType: ${{ parameters.esrp.signConfigType }}
SessionTimeout: ${{ parameters.esrp.SessionTimeout }}
MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }}
MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }}
ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }}
AuthAKVName: ${{ parameters.esrp.AuthAKVName }}
AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }}
AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }}
AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }}
FolderPath: "bin\\${{ platform }}\\Release"
Pattern: "${{ target.pattern }}"
UseMSIAuthentication: true
EsrpClientId: ${{ parameters.esrp.EsrpClientId }}
inlineOperation: |
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"Parameters" : {
"OpusName" : "Microsoft",
"OpusInfo" : "http://www.microsoft.com",
"FileDigest" : "/fd \"SHA256\"",
"PageHash" : "/NPH",
"TimeStamp" : "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
},
"ToolName" : "sign",
"ToolVersion" : "1.0"
},
{
"KeyCode" : "CP-230012",
"OperationCode" : "SigntoolVerify",
"Parameters" : {},
"ToolName" : "sign",
"ToolVersion" : "1.0"
}
]
- task: PowerShell@2
displayName: "Copy signed ${{ target.target }} to staging (${{ platform }})"
condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
inputs:
targetType: inline
script: |
$arch = '${{ platform }}'
$pattern = '${{ target.pattern }}'
$inputDir = "bin\$arch\Release"
$outputDir = "$(packageStagingDir)\$arch"
New-Item -ItemType Directory -Path "$outputDir\wslsettings" -Force
foreach ($file in $pattern.Split(',')) {
$sourcePath = Join-Path $inputDir $file
if (Test-Path $sourcePath) {
$destPath = Join-Path $outputDir $file
Write-Host "Copying signed file: $sourcePath -> $destPath"
Copy-Item -Path $sourcePath -Destination $destPath -Force
} else {
Write-Warning "File not found: $sourcePath"
}
}
- script: cmake --build . --config Release -- -m
displayName: "Build installer msix and tests (${{ platform }})"
- task: PowerShell@2
displayName: "Move ${{ platform }} installer msi to output directory"
inputs:
targetType: inline
script: |
New-Item -ItemType Directory -Path "$(ob_outputDirectory)\bundle" -Force
$arch = '${{ platform }}'
Copy-Item -Path "bin\$arch\release\wsl.msi" -Destination "$(ob_outputDirectory)\bundle\wsl.$(version.WSL_PACKAGE_VERSION).$arch.msi"
- ${{ if eq(parameters.isRelease, 'true') }}:
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
displayName: "Sign the bundle"
condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
inputs:
ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}}
signConfigType: ${{ parameters.esrp.signConfigType }}
SessionTimeout: ${{ parameters.esrp.SessionTimeout }}
MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }}
MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }}
ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }}
AuthAKVName: ${{ parameters.esrp.AuthAKVName }}
AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }}
AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }}
AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }}
FolderPath: "bundle"
Pattern: "*.msixbundle"
UseMSIAuthentication: true
EsrpClientId: ${{ parameters.esrp.EsrpClientId }}
inlineOperation: |
[
{
"KeyCode": "CP-230012",
"OperationCode": "SigntoolSign",
"Parameters" : {
"OpusName" : "Microsoft",
"OpusInfo" : "http://www.microsoft.com",
"FileDigest" : "/fd \"SHA256\"",
"PageHash" : "/NPH",
"TimeStamp" : "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
},
"ToolName" : "sign",
"ToolVersion" : "1.0"
},
{
"KeyCode" : "CP-230012",
"OperationCode" : "SigntoolVerify",
"Parameters" : {},
"ToolName" : "sign",
"ToolVersion" : "1.0"
}
]
- script: md.exe $(ob_outputDirectory)\bin\nuget
displayName: "Create the nuget directory"
- ${{ each package in parameters.nugetPackages }}:
- script: nuget.exe pack ${{ package }} -OutputDirectory $(ob_outputDirectory)\bin\nuget -NonInteractive
displayName: Build ${{ package }}
- ${{ if eq(parameters.isRelease, 'true') }}:
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@5
displayName: "Sign nuget packages"
condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
inputs:
ConnectedServiceName: ${{ parameters.esrp.ConnectedServiceName}}
signConfigType: ${{ parameters.esrp.signConfigType }}
SessionTimeout: ${{ parameters.esrp.SessionTimeout }}
MaxConcurrency: ${{ parameters.esrp.MaxConcurrency }}
MaxRetryAttempts: ${{ parameters.esrp.MaxRetryAttempts }}
ServiceEndpointUrl: ${{ parameters.esrp.ServiceEndpointUrl }}
AuthAKVName: ${{ parameters.esrp.AuthAKVName }}
AuthSignCertName: ${{ parameters.esrp.AuthSignCertName }}
AppRegistrationClientId: ${{ parameters.esrp.AppRegistrationClientId }}
AppRegistrationTenantId: ${{ parameters.esrp.AppRegistrationTenantId }}
FolderPath: '$(ob_outputDirectory)\bin\nuget'
Pattern: "*.nupkg"
UseMSIAuthentication: true
EsrpClientId: ${{ parameters.esrp.EsrpClientId }}
inlineOperation: |
[
{
"KeyCode": "CP-401405",
"OperationCode": "NuGetSign",
"Parameters" : {},
"ToolName" : "sign",
"ToolVersion" : "1.0"
},
{
"KeyCode" : "CP-401405",
"OperationCode" : "NuGetVerify",
"Parameters" : {},
"ToolName" : "sign",
"ToolVersion" : "1.0"
}
]
- powershell: |
foreach ($arch in @("x64", "ARM64"))
{
$binFolder = ".\bin\$arch\Release"
$pdbFolder = Join-Path $(ob_outputDirectory) "pdb\$arch\Release"
mkdir $pdbFolder
foreach ($filter in @("*.pdb", "*.debug"))
{
foreach ($e in (Get-ChildItem -Recurse -Path $binFolder -Filter $filter)) {Move-Item -Path $e.fullname -Destination (Join-Path $pdbFolder $e.name)}
}
}
displayName: Collect symbols
- powershell: |
mkdir appxsym
foreach ($arch in @("x64", "ARM64"))
{
Get-ChildItem -Path $(ob_outputDirectory)\pdb\$arch\release\*.pdb -Exclude wsltests.pdb | Compress-Archive -DestinationPath appxsym/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_$arch.zip
Copy-Item -Path appxsym/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_$arch.zip -Destination appxsym/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_$arch.appxsym
}
mkdir $(ob_outputDirectory)/appxupload
Get-ChildItem -Path appxsym/*.appxsym,bundle/release/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_x64_ARM64.msixbundle | Compress-Archive -DestinationPath $(ob_outputDirectory)/appxupload/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_x64_ARM64.zip
Move-Item -Path $(ob_outputDirectory)/appxupload/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_x64_ARM64.zip -Destination $(ob_outputDirectory)/appxupload/Microsoft.WSL_$(version.WSL_PACKAGE_VERSION)_x64_ARM64.appxupload
rm appxsym/*.appxsym
displayName: Create appxupload
condition: and(succeeded(), eq('${{ parameters.isRelease }}', true))
- powershell: |
$taefVersion = (Select-Xml -Path packages.config -XPath '/packages/package[@id=''Microsoft.Taef'']/@version').Node.Value
New-Item -ItemType Directory -Path "$(ob_outputDirectory)\bundle" -Force
foreach ($arch in @("x64", "ARM64"))
{
mkdir $(ob_outputDirectory)\testbin\$arch\release
Move-Item -Path "bin\$arch\release\wsltests.dll" -Destination "$(ob_outputDirectory)\testbin\$arch\release\wsltests.dll"
Move-Item -Path "bin\$arch\release\testplugin.dll" -Destination "$(ob_outputDirectory)\testbin\$arch\release\testplugin.dll"
Move-Item -Path "packages\Microsoft.Taef.$taefVersion\build\Binaries\$arch" -Destination "$(ob_outputDirectory)\testbin\$arch\release\taef"
}
Move-Item -Path "bin\x64\cloudtest" -Destination "$(ob_outputDirectory)\testbin\x64\cloudtest"
Move-Item -Path "tools\test\test-setup.ps1" -Destination "$(ob_outputDirectory)\testbin\test-setup.ps1"
Move-Item -Path "tools\test\CloudTest-Setup.bat" -Destination "$(ob_outputDirectory)\testbin\CloudTest-Setup.bat"
Move-Item -Path "diagnostics\wsl.wprp" -Destination "$(ob_outputDirectory)\testbin\wsl.wprp"
Move-Item -Path "test\linux\unit_tests" -Destination "$(ob_outputDirectory)\testbin\unit_tests"
Move-Item -Path bundle\release\* -Destination $(ob_outputDirectory)\bundle
$TestDistroVersion = (Select-Xml -Path packages.config -XPath '/packages/package[@id=''Microsoft.WSL.TestDistro'']/@version').Node.Value
Copy-Item "packages\Microsoft.WSL.TestDistro.$TestDistroVersion\test_distro.tar.xz" "$(ob_outputDirectory)\testbin\x64"
displayName: Move artifacts to drop directory
- task: PublishSymbols@2
displayName: Publish symbols
inputs:
SymbolServerType: "TeamServices"
TreatNotIndexedAsWarning: true
SymbolsProduct: WSL
SymbolsVersion: $(version.WSL_PACKAGE_VERSION)
SearchPattern: |
$(ob_outputDirectory)/pdb/**/*.pdb
$(ob_outputDirectory)/bin/**/*.exe
$(ob_outputDirectory)/bin/**/*.dll
- ${{ if ne(parameters.pool, '') }}:
- task: PublishPipelineArtifact@1
inputs:
targetPath: $(ob_outputDirectory)
artifactName: $(ob_artifactBaseName)$(ob_artifactSuffix)
- task: CodeQL3000Finalize@0
condition: ${{ and(parameters.isNightly, eq(variables['Build.SourceBranch'], 'refs/heads/main'))}}
================================================
FILE: .pipelines/flight-stage.yml
================================================
parameters:
- name: publishPackage
type: boolean
default: false
- name: packageVersion
type: string
default: ''
- name: bypassTests
type: boolean
default: false
stages:
- stage: flight
${{ if eq(parameters.bypassTests, true) }}:
dependsOn: [build]
${{ else }}:
dependsOn: [test]
jobs:
- job: flight
displayName: 'Package and Flight WSL package'
dependsOn: [] # The stage handles this dependency
pool:
type: windows
variables:
AppId: 9P9TQF7MRM4R
FlightId: $(StoreBrokerFlightId)
StoreBrokerPath: $(Build.SourcesDirectory)\storebroker # location of StoreBroker information in the repo
StoreBrokerPayloadPath: $(Build.ArtifactStagingDirectory)\StoreBrokerPayload # location of package created for flight
WSL_PACKAGE_VERSION: $[ dependencies.build.outputs['version.WSL_PACKAGE_VERSION'] ]
ob_outputDirectory: '$(Build.SourcesDirectory)\out'
ob_artifactBaseName: 'drop_wsl'
ob_artifactSuffix: '_flight'
ob_sdl_checkcflags_enabled : false # Disable the CFLAGS check since we're not actually building anything in this stage
steps:
# Source: https://learn.microsoft.com/azure/devops/pipelines/build/run-retention?view=azure-devops&tabs=powershell
- task: PowerShell@2
condition: and(succeeded(), not(canceled()))
displayName: Retain this build
inputs:
failOnStderr: true
targetType: 'inline'
script: |
$contentType = "application/json";
$headers = @{ Authorization = 'Bearer $(System.AccessToken)' };
$rawRequest = @{ daysValid = 365 * 2; definitionId = $(System.DefinitionId); ownerId = 'User:$(Build.RequestedForId)'; protectPipeline = $false; runId = $(Build.BuildId) };
$request = ConvertTo-Json @($rawRequest);
$uri = "$(System.CollectionUri)$(System.TeamProject)/_apis/build/retention/leases?api-version=6.0-preview.1";
Invoke-RestMethod -uri $uri -method POST -Headers $headers -ContentType $contentType -Body $request;
# Download the build drop
- task: DownloadPipelineArtifact@2
displayName: Download Bundle artifact
inputs:
artifact: "drop_wsl_build"
path: drop
# copy the appxupload folder to the storebroker folder
- powershell: |
mkdir $(StoreBrokerPath)\appxpackage\
Copy-Item -Path drop\appxupload\* -Destination $(StoreBrokerPath)\appxpackage\ -Recurse -Force
displayName: Copy AppxUpload artifact
# creates a submission package that is published to the store; containers store page information and the WSL appxupload
- task: MS-RDX-MRO.windows-store-publish.package-task.store-package@3
displayName: 'Creating StoreBroker Payload'
inputs:
serviceEndpoint: 'AzureConnection-StoreBroker-WIF'
sbConfigPath: $(StoreBrokerPath)\sbconfig.json
sourceFolder: $(StoreBrokerPath)\appxpackage\
contents: Microsoft.WSL_${{ parameters.packageVersion }}.0_x64_ARM64.appxupload
pdpPath: $(StoreBrokerPath)\PDPs\
pdpInclude: PDP.xml
pdpMediaPath: $(StoreBrokerPath)\Media\
outSBPackagePath: $(StoreBrokerPayloadPath)
outSBName: WindowsSubsystemForLinux
# copy the storebroker submission package to the drop folder so it can be used if needed
- powershell: |
New-Item -ItemType Directory -Force -Path $(ob_outputDirectory)
Copy-Item -Path $(StoreBrokerPayloadPath)\* -Destination $(ob_outputDirectory) -Recurse -Force
Copy-Item -Path SBLog.txt -Destination $(ob_outputDirectory) -Force
displayName: Copy StoreBrokerPayload to drop
# submit the package flight to the WSL SelfHost Flight Group
- task: MS-RDX-MRO.windows-store-publish.flight-task.store-flight@3
displayName: 'Flight StoreBroker Package to Partner Center - WSL SelfHost Flight Group'
condition: and(succeeded(), eq('${{ parameters.publishPackage }}', true))
inputs:
serviceEndpoint: 'AzureConnection-StoreBroker-WIF'
appId: $(AppId)
flightId: $(FlightId)
inputMethod: JsonAndZip
jsonPath: $(StoreBrokerPayloadPath)\WindowsSubsystemForLinux.json
zipPath: $(StoreBrokerPayloadPath)\WindowsSubsystemForLinux.zip
force: true
skipPolling: true # skips polling Partner Centre/store API for the state of the package; skipping will mean that errors in the process will only show up in Partner Center
targetPublishMode: Immediate # on completion of this task, the package will be published to the WSL SelfHost flight once certified (no manual clicking of any buttons in Partner Center)
preserveSubmissionId: false
deletePackages: true
numberOfPackagesToKeep: 0
- task: PipAuthenticate@1
displayName: 'Pip Authenticate'
inputs:
artifactFeeds: 'wsl'
# Create a draft github release
- powershell: |
pip install --user -r tools/devops/requirements.txt
python tools/devops/create-release.py '${{ parameters.packageVersion }}' drop\bundle\Microsoft.WSL_${{ parameters.packageVersion }}.0_x64_ARM64.msixbundle drop\bundle\wsl.${{ parameters.packageVersion }}.0.arm64.msi drop\bundle\wsl.${{ parameters.packageVersion }}.0.x64.msi --no-fetch --github-token "$env:token" ${{ iif(parameters.publishPackage, '--publish --auto-release-notes', '--use-current-ref') }}
displayName: Create GitHub release
env:
token: $(GITHUB_RELEASE_TOKEN)
================================================
FILE: .pipelines/nuget-stage.yml
================================================
parameters:
- name: isNightly
type: boolean
default: false
- name: nugetPackages
type: object
default:
- Microsoft.WSL.PluginApi
stages:
- stage: nuget
dependsOn: [build, test]
jobs:
- job: nuget
displayName: 'Publish nuget packages'
condition: and(succeeded(), or(eq(variables['Build.Reason'], 'Schedule'), eq('${{ parameters.isNightly }}', false)))
dependsOn: [] # The stage handles this dependency
pool:
type: windows
variables:
WSL_NUGET_PACKAGE_VERSION: $[ dependencies.build.outputs['version.WSL_NUGET_PACKAGE_VERSION'] ]
NUGET_PLUGIN_HANDSHAKE_TIMEOUT_IN_SECONDS: 60
NUGET_PLUGIN_REQUEST_TIMEOUT_IN_SECONDS: 60
ob_outputDirectory: '$(Build.SourcesDirectory)\out'
ob_artifactBaseName: 'drop_wsl'
ob_artifactSuffix: '_nuget'
steps:
- task: DownloadPipelineArtifact@2
displayName: Download nuget artifacts
inputs:
artifact: "drop_wsl_build"
path: drop
# Note: this task might fail if there's been no commits between two nightly pipelines, which is fine.
- ${{ each package in parameters.nugetPackages }}:
- task: NuGetCommand@2
displayName: Push nuget/${{ package }}.$(WSL_NUGET_PACKAGE_VERSION).nupkg
inputs:
command: 'push'
packagesToPush: drop/nuget/${{ package }}.$(WSL_NUGET_PACKAGE_VERSION).nupkg
nuGetFeedType: 'internal'
publishVstsFeed: wsl
allowPackageConflicts: ${{ parameters.isNightly }}
================================================
FILE: .pipelines/test-job.yml
================================================
parameters:
- name: branch
type: string
- name: version
type: string
- name: image
type: string
- name: run
type: boolean
- name: pool
type: string
default: ''
jobs:
- job: test_${{ parameters.branch }}_${{ parameters.version }}
displayName: "${{ parameters.version }} tests - ${{ parameters.branch }}"
dependsOn: []
condition: and(succeeded(), eq('${{ parameters.run }}', true))
variables:
ob_outputDirectory: '$(Build.SourcesDirectory)\out'
ob_artifactBaseName: 'drop_wsl'
ob_artifactSuffix: '_test'
timeoutInMinutes: 360
cancelTimeoutInMinutes: 420
${{ if eq(parameters.pool, '') }}:
pool: {'type': 'cloudtestagentless'}
${{ else }}:
pool: ${{ parameters.pool }}
steps:
- task: CloudTestServerBuildTask@2
inputs:
DisplayName: "${{ parameters.version }} tests - ${{ parameters.branch }}"
connectedServiceName: "CloudTest-PROD"
cloudTestTenant: "wsl"
testMapLocation: 'testbin\x64\cloudtest\wsl-test-image-${{ parameters.image }}-${{ parameters.version}}\TestMap.xml'
pipelineArtifactName: "drop_wsl_build"
pipelineArtifactBuildUrl: '$(System.TaskDefinitionsUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId)'
buildDropArtifactName: ""
timeoutInMinutes: 360
cancelTimeoutInMinutes: 420
TestTimeout: "0.05:00:00"
parserProperties: "worker:VsTestVersion=V150;session:HoldTrigger=Failure;VstsTestResultAttachmentUploadBehavior=Always"
notificationSubscribers: $(Build.RequestedForEmail)
scheduleBuildRequesterAlias: "lowdev"
================================================
FILE: .pipelines/test-stage.yml
================================================
parameters:
- name: rs_prerelease_only
type: boolean
default: false
- name: pool
type: string
default: ''
- name: versions
type: object
default:
- wsl1
- wsl2
- name: test_images
type: object
default:
- name: rs_prerelease
image: rs_prerelease-2025-01-30
- name: ni_release
image: win11-23h2-ent-2024-11-18
- name: fe_release
image: 2022-datacenter-g2-2024-09-10
- name: vb_release
image: win10-22h2-ent-g2-2024-09-10
# TODO: ge_release
stages:
- stage: test
dependsOn: [build]
jobs:
- ${{ each version in parameters.versions }}:
- ${{ each image in parameters.test_images }}:
- template: test-job.yml@self
parameters:
branch: "${{ image.name }}"
version: ${{ version }}
image: "${{ image.image }}"
run: ${{ or(not(parameters.rs_prerelease_only), eq(image.name, 'rs_prerelease')) }}
pool: "${{ parameters.pool }}"
================================================
FILE: .pipelines/wsl-build-nightly-localization.yml
================================================
trigger:
branches:
include:
- master
paths:
include:
- 'localization/strings/en-US/Resources.resw'
# Schedule nightly build
# Cron syntax: "mm HH DD MM DW" = minutes, hours, days, months, day of week (UTC time)
schedules:
# "0 8" = 8AM UTC = 12AM PST
- cron: "0 8 * * *"
displayName: Nightly Touchdown Build Schedule
branches:
include:
- "master"
always: true
pool:
vmImage: 'windows-latest'
steps:
- checkout : self
persistCredentials: true
- task: TouchdownBuildTask@5
displayName: Touchdown Build Localization
inputs:
environment: 'PRODEXT'
teamId: '38646'
authType: 'FederatedIdentity'
FederatedIdentityServiceConnection: 'Azure-Connection'
isPreview: false
resourceFilePath: |
localization\strings\en-US\Resources.resw;O:localization\strings\
storebroker\PDPs\en-us\PDP.xml;O:storebroker\PDPs\
localizationTarget: true
pseudoSetting: 'Excluded'
cultureMappingType: 'None'
- task: PipAuthenticate@1
inputs:
artifactFeeds: 'wsl'
- powershell: |
pip install --user -r tools/devops/requirements.txt
python tools/devops/create-change.py . "$env:token" "WSL localization" "Localization change from build: $env:buildId" "user/localization/$env:buildId"
displayName: Create pull request
env:
token: $(GithubPRToken)
buildId: $(Build.BuildId)
================================================
FILE: .pipelines/wsl-build-nightly-onebranch.yml
================================================
trigger: none
schedules:
# "0 8" = 8AM UTC = 12AM PST
- cron: "0 8 * * *"
displayName: Nightly build
branches:
include: [master]
always: true
variables:
WindowsContainerImage: "onebranch.azurecr.io/windows/ltsc2022/vse2022:latest"
WindowsHostVersion: '1ESWindows2022'
resources:
repositories:
- repository: templates
type: git
name: OneBranch.Pipelines/GovernedTemplates
ref: refs/heads/main
extends:
template: v2/Microsoft.NonOfficial.yml@templates
parameters:
platform:
name: "windows_undocked"
featureFlags:
EnableCDPxPAT: false
WindowsHostVersion: 1ESWindows2022
globalSdl:
credscan:
enabled: true
perStage:
credscan:
enabled: true
tsa:
enabled: false
git:
fetchDepth: -1
fetchTags: true
stages:
- template: build-stage.yml@self
parameters:
isRelease: false
isNightly: true
vsoOrg: microsoft
vsoProject: Microsoft.WSL
- template: test-stage.yml@self
parameters:
rs_prerelease_only: false
================================================
FILE: .pipelines/wsl-build-notice.yml
================================================
trigger:
branches:
include:
- master
pool:
vmImage: 'windows-latest'
steps:
- checkout : self
persistCredentials: true
- task: ComponentGovernanceComponentDetection@0
displayName: Component Detection
- task: notice@0
displayName: Generate NOTICE file
inputs:
outputfile: $(System.DefaultWorkingDirectory)/NOTICE.txt
outputformat: text
- task: PipAuthenticate@1
inputs:
artifactFeeds: 'wsl'
- powershell: |
pip install --user -r tools/devops/requirements.txt
python tools/devops/create-change.py . "$env:token" "WSL notice" "Notice change from build: $env:buildId" "user/notice/$env:buildId"
displayName: Create pull request
env:
token: $(GithubPRToken)
buildId: $(Build.BuildId)
================================================
FILE: .pipelines/wsl-build-pr-onebranch.yml
================================================
trigger:
branches:
include:
- master
- release/*
variables:
WindowsContainerImage: "onebranch.azurecr.io/windows/ltsc2022/vse2022:latest"
WindowsHostVersion: '1ESWindows2022'
resources:
repositories:
- repository: templates
type: git
name: OneBranch.Pipelines/GovernedTemplates
ref: refs/heads/main
extends:
template: v2/Microsoft.NonOfficial.yml@templates
parameters:
platform:
name: "windows_undocked"
featureFlags:
EnableCDPxPAT: false
WindowsHostVersion: 1ESWindows2022
globalSdl:
suppression:
suppressionFile: $(Build.SourcesDirectory)\.gdnsuppress
suppressionSet: default
apiscan:
enabled: false
credscan:
enabled: true
perStage:
credscan:
enabled: true
policheck:
enabled: true
break: true
severity: Note
git:
fetchDepth: -1
fetchTags: true
stages:
- template: build-stage.yml@self
parameters:
isRelease: false
- template: test-stage.yml@self
parameters:
rs_prerelease_only: true
================================================
FILE: .pipelines/wsl-build-pr.yml
================================================
trigger:
branches:
include:
- master
- release/*
stages:
- template: build-stage.yml@self
parameters:
isRelease: false
pool: 'wsl-build'
vsoOrg: shine-oss
vsoProject: wsl
- template: test-stage.yml@self
parameters:
rs_prerelease_only: true
pool: server
================================================
FILE: .pipelines/wsl-build-release-onebranch.yml
================================================
parameters:
- name: bypassTests
displayName: 'Publish release even if tests fail'
type: boolean
default: false
- name: testVersion
displayName: 'Test the release pipeline'
type: string
default: ''
trigger:
tags:
include: ['*.*.*']
variables:
WindowsContainerImage: "onebranch.azurecr.io/windows/ltsc2022/vse2022:latest"
WindowsHostVersion: '1ESWindows2022'
resources:
repositories:
- repository: templates
type: git
name: OneBranch.Pipelines/GovernedTemplates
ref: refs/heads/main
extends:
template: v2/Microsoft.Official.yml@templates
parameters:
platform:
name: "windows_undocked"
featureFlags:
EnableCDPxPAT: false
WindowsHostVersion: 1ESWindows2022
globalSdl:
credscan:
enabled: true
perStage:
credscan:
enabled: true
tsa:
enabled: false
evidence:
enabled: false
git:
fetchDepth: -1
fetchTags: true
stages:
- template: build-stage.yml@self
parameters:
isRelease: true
packageVersion: ${{ iif(eq(parameters.testVersion, ''), variables['Build.SourceBranchName'], parameters.testVersion) }}
traceLoggingConfig: $(ReleaseTraceLoggingConfig)
vsoOrg: microsoft
vsoProject: Microsoft.WSL
- template: test-stage.yml@self
parameters:
rs_prerelease_only: false
- template: flight-stage.yml@self
parameters:
publishPackage: ${{ iif(eq(parameters.testVersion, ''), true, false) }}
packageVersion: ${{ iif(eq(parameters.testVersion, ''), variables['Build.SourceBranchName'], parameters.testVersion) }}
bypassTests: ${{ parameters.bypassTests }}
- ${{ if eq(parameters.testVersion, '') }}:
- template: nuget-stage.yml@self
parameters:
isNightly: false
================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.25)
set(CMAKE_SYSTEM_VERSION 10.0.26100.0)
project(wsl)
# Rationalize TARGET_PLATFORM
# When neither CMAKE_GENERATOR_PLATFORM nor TARGET_PLATFORM is set, default to the host architecture.
if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "" AND "${TARGET_PLATFORM}" STREQUAL "")
if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "ARM64")
set(TARGET_PLATFORM "arm64")
else()
set(TARGET_PLATFORM "x64")
endif()
message(STATUS "No platform specified, defaulting to '${TARGET_PLATFORM}' based on host architecture.")
endif()
if("${CMAKE_GENERATOR_PLATFORM}" STREQUAL "arm64" OR "${TARGET_PLATFORM}" STREQUAL "arm64")
set(TARGET_PLATFORM "arm64")
set(TEST_DISTRO_PLATFORM "arm64")
elseif("${CMAKE_GENERATOR_PLATFORM}" MATCHES "x64|amd64" OR "${TARGET_PLATFORM}" MATCHES "x64|amd64")
set(TARGET_PLATFORM "x64")
set(TEST_DISTRO_PLATFORM "amd64")
else()
message(FATAL_ERROR "Unsupported platform: ${CMAKE_GENERATOR_PLATFORM}")
endif()
if (NOT ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION} STREQUAL ${CMAKE_SYSTEM_VERSION})
message(FATAL_ERROR "Incorrect Windows SDK version: ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}, requires ${CMAKE_SYSTEM_VERSION}")
endif()
include(FetchContent)
# Import GSL and nlohmannjson
set(FETCHCONTENT_BASE_DIR ${CMAKE_BINARY_DIR}/_deps/${TARGET_PLATFORM})
FetchContent_Declare(GSL
URL https://github.com/microsoft/GSL/archive/refs/tags/v4.0.0.tar.gz
URL_HASH SHA256=f0e32cb10654fea91ad56bde89170d78cfbf4363ee0b01d8f097de2ba49f6ce9)
FetchContent_MakeAvailable(GSL)
FetchContent_GetProperties(GSL SOURCE_DIR GSL_SOURCE_DIR)
FetchContent_Declare(nlohmannjson
URL https://github.com/nlohmann/json/releases/download/v3.12.0/json.tar.xz
URL_HASH SHA256=42f6e95cad6ec532fd372391373363b62a14af6d771056dbfc86160e6dfff7aa )
FetchContent_MakeAvailable(nlohmannjson)
FetchContent_GetProperties(nlohmannjson SOURCE_DIR NLOHMAN_JSON_SOURCE_DIR)
# Import modules
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
find_package(IDL REQUIRED)
find_package(LINUXBUILD REQUIRED)
find_package(NUGET REQUIRED)
find_package(VERSION REQUIRED)
find_package(MC REQUIRED)
find_package(Appx REQUIRED)
# Download nuget packages
restore_nuget_packages()
# Load nuget packages versions and paths
parse_nuget_packages_versions()
find_nuget_package(Microsoft.Direct3D.Linux DIRECT3D /build/native)
find_nuget_package(Microsoft.Identity.MSAL.WSL.Proxy MSAL /build/native/bin)
find_nuget_package(Microsoft.RemoteDesktop.Client.MSRDC.SessionHost MSRDC /build/native/bin)
find_nuget_package(Microsoft.Taef TAEF /)
find_nuget_package(Microsoft.Windows.ImplementationLibrary WIL /)
find_nuget_package(Microsoft.WSL.DeviceHost WSL_DEVICE_HOST /build/native)
find_nuget_package(Microsoft.WSL.Kernel KERNEL /build/native)
find_nuget_package(Microsoft.WSL.bsdtar BSDTARD /build/native/bin)
find_nuget_package(Microsoft.WSL.LinuxSdk LINUXSDK /)
find_nuget_package(Microsoft.WSL.TestDistro TEST_DISTRO /)
find_nuget_package(Microsoft.WSLg WSLG /build/native/bin)
find_nuget_package(vswhere VSWHERE /tools)
find_nuget_package(Wix WIX /tools/net6.0/any)
# Architecture-specific nuget packages from the OS repo.
if (${TARGET_PLATFORM} STREQUAL "x64")
find_nuget_package(Microsoft.DXCore.Linux.amd64fre DXCORE /build/native)
find_nuget_package(Microsoft.WSL.Dependencies.amd64fre WSLDEPS /build/native)
endif()
if (${TARGET_PLATFORM} STREQUAL "arm64")
find_nuget_package(Microsoft.DXCore.Linux.arm64fre DXCORE /build/native)
find_nuget_package(Microsoft.WSL.Dependencies.arm64fre WSLDEPS /build/native)
endif()
# Wsl Settings packages
find_nuget_package(CommunityToolkit.Mvvm CTK_MVVM /)
find_nuget_package(CommunityToolkit.WinUI.Animations CTK_ANIMATIONS /)
find_nuget_package(CommunityToolkit.WinUI.Controls.SettingsControls CTK_STTNGS_CTRLS /)
find_nuget_package(Microsoft.Extensions.Hosting EXTS_HOSTING /)
find_nuget_package(Microsoft.NETCore.App.Runtime.win-${TARGET_PLATFORM} DOTNET_RUNTIME /)
find_nuget_package(Microsoft.WindowsAppSDK WIN_APP_SDK /)
find_nuget_package(Microsoft.Windows.SDK.NET.Ref WINDOWS_SDK_DOTNET /)
find_nuget_package(Microsoft.Xaml.Behaviors.WinUI.Managed XAML_BEHAVIORS /)
find_nuget_package(WinUIEx WINUIEX /)
set(WSLG_TS_PLUGIN_DLL "WSLDVCPlugin.dll")
# Default to debug build if unspecified
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Debug")
endif()
set(SUPPORTED_LANGS cs-CZ;da-DK;de-DE;en-GB;en-US;es-ES;fi-FI;fr-FR;hu-HU;it-IT;ja-JP;ko-KR;nb-NO;nl-NL;pl-PL;pt-BR;pt-PT;ru-RU;sv-SE;tr-TR;zh-CN;zh-TW)
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/UserConfig.cmake")
find_package(USER REQUIRED PATHS ${CMAKE_CURRENT_LIST_DIR})
endif()
# Optional target configuration
if (NOT DEFINED WSL_BUILD_WSL_SETTINGS)
set(WSL_BUILD_WSL_SETTINGS false)
endif ()
# Only generate the build configuration that CMake is configured for
set(CMAKE_CONFIGURATION_TYPES "${CMAKE_BUILD_TYPE}" CACHE STRING "" FORCE)
find_commit_hash(COMMIT_HASH)
if (NOT PACKAGE_VERSION)
find_version(PACKAGE_VERSION WSL_NUGET_PACKAGE_VERSION) # Fetch the package version from git if not specified
endif ()
if (NOT PACKAGE_VERSION MATCHES "^([0-9]+).([0-9]+).([0-9]+).([0-9]+)$")
message(FATAL_ERROR "PACKAGE_VERSION is invalid: '${PACKAGE_VERSION}'. Needs to match '([0-9]+).([0-9]+).([0-9]+).([0-9]+)'")
endif()
set(PACKAGE_VERSION_MAJOR ${CMAKE_MATCH_1})
set(PACKAGE_VERSION_MINOR ${CMAKE_MATCH_2})
set(PACKAGE_VERSION_REVISION ${CMAKE_MATCH_3})
# The store requires the revision number to be 0, so enforce this on official builds
if (OFFICIAL_BUILD AND NOT PACKAGE_VERSION MATCHES "^([0-9]+).([0-9]+).([0-9]+).0$")
message(FATAL_ERROR "PACKAGE_VERSION is invalid: '${PACKAGE_VERSION}'. Needs to match '([0-9]+).([0-9]+).([0-9]+).0' for official builds")
endif()
# Configure output directories
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin/${TARGET_PLATFORM})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Debug)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/Release)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
# Packaging variables
set(BIN ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE})
file(MAKE_DIRECTORY ${BIN})
set (GENERATED_DIR ${CMAKE_BINARY_DIR}/generated)
file(MAKE_DIRECTORY ${GENERATED_DIR})
set(PACKAGE_CERTIFICATE ${GENERATED_DIR}/dev-cert.pfx)
file(CREATE_LINK ${WSL_DEVICE_HOST_SOURCE_DIR}/bin/${TARGET_PLATFORM}/wsldevicehost.dll ${BIN}/wsldevicehost.dll)
file(CREATE_LINK ${WSLG_SOURCE_DIR}/${TARGET_PLATFORM}/${WSLG_TS_PLUGIN_DLL} ${BIN}/${WSLG_TS_PLUGIN_DLL})
file(CREATE_LINK ${WSLDEPS_SOURCE_DIR}/bin/wsldeps.dll ${BIN}/wsldeps.dll)
if (${SKIP_PACKAGE_SIGNING})
set(PACKAGE_SIGN_COMMAND echo Skipped package signing for:)
else()
if (NOT EXISTS ${PACKAGE_CERTIFICATE})
execute_process(
COMMAND powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive ${CMAKE_CURRENT_LIST_DIR}/tools/create-dev-cert.ps1 -OutputPath ${PACKAGE_CERTIFICATE}
COMMAND_ERROR_IS_FATAL ANY)
endif()
set(PACKAGE_SIGN_COMMAND SignTool.exe sign /a /v /fd SHA256 /f ${PACKAGE_CERTIFICATE})
endif()
# Generate local test script
configure_file(${CMAKE_CURRENT_LIST_DIR}/tools/test/test.bat.in ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/test.bat)
# Common build flags
set(CMAKE_CXX_STANDARD 20)
if (${CMAKE_BUILD_TYPE} STREQUAL "Debug")
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreadedDebug)
else()
set(CMAKE_MSVC_RUNTIME_LIBRARY MultiThreaded)
endif()
if (${TARGET_PLATFORM} STREQUAL "x64")
add_compile_definitions(_AMD64_)
endif()
if (${TARGET_PLATFORM} STREQUAL "arm64")
add_compile_definitions(_ARM64_)
endif()
add_definitions(/sdl) # Default-initialize class members
add_definitions(/FS) # Enable parallel PDB access
add_compile_definitions(UNICODE
WIL_SUPPRESS_PRIVATE_API_USE
CPPWINRT_SUPPRESS_STATIC_INITIALIZERS
NOMINMAX
_CRT_SECURE_NO_WARNINGS
KERNEL_VERSION="${KERNEL_VERSION}"
WSLDEPS_VERSION="${WSLDEPS_VERSION}"
WSLG_VERSION="${WSLG_VERSION}"
WSLG_TS_PLUGIN_DLL=L"${WSLG_TS_PLUGIN_DLL}"
WSL_DEVICE_HOST_VERSION="${WSL_DEVICE_HOST_VERSION}"
COMMIT_HASH="${COMMIT_HASH}"
WSL_PACKAGE_VERSION="${PACKAGE_VERSION}"
MSRDC_VERSION="${MSRDC_VERSION}"
DIRECT3D_VERSION="${DIRECT3D_VERSION}"
DXCORE_VERSION="${DXCORE_VERSION}"
WSL_PACKAGE_VERSION_MAJOR=${PACKAGE_VERSION_MAJOR}
WSL_PACKAGE_VERSION_MINOR=${PACKAGE_VERSION_MINOR}
WSL_PACKAGE_VERSION_REVISION=${PACKAGE_VERSION_REVISION}
WSL_BUILD_WSL_SETTINGS=${WSL_BUILD_WSL_SETTINGS})
if (${OFFICIAL_BUILD})
add_compile_definitions(WSL_OFFICIAL_BUILD)
endif()
if (${WSL_BUILD_THIN_PACKAGE})
add_compile_definitions(WSL_DEV_THIN_MSI_PACKAGE="${BIN}/wsl.msi")
endif ()
string(REPLACE "/Zi" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) # make sure /Zi is removed from the debug flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /W3 /WX /ZH:SHA_256")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Z7 -DDEBUG -DDBG")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Zi /guard:cf /Qspectre")
# Linker flags
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /debug:full /debugtype:cv,fixup /guard:cf /DYNAMICBASE")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /debug:full /debugtype:cv,fixup /guard:cf /DYNAMICBASE")
if (${TARGET_PLATFORM} STREQUAL "x64")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} /CETCOMPAT")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} /CETCOMPAT")
endif()
# Common link libraries
link_directories(${WSLDEPS_SOURCE_DIR}/lib/)
set(COMMON_LINK_LIBRARIES
ws2_32.lib
Userenv.lib
RuntimeObject.lib
Pathcch.lib
ntdll.lib
RpcRT4.lib
Mswsock.lib
Shlwapi.lib
synchronization.lib
Bcrypt.lib
icu.lib)
set(MSI_LINK_LIBRARIES
Wintrust.lib
msi.lib)
set(HCS_LINK_LIBRARIES
computecore.lib
computenetwork.lib
Iphlpapi.lib)
set(SERVICE_LINK_LIBRARIES
MI.lib
wsldeps.lib)
# Linux
if(${TARGET_PLATFORM} STREQUAL "" OR ${TARGET_PLATFORM} STREQUAL "x64")
set(LLVM_ARCH x86_64)
elseif(${TARGET_PLATFORM} STREQUAL "arm64")
set(LLVM_ARCH aarch64)
else()
message(FATAL_ERROR "Unsupported platform: '${TARGET_PLATFORM}'")
endif()
# Determine the Visual Studio installation directory which contains LLVM tools.
# Supported versions: VS2022 and VS2026.
# Prefer VS2022 to keep local clang-format output aligned with pipeline expectations.
function(find_vs_install_dir VERSION_RANGE OUTPUT_VAR)
execute_process(
COMMAND "${VSWHERE_SOURCE_DIR}/vswhere.exe" -version "${VERSION_RANGE}" -products * -requires Microsoft.VisualStudio.Component.VC.Llvm.Clang -property installationPath -prerelease -latest
OUTPUT_VARIABLE _vs_install_dir
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY
)
set(${OUTPUT_VAR} "${_vs_install_dir}" PARENT_SCOPE)
endfunction()
find_vs_install_dir("[17.0,18.0)" VS_INSTALL_DIR)
if (NOT VS_INSTALL_DIR)
find_vs_install_dir("[18.0,19.0)" VS_INSTALL_DIR)
if (VS_INSTALL_DIR)
message(WARNING "Visual Studio 2022 was not found; using Visual Studio 2026 instead. clang-format output may differ from pipeline expectations.")
endif()
endif()
if (NOT VS_INSTALL_DIR)
message(FATAL_ERROR "Could not determine Visual Studio installation directory.")
endif()
if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64")
set(LLVM_INSTALL_DIR "${VS_INSTALL_DIR}/VC/Tools/Llvm/x64/bin")
else()
set(LLVM_INSTALL_DIR "${VS_INSTALL_DIR}/VC/Tools/Llvm/${CMAKE_HOST_SYSTEM_PROCESSOR}/bin")
endif()
if (NOT EXISTS ${LLVM_INSTALL_DIR})
message(FATAL_ERROR "C++ Clang Compiler for Windows is not installed at ${LLVM_INSTALL_DIR}. Please install it from the Visual Studio Installer.")
endif()
# Generate the clang-format script which contains a path to clang-format.exe
configure_file(${CMAKE_CURRENT_LIST_DIR}/tools/FormatSource.ps1.in ${CMAKE_BINARY_DIR}/FormatSource.ps1)
cmake_path(COMPARE "${wsl_SOURCE_DIR}" EQUAL "${wsl_BINARY_DIR}" BUILD_IN_SOURCE)
if (NOT ${BUILD_IN_SOURCE}) # Testing on 3.26 project_type_DIR paths appear canonicalized
file(CREATE_LINK ${LLVM_INSTALL_DIR}/clang-format.exe ${wsl_SOURCE_DIR}/tools/clang-format.exe COPY_ON_ERROR)
endif()
set(LINUXSDK_PATH ${LINUXSDK_SOURCE_DIR}/${LLVM_ARCH})
set(LLVM_TARGET "${LLVM_ARCH}-unknown-linux-musl")
set(LINUX_CC ${LLVM_INSTALL_DIR}/clang.exe)
set(LINUX_CXX ${LLVM_INSTALL_DIR}/clang++.exe)
set(LINUX_AR ${LLVM_INSTALL_DIR}/llvm-ar.exe)
set(LINUX_COMMON_FLAGS --gcc-toolchain=${LINUXSDK_PATH}
-fpic
-B${LINUXSDK_PATH}
-isysroot ${LINUXSDK_PATH}
-isystem ${LINUXSDK_PATH}/include/c++/v1
-isystem ${LINUXSDK_PATH}/include
-isystem ${GSL_SOURCE_DIR}/include
-isystem "${WSLDEPS_SOURCE_DIR}/include/lxcore"
-isystem "${WSLDEPS_SOURCE_DIR}/include/schemas"
-I "${CMAKE_CURRENT_LIST_DIR}/src/linux/inc"
-I "${CMAKE_CURRENT_LIST_DIR}/src/linux/mountutil"
-I "${CMAKE_CURRENT_LIST_DIR}/src/linux/plan9"
-I "${CMAKE_CURRENT_LIST_DIR}/src/shared/configfile"
-I "${CMAKE_CURRENT_LIST_DIR}/src/shared/inc"
-I "${NLOHMAN_JSON_SOURCE_DIR}/include"
-I "${CMAKE_BINARY_DIR}/generated"
--no-standard-libraries
-Werror
-Wall
-Wpointer-arith
-D_POSIX_C_SOURCE=200809L
-Dswprintf_s=swprintf
-fms-extensions
-target ${LLVM_TARGET}
-D_GNU_SOURCE=1
-D_LARGEFILE64_SOURCE
-DWSL_PACKAGE_VERSION="${PACKAGE_VERSION}"
-DWSL_PACKAGE_VERSION_MAJOR=${PACKAGE_VERSION_MAJOR}
-DWSL_PACKAGE_VERSION_MINOR=${PACKAGE_VERSION_MINOR}
-DWSL_PACKAGE_VERSION_REVISION=${PACKAGE_VERSION_REVISION}
)
if (${TARGET_PLATFORM} STREQUAL "x64")
set(LINUX_COMMON_FLAGS ${LINUX_COMMON_FLAGS} -D_AMD64_)
endif()
if (${TARGET_PLATFORM} STREQUAL "arm64")
set(LINUX_COMMON_FLAGS ${LINUX_COMMON_FLAGS} -D_ARM64_)
endif()
set(LINUX_CXXFLAGS ${LINUX_COMMON_FLAGS} -std=c++20)
set(LINUX_CFLAGS ${LINUX_COMMON_FLAGS} -std=c99)
string(TOLOWER ${CMAKE_BUILD_TYPE} build_type)
if (build_type STREQUAL debug)
set(LINUX_BUILD_TYPE_FLAGS -g3 -fno-inline-functions -DDEBUG -DDBG)
else()
set(LINUX_BUILD_TYPE_FLAGS -g -O2 -DNDEBUG)
endif()
set(LINUX_LDFLAGS -target ${LLVM_TARGET}
--gcc-toolchain=${LINUXSDK_PATH}
-B${LINUXSDK_PATH}
-isysroot ${LINUXSDK_PATH}
-nostartfiles
--no-standard-libraries
-fuse-ld=lld.exe
-L${LINUXSDK_PATH}/lib
-L${LINUXSDK_PATH}/lib/linux
-L${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}
-lclang_rt.builtins-${LLVM_ARCH}
-l:libc.a
-static)
set(COMMON_LINUX_LINK_LIBRARIES configfile)
file(GLOB COMMON_LINUX_HEADERS CONFIGURE_DEPENDS "${CMAKE_CURRENT_LIST_DIR}/src/shared/inc/*.h")
if(DEFINED ENV{WSL_DEV_BINARY_PATH})
set(WSL_DEV_BINARY_PATH $ENV{WSL_DEV_BINARY_PATH})
endif()
if (DEFINED WSL_DEV_BINARY_PATH) # Development shortcut to make the package smaller
add_compile_definitions(WSL_SYSTEM_DISTRO_PATH="${WSL_DEV_BINARY_PATH}/system.vhd"
WSL_KERNEL_PATH="${WSL_DEV_BINARY_PATH}/kernel"
WSL_KERNEL_MODULES_PATH="${WSL_DEV_BINARY_PATH}/modules.vhd"
WSL_DEV_INSTALL_PATH="${WSL_DEV_BINARY_PATH}"
WSL_GPU_LIB_PATH="${WSL_DEV_BINARY_PATH}/lib")
endif()
# Common include paths
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/wil/include)
include_directories(${WSLDEPS_SOURCE_DIR}/include)
include_directories(${WSLDEPS_SOURCE_DIR}/include/Windows)
include_directories(${WSLDEPS_SOURCE_DIR}/include/schemas)
include_directories(${WSLDEPS_SOURCE_DIR}/include/lxcore)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/shared/inc)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/windows/inc)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/src/windows/service/inc/${TARGET_PLATFORM}/${CMAKE_BUILD_TYPE})
include_directories(${CMAKE_CURRENT_BINARY_DIR}/src/windows/wslinstaller/inc/${TARGET_PLATFORM}/${CMAKE_BUILD_TYPE})
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/linux/init/inc)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/windows/common)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/shared/configfile)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/localization)
include_directories(${CMAKE_BINARY_DIR}/generated)
include_directories(${WIL_SOURCE_DIR}/include)
include_directories(${GSL_SOURCE_DIR}/include)
include_directories(${TAEF_SOURCE_DIR}/build/include)
include_directories(${NLOHMAN_JSON_SOURCE_DIR}/include)
link_directories(${TAEF_SOURCE_DIR}/build/Library/${TARGET_PLATFORM})
set(TAEF_LINK_LIBRARIES
TE.Common.lib
Wex.Common.lib
Wex.Logger.lib)
# Subprojects
add_subdirectory(nuget)
add_subdirectory(msixgluepackage)
add_subdirectory(msipackage)
add_subdirectory(msixinstaller)
add_subdirectory(src/windows/common)
add_subdirectory(src/windows/service)
add_subdirectory(src/windows/wslinstaller/inc)
add_subdirectory(src/windows/wslinstaller/stub)
add_subdirectory(src/windows/wslinstaller/exe)
add_subdirectory(src/shared/configfile)
add_subdirectory(src/windows/wsl)
add_subdirectory(src/windows/wslg)
add_subdirectory(src/windows/wslhost)
add_subdirectory(src/windows/wslrelay)
add_subdirectory(src/windows/wslinstall)
if (WSL_BUILD_WSL_SETTINGS)
add_subdirectory(src/windows/libwsl)
add_subdirectory(src/windows/wslsettings)
endif()
add_subdirectory(src/linux/netlinkutil)
add_subdirectory(src/linux/mountutil)
add_subdirectory(src/linux/plan9)
add_subdirectory(src/linux/init)
add_subdirectory(localization)
add_subdirectory(test/windows)
if (DEFINED PIPELINE_BUILD_ID)
add_subdirectory(cloudtest)
endif()
if(DEFINED ENV{WSL_POST_BUILD_COMMAND})
set(WSL_POST_BUILD_COMMAND $ENV{WSL_POST_BUILD_COMMAND})
endif ()
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Microsoft Open Source Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
Resources:
- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
================================================
FILE: CONTRIBUTING.md
================================================
# WSL contributing guide
There are a few main ways to contribute to WSL, with guides to each one:
1. [Add a feature or bugfix to WSL](#add-a-feature-or-bugfix-to-wsl)
2. [File a WSL issue](#file-a-wsl-issue)
## Add a feature or bugfix to WSL
We welcome any contributions to the WSL source code to add features or fix bugs! Before you start actually working on the feature, please **[file it as an issue, or a feature request in this repository](https://github.com/microsoft/WSL/issues)** so that we can track it and provide any feedback if necessary.
Once you have done so, please see [the developer docs](./doc/docs/dev-loop.md) for instructions on how to build WSL locally on your machine for development.
When your fix is ready, please [submit it as a pull request in this repository](https://github.com/microsoft/WSL/pulls) and the WSL team will triage and respond to it. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
## File a WSL issue
You can file issues for WSL at the WSL repository, or linked repositories. Before filing an issue please search for any existing issues and upvote or comment on those if possible.
1. If your issue is related to WSL documentation, please file it at [microsoftdocs/wsl](https://github.com/microsoftdocs/WSL/issues)
2. If your issue is related to a Linux GUI app, please file it at [microsoft/wslg](https://github.com/microsoft/wslg/issues)
3. Otherwise, if you have a technical issue related to WSL in general, such as start up issues, etc., please file it at [microsoft/wsl](https://github.com/microsoft/WSL/issues)
Please provide as much information as possible when reporting a bug or filing an issue on the Windows Subsystem for Linux, and be sure to include logs as necessary!
Please see the [notes for collecting WSL logs](#notes-for-collecting-wsl-logs) section below for more info on filing issues.
## Thank you
Thank you in advance for your contribution! We appreciate your help in making WSL a better tool for everyone.
## Notes for collecting WSL logs
### Important: Reporting BSODs and Security issues
**Do not open GitHub issues for Windows crashes (BSODs) or security issues.** Instead, send Windows crashes or other security-related issues to secure@microsoft.com.
See the `10) Reporting a Windows crash (BSOD)` section below for detailed instructions.
### Reporting issues in Windows Console or WSL text rendering/user experience
Note that WSL distro's launch in the Windows Console (unless you have taken steps to launch a 3rd party console/terminal). Therefore, *please file UI/UX related issues in the [Windows Console issue tracker](https://github.com/microsoft/console)*.
### Collect WSL logs for networking issues
Install iptables and tcpdump in your WSL distribution using the following commands.
Note: This will not work if WSL has Internet connectivity issues.
```
# sudo apt-get update
# sudo apt-get -y install iptables tcpdump
```
Install [WPR](https://learn.microsoft.com/windows-hardware/test/wpt/windows-performance-recorder)
To collect WSL networking logs, do the following steps in an administrative powershell prompt:
```
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1 -LogProfile networking
```
The script will output when log collection starts. Reproduce the problem, then press any key to stop the log collection.
The script will output the path of the log file once done.
For additional network creation logs (restarts WSL), use:
```
.\collect-wsl-logs.ps1 -LogProfile networking -RestartWslReproMode
```
<!-- Preserving anchors -->
<div id="8-detailed-logs"></div>
<div id="9-networking-logs"></div>
<div id="8-collect-wsl-logs-recommended-method"></div>
### Collect WSL logs (recommended method)
If you choose to email these logs instead of attaching them to the bug, please send them to wsl-gh-logs@microsoft.com with the GitHub issue number in the subject, and include a link to your GitHub issue comment in the message body.
To collect WSL logs, download and execute [collect-wsl-logs.ps1](https://github.com/Microsoft/WSL/blob/master/diagnostics/collect-wsl-logs.ps1) in an administrative powershell prompt:
```
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1
```
The script will output the path of the log file once done.
For specific scenarios, you can use different log profiles:
- `.\collect-wsl-logs.ps1 -LogProfile storage` - Enhanced storage tracing
- `.\collect-wsl-logs.ps1 -LogProfile networking` - Comprehensive networking tracing (includes packet capture, tcpdump, etc.)
- `.\collect-wsl-logs.ps1 -LogProfile networking -RestartWslReproMode` - Networking tracing with WSL restart for network creation logs
- `.\collect-wsl-logs.ps1 -LogProfile hvsocket` - HvSocket-specific tracing
### 10) Reporting a Windows crash (BSOD)
To collect a kernel crash dump, first run the following command in an elevated command prompt:
```
reg.exe add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl /v AlwaysKeepMemoryDump /t REG_DWORD /d 1 /f
```
Then reproduce the issue, and let the machine crash and reboot.
After reboot, the kernel dump will be in `%SystemRoot%\MEMORY.DMP` (unless this path has been overridden in the advanced system settings).
Please send this dump to: secure@microsoft.com .
Make sure that the email body contains:
- The GitHub issue number, if any
- That this dump is intended for the WSL team
### 11) Reporting a WSL process crash
The easiest way to report a WSL process crash is by [collecting a user-mode crash dump](https://learn.microsoft.com/windows/win32/wer/collecting-user-mode-dumps).
To collect dumps of all running WSL processes, please open a PowerShell prompt with admin privileges, navigate to a folder where you'd like to put your log files and run these commands:
```
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/collect-wsl-logs.ps1" -OutFile collect-wsl-logs.ps1
Set-ExecutionPolicy Bypass -Scope Process -Force
.\collect-wsl-logs.ps1 -Dump
```
The script will output the path to the log file when it is done.
#### Enable automatic crash dump collection
If your crash is sporadic or hard to reproduce, please enable automatic crash dumps to catch logs for this behavior:
```
md C:\crashes
reg.exe add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /f
reg.exe add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpFolder /t REG_EXPAND_SZ /d C:\crashes /f
reg.exe add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /v DumpType /t REG_DWORD /d 2 /f
```
Crash dumps will then automatically be written to C:\crashes.
Once you're done, crash dump collection can be disabled by running the following command in an elevated command prompt:
```
reg.exe delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps" /f
```
### 12) Collect wslservice time travel debugging traces
To collect time travel debugging traces:
1) [Install WinDbg preview](https://apps.microsoft.com/store/detail/windbg-preview/9PGJGD53TN86?hl=en-us&gl=us&rtc=1)
2) Open WinDbg preview as administrator by running `windbgx` in an elevated command prompt
3) Navigate to `file` -> `Attach to process`
4) Check `Record with Time Travel Debugging` (at the bottom right)
4) Check `Show processes from all users` (at the bottom)
5) Select `wslservice.exe`. Note, if wslservice.exe is not running, you make it start it with: `wsl.exe -l`
6) Click `Configure and Record` (write down the folder you chose for the traces)
7) Reproduce the issue
8) Go back to WinDbg and click `Stop and Debug`
9) Once the trace is done collecting, click `Stop Debugging` and close WinDbg
10) Go to the folder where the trace was collected, and locate the .run file. It should look like: `wslservice*.run`
11) Share that file on the issue
================================================
FILE: DATA_AND_PRIVACY.md
================================================
# WSL data & privacy
## Overview
WSL collects diagnostic data using Windows telemetry, just like other Windows components. You can disable this by opening Windows Settings, navigating to Privacy and Security -> Diagnostics & Feedback and disabling 'Diagnostic data'. You can also view all diagnostic data that you are sending in that menu using the 'View diagnostic data' option.
For more information please read the [Microsoft privacy statement](https://www.microsoft.com/privacy/privacystatement).
## What does WSL collect?
1. Usage
- Understanding what features and settings are most often used in WSL helps us make decisions on where to focus our time and energy.
2. Stability
- Monitoring bugs and system crashes assists us in prioritizing the most urgent issues.
3. Performance
- Assessing the performance of WSL gives us an understanding of what runtimes / components could be causing slow downs. This supports our commitment in providing you a speedy and effective WSL.
You can search for WSL telemetry events by looking for calls to `WSL_LOG_TELEMETRY` in the source code of this repository.
================================================
FILE: Directory.Build.Props
================================================
<Project>
<PropertyGroup>
<UseMultiToolTask>true</UseMultiToolTask>
<EnforceProcessCountAcrossBuilds>true</EnforceProcessCountAcrossBuilds>
</PropertyGroup>
<ItemDefinitionGroup>
<CustomBuild>
<BuildInParallel>true</BuildInParallel>
</CustomBuild>
</ItemDefinitionGroup>
</Project>
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) Microsoft Corporation.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE
================================================
FILE: NOTICE.txt
================================================
NOTICES AND INFORMATION
Do Not Translate or Localize
This software incorporates material from third parties.
Microsoft makes certain open source code available at https://3rdpartysource.microsoft.com,
or you may send a check or money order for US $5.00, including the product name,
the open source component name, platform, and version number, to:
Source Code Compliance Team
Microsoft Corporation
One Microsoft Way
Redmond, WA 98052
USA
Notwithstanding any other terms, you may reverse engineer this software to the extent
required to debug changes to any libraries licensed under the GNU Lesser General Public License.
---------------------------------------------------------
llvm/llvm-project d32170dbd5b0d54436537b6b75beaf44324e0c28 - Apache-2.0 WITH LLVM-exception
(c) (tm)
(c) Value A
(c) auto AS
(c) Value Sd
(c) auto AST
(c) CXType PT
(c) Type I1Ty
(c) Value RHS
(c) X1 ... X1
(c) Type I32Ty
(c) Value Elt0
Copyright 2014
(c) Type Int8Ty
(c) Type V8x8Ty
(c) Value FMSub
(c) unsigned AS
(c) Constant One
(c) Type FloatTy
(c) Type Int16Ty
(c) Type Int32Ty
(c) Type Int64Ty
(c) Value AllocA
(c) Value Alloca
Alloc1 a1 (c) R1
Alloc1 a2 (c) R1
(c) FileID MainID
(c) Lower C Upper
(c) Stmt NumExprs
(c) Type DoubleTy
(c) Type I32PtrTy
(c) Value AllocaA
Coproc, Opc1, CRm
(c) ConstantInt C2
(c) EUR CHECK-NEXT
(c) Scale 1 Offset
(c) State UNQUOTED
(c) Type IndexType
Copyright (c) 2012
Copyright (c) 2013
Copyright (c) 2019
Exprs new (c) Stmt
(c) ExprResult NewE
(c) Metadata Ops MD
(c) SelectInst SelI
(c) SmallVector MDs
(c) TransferBatch B
(c) Type Int32PtrTy
(c) Type Int64PtrTy
(c) BasicBlock Entry
(c) CXXRecordDecl CD
(c) FunctionType FTy
(c) Offset C- Offset
Copyright 2010 INRIA
Copyright 2011 INRIA
Copyright 2012 INRIA
Copyright 2014 INRIA
Copyright 2015 INRIA
Copyright 2016 INRIA
(c) FunctionType FnTy
(c) QualType ResultTy
(c) SourceRange Range
AsmToks new (c) Token
SubExprs new (c) Stmt
(c) 2008 Red Hat, Inc.
(c) 2011 Anthony Green
(c) BasicBlock EntryBB
(c) FunctionType FFnTy
(c) FunctionType IFnTy
(c) SourceLocation Loc
Condition (c) Branches
Context (c) LineToUnit
Copyright (c) 2013 IBM
(c) ErrMsg Stream Error
(c) SmallVector NewVars
(c) SmallVector ToErase
Bbb kind copyright' Bbb
(c) Constant PosDivisorC
CommonPtr new (c) Common
Copyright (c) 2012 CHECK
(c) CharUnits AlignedSize
(c) Constant NullV2I32Ptr
(c) Constant PosDividendC
Copyright 2010-2011 INRIA
Copyright 2014-2015 INRIA
COPYRIGHT,v 1.3 2003/06/02
Coproc, Opc1, Rt, Rt2, CRm
Copyright 2003 Google Inc.
Copyright 2008 Google Inc.
Copyright 2009 Google Inc.
Copyright 2015 Google Inc.
Copyright 2018 Google Inc.
Copyright The LLVM project
coprime. APInt A HugePrime
copyrighted by the author.
(c) IdentifierInfo NumExprs
(c) VectorType Int8PtrVecTy
(c) Willem van Schaik, 1999
Copyright (c) 1997, Phillip
Copyright 2005, Google Inc.
Copyright 2006, Google Inc.
Copyright 2007, Google Inc.
Copyright 2008, Google Inc.
Copyright 2012 Google, Inc.
Copyright 2013, Google Inc.
Copyright 2015, Google Inc.
InitCache (c) TransferBatch
copyright u'2015, LLVM Team
Copyright 2006, Dean Edwards
(c) CHECK-NEXT 194 CHECK-NEXT
(c) CXXBaseSpecifier NumBases
(c) Designator NumDesignators
(c) StringLiteral NumClobbers
Constraints new (c) StringRef
Copyright (c) 2002 Bo Thorsen
Copyright (c) 2010 Apple Inc.
Copyright (c) by P.J. Plauger
Copyright 2010 Zencoder, Inc.
Copyright 2017 Roman Lebedev.
ParamInfo new (c) ParmVarDecl
Copyright (c) 2000 Software AG
Copyright (c) 2002 Roger Sayle
Copyright (c) 2008 David Daney
Copyright (c) 2009 Google Inc.
Copyright (c) 2016 Aaron Watry
Copyright (c) 2017 Google Inc.
Copyright (c) 2018 Jim Ingham.
Copyright 2009 The Go Authors.
Copyright 2010 The Go Authors.
Copyright 2011 The Go Authors.
Copyright 2012 The Go Authors.
Copyright 2013 The Go Authors.
Copyright 2014 The Go Authors.
Copyright 2015 The Go Authors.
(c) (3) educational corporation
(c) CHECK-NEXT foo() CHECK-NEXT
(copr0) ConstantDataVector CDV1
(copr1) ConstantDataVector CDV2
Copyright (c) 1994 X Consortium
Copyright (c) 2008 Matteo Frigo
Copyright (c) 2009 Matteo Frigo
Copyright (c) 2010 CodeSourcery
Copyright (c) 2011 Kyle Moffett
Copyright (c) 2011 Tilera Corp.
Copyright (c) 2011 Timothy Wall
Copyright (c) 2012 Peter Harris
Copyright (c) 2012 Tilera Corp.
Copyright 2008-2010 Apple, Inc.
Copyright 2015 Sven Verdoolaege
Copyright 2016 Sven Verdoolaege
Copyright 2017 Sven Verdoolaege
Copyright 2018 Sven Verdoolaege
Copyright, License, and Patents
Other Coprocessor Instructions.
(c) StringLiteral NumConstraints
Copyright (c) 1996 Red Hat, Inc.
Copyright (c) 2002 Ranjit Mathew
Copyright (c) 2004 Anthony Green
Copyright (c) 2004 Simon Posnjak
Copyright (c) 2008 Anthony Green
Copyright (c) 2008 Red Hat, Inc.
Copyright (c) 2011 Anthony Green
Copyright (c) 2012 Anthony Green
Copyright (c) 2014 Red Hat, Inc.
Copyright 2011 Sven Verdoolaege.
(c) foo() pragma omp target teams
Copyright (c) 1992 Henry Spencer.
Copyright (c) 2000 John Hornkvist
Copyright (c) 2001 John Hornkvist
Copyright (c) 2006 Kirill Simonov
Copyright (c) 2012 Alan Hourihane
Copyright 2001-2004 Unicode, Inc.
copyright u'2003- d, LLVM Project
copyright u'2011- d, LLVM Project
(c) CyclesSaved + LocalCyclesSaved
Copyright (c) 1999-2007 Apple Inc.
Copyright (c) 2009 The Go Authors.
Copyright (c) 2009-2019 Polly Team
Copyright (c) 2012 Thorsten Glaser
Copyright (c) 2013 Tensilica, Inc.
Copyright 2012 Universiteit Leiden
Copyright 2016-2017 Tobias Grosser
copyright u'2007- d, The LLDB Team
copyright u'2013- d, Analyzer Team
Constraint new (c) AtomicConstraint
Copyright (c) 1998 Cygnus Solutions
Copyright (c) 1998 Geoffrey Keating
Copyright (c) 2001 David E. O'Brien
Copyright (c) 2013 Mentor Graphics.
Copyright (c) 2015the LLVM Project.
Copyright 2009-2010 The Go Authors.
copyright u'2007- d, The Clang Team
copyright u'2010- d, The Polly Team
copyright u'2011-2018, LLVM Project
Copyright (C ) Microsoft Corporation
Copyright (c) 2000, 2007 Software AG
Copyright (c) 2001 Alexander Peslyak
Copyright (c) 2012, 2013 Xilinx, Inc
Copyright (c) 2014, 2015 Google Inc.
Copyright (c) 2019 The MLIR Authors.
Copyright (c) Microsoft Corporation.
Copyright 2009, 2010 The Go Authors.
Copyright 2015-2016 Sven Verdoolaege
Copyright 2016, 2017 Tobias Grosser.
Copyright 2016-2017 Sven Verdoolaege
(c) PointerType InitPtrType InitValue
Copyright (c) 1996-2003 Red Hat, Inc.
Copyright (c) 1996-2004 Red Hat, Inc.
Copyright (c) 1999-2003 Steve Purcell
Copyright (c) 2012-2016, Yann Collet.
Copyright 2011,2015 Sven Verdoolaege.
Copyright (c) 1996, 1998 Red Hat, Inc.
Copyright (c) 1998, 2008 Red Hat, Inc.
Copyright (c) 1999, 2008 Red Hat, Inc.
Copyright (c) 2004 Renesas Technology.
Copyright (c) 2008 Christian Haggstrom
Copyright (c) 2008, 2010 Red Hat, Inc.
Copyright (c) 2011, 2012 Anthony Green
Copyright (c) 2011, 2013 Anthony Green
Copyright (c) 2011, 2014 Anthony Green
Copyright (c) 2012, 2013 Anthony Green
Copyright (c) 2012, 2014 Anthony Green
Copyright 2007-2010 by the Sphinx team
(c) 2006 Free Software Foundation, Inc.
(c) CHECK-NEXT T break CHECK-NEXT Preds
Copyright (c) 1998, 2012 Andreas Schwab
Copyright (c) 2002-2004 Tim J. Robbins.
Copyright (c) 2005 Free Standards Group
Copyright 2005-2007 Universiteit Leiden
Copyright 2006-2007 Universiteit Leiden
Copyright 2012 Ecole Normale Superieure
Copyright 2013 Ecole Normale Superieure
Copyright 2014 Ecole Normale Superieure
Copyright 2016 Ismael Jimenez Martinez.
Portions Copyright 2009 The Go Authors.
in LLVM, Diploma Thesis, (c) April 2011
(c) StringRef NumClobbers // FIXME Avoid
Copyright (c) 1996-1998 John D. Polstra.
Copyright (c) 2002-2008, 2012 Kaz Kojima
Copyright (c) 1997-2019 Intel Corporation
Copyright (c) 2005 Axis Communications AB
Copyright (c) 2010-2015 Benjamin Peterson
Copyright 1992, 1993, 1994 Henry Spencer.
coproc_option_imm Operand let PrintMethod
(c) CXXCtorInitializer NumIvarInitializers
Copyright (c) 2000 Hewlett Packard Company
Copyright (c) 2002 Bo Thorsen <bo@suse.de>
Copyright (c) 1996-2003, 2010 Red Hat, Inc.
Copyright (c) 2004 eXtensible Systems, Inc.
Copyright (c) 2009-2014 by the contributors
Copyright (c) 2009-2015 by the contributors
Copyright (c) 2009-2016 by the contributors
Copyright (c) 2009-2019 by the contributors
Copyright (c) 2011 Free Software Foundation
Copyright (c) 2011-2014 by the contributors
Copyright (c) 2011-2019 by the contributors
Copyright (c) 2013 Imagination Technologies
Copyright (c) 2017-2019 by the contributors
(c) CHECK-NEXT Preds (1) B4 CHECK-NEXT Succs
(c) CHECK-NEXT Preds (1) B5 CHECK-NEXT Succs
(c) CHECK-NEXT Preds (1) B7 CHECK-NEXT Succs
CoprocNumAsmOperand AsmOperandClass let Name
CoprocRegAsmOperand AsmOperandClass let Name
Copyright (c) 1993 by Sun Microsystems, Inc.
Copyright (c) 1996, 1998, 2005 Red Hat, Inc.
Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
Copyright (c) 1998, 2008, 2011 Red Hat, Inc.
Copyright (c) 1999, 2007, 2008 Red Hat, Inc.
Copyright (c) 2004 by Sun Microsystems, Inc.
Copyright (c) 2007, 2009, 2010 Red Hat, Inc.
Copyright (c) 2011, 2012, 2013 Anthony Green
Copyright 2012,2014 Ecole Normale Superieure
Copyright 2012-2013 Ecole Normale Superieure
Copyright 2012-2014 Ecole Normale Superieure
Copyright 2013-2014 Ecole Normale Superieure
Copyright (c) 1992, 1993, 1994 Henry Spencer.
Copyright (c) 2002-2007 Michael J. Fromberger
Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
Copyright (c) 2012, 2013 Anthony Green Target
Copyright 2000 Free Software Foundation, Inc.
Copyright 2004 Free Software Foundation, Inc.
Copyright (c) 2008 Ryan McCabe <ryan@numb.org>
(c) 2003-2004 Randolph Chung <tausq@debian.org>
CoprocOptionAsmOperand AsmOperandClass let Name
Copyright (c) 2003, 2004, 2006, 2008 Kaz Kojima
Copyright (c) 2014 Advanced Micro Devices, Inc.
Copyright (c) 2015 Advanced Micro Devices, Inc.
Copyright (c) 1994-1999 Lucent Technologies Inc.
Copyright (c) 2002, 2007 Bo Thorsen <bo@suse.de>
Copyright (c) 2013 Imagination Technologies Ltd.
(c) Designator NumDesigs NumDesignators NumDesigs
Copyright (c) 1992, 1993 UNIX International, Inc.
Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
Copyright (c) 2004 Free Software Foundation, Inc.
Copyright (c) 2006 Free Software Foundation, Inc.
Copyright (c) 2007 Free Software Foundation, Inc.
Copyright (c) 2008 Free Software Foundation, Inc.
Copyright (c) 2009 Free Software Foundation, Inc.
Copyright (c) 2011 Free Software Foundation, Inc.
Copyright (c) 2012 Free Software Foundation, Inc.
Copyright (c) 2012, Noah Spurrier <noah@noah.org>
Copyright (c) 2013-2014, Pexpect development team
Copyright (c) 2013-2016, Pexpect development team
Copyright (c) 2014 Free Software Foundation, Inc.
Copyright (c) 2015 Paul Norman <penorman@mac.com>
Copyright (c) 2016 Aaron Watry <awatry@gmail.com>
Copyright extcopyright~ he year the LLVM Project.
(c) CHECK-NEXT Preds (3) B3 B4 B2 CHECK-NEXT Succs
(c) CHECK-NEXT Preds (3) B3 B5 B6 CHECK-NEXT Succs
Copyright (c) 1996, 2007, 2008, 2011 Red Hat, Inc.
Copyright (c) 1998, 2001, 2007, 2008 Red Hat, Inc.
Copyright (c) 1998, 2007, 2008, 2012 Red Hat, Inc.
Copyright (c) 2000, 2003, 2004, 2008 Red Hat, Inc.
Copyright (c) 2003-2010 Python Software Foundation
Copyright (c) 2012 Zack Weinberg <zackw@panix.com>
Copyright 1992-2018 Free Software Foundation, Inc.
Copyright 2008-2009 Katholieke Universiteit Leuven
(c) Stmt NumExprs std::copy Exprs, Exprs + NumExprs
Copyright (c) 1996, MPEG Software Simulation Group.
Copyright (c) 2003 Jakub Jelinek <jakub@redhat.com>
Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
Copyright (c) 2008 Stepan Kasal <skasal@redhat.com>
Copyright (c) 2011 Plausible Labs Cooperative, Inc.
Copyright (c) 2012 Qualcomm Innovation Center, Inc.
Copyright (c) 2008 Benjamin Kosnik <bkoz@redhat.com>
Copyright (c) 2013 Synopsys, Inc. (www.synopsys.com)
Copyright (c) 2013 Synposys, Inc. (www.synopsys.com)
Copyright (c) 2014,2015 Advanced Micro Devices, Inc.
Copyright (c) 2002, 2003, 2004, 2006, 2008 Kaz Kojima
Copyright (c) 2003, 2004, 2006, 2007, 2012 Kaz Kojima
Copyright (c) 2013 Miodrag Vallat. <miod@openbsd.org>
Copyright (c) 2014, 2015 Advanced Micro Devices, Inc.
Copyright (c) 2016 Krzesimir Nowak <qdlacz@gmail.com>
Copyright (c) 1994-2014 Free Software Foundation, Inc.
Copyright (c) 1994-2017 Free Software Foundation, Inc.
Copyright (c) 1996, 2003-2004, 2007-2008 Red Hat, Inc.
Copyright (c) 1996-2014 Free Software Foundation, Inc.
Copyright (c) 1996-2015 Free Software Foundation, Inc.
Copyright (c) 1996-2017 Free Software Foundation, Inc.
Copyright (c) 1997-2014 Free Software Foundation, Inc.
Copyright (c) 1997-2017 Free Software Foundation, Inc.
Copyright (c) 1999-2013 Free Software Foundation, Inc.
Copyright (c) 1999-2014 Free Software Foundation, Inc.
Copyright (c) 1999-2017 Free Software Foundation, Inc.
Copyright (c) 2001-2014 Free Software Foundation, Inc.
Copyright (c) 2001-2017 Free Software Foundation, Inc.
Copyright (c) 2002-2014 Free Software Foundation, Inc.
Copyright (c) 2002-2017 Free Software Foundation, Inc.
Copyright (c) 2003-2014 Free Software Foundation, Inc.
Copyright (c) 2003-2017 Free Software Foundation, Inc.
Copyright (c) 2004-2014 Free Software Foundation, Inc.
Copyright (c) 2004-2015 Free Software Foundation, Inc.
Copyright (c) 2004-2017 Free Software Foundation, Inc.
Copyright (c) 2006-2014 Free Software Foundation, Inc.
Copyright (c) 2006-2017 Free Software Foundation, Inc.
Copyright (c) 2007, 2008 Free Software Foundation, Inc
Copyright (c) 2008 Sven Verdoolaege <skimo@kotnet.org>
Copyright (c) 2009-2014 Free Software Foundation, Inc.
Copyright (c) 2009-2017 Free Software Foundation, Inc.
Copyright (c) 2010-2015 Free Software Foundation, Inc.
Copyright (c) 2010-2017 Free Software Foundation, Inc.
Copyright (c) 2011-2013 Free Software Foundation, Inc.
Copyright (c) 2011-2014 Free Software Foundation, Inc.
Copyright (c) 2012-2014 Free Software Foundation, Inc.
Copyright (c) 2012-2015 Free Software Foundation, Inc.
Copyright (c) 2013-2014 Free Software Foundation, Inc.
Copyright (c) 2013-2015 Free Software Foundation, Inc.
Copyright (c) 2002, 2009 Free Software Foundation, Inc.
Copyright (c) 2004, 2005 Free Software Foundation, Inc.
Copyright (c) 2004, 2010 Free Software Foundation, Inc.
Copyright (c) 2006, 2008 Free Software Foundation, Inc.
Copyright (c) 2008, 2010 Free Software Foundation, Inc.
Copyright (c) 2014 Sebastian Macke <sebastian@macke.de>
Copyright (c) 2015 Moritz Klammler <moritz@klammler.eu>
Copyright (c) 1996, 1997, 2003, 2004, 2008 Red Hat, Inc.
Copyright (c) 1998, 2001, 2007, 2008, 2011, 2014 Red Hat
Copyright (c) 2009 Bradley Smith <brad@brad-smith.co.uk>
Copyright (c) 2013 Jesse Towner <jessetowner@lavabit.com>
Copyright (c) 2013 Roy Stogner <roystgnr@ices.utexas.edu>
(c) Type AtExitFuncArgs VoidStar FunctionType AtExitFuncTy
copyright (c) 1991-2011, Thomas G. Lane, Guido Vollbeding.
(c) GlobalVariable Handle new GlobalVariable M, DsoHandleTy
(c) Type ArgTys Int32Ty, Int32Ty, Int32Ty FunctionType FnTy
Copyright (c) 2004 Scott James Remnant <scott@netsplit.com>
Copyright (c) 2008 Steven G. Johnson <stevenj@alum.mit.edu>
Copyright (c) 2009 Steven G. Johnson <stevenj@alum.mit.edu>
Copyright (c) 2004, 2011-2015 Free Software Foundation, Inc.
Copyright (c) 2007, 2008, 2010 Free Software Foundation, Inc
Copyright (c) 2007, 2009, 2010 Free Software Foundation, Inc
Copyright (c) 2013 Victor Oliveira <victormatheus@gmail.com>
Copyright 1984, 1987, 1989, 1992, 2000 by Stephen L. Moshier
(c) DeclRefExpr DR M.makeDeclRefExpr(PV) ImplicitCastExpr ICE
(c) IdentifierInfo NumExprs std::copy Names, Names + NumExprs
Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
Copyright (c) 2001, 2003, 2005 Free Software Foundation, Inc.
Copyright (c) 2002, 2003, 2009 Free Software Foundation, Inc.
Copyright (c) 2004, 2005, 2012 Free Software Foundation, Inc.
Copyright (c) 2006, 2008, 2010 Free Software Foundation, Inc.
(c) BranchInst BI BranchInst::Create(Exit, Exit, False, Entry)
Copyright (c) 1996, 1998, 1999, 2001, 2007, 2008 Red Hat, Inc.
Copyright (c) 1996, 1998, 2001, 2002, 2003, 2005 Red Hat, Inc.
Copyright (c) 1996, 1998, 2005, 2007, 2009, 2010 Red Hat, Inc.
Copyright (c) 1996,1998,2001-2003,2005,2008,2010 Red Hat, Inc.
Copyright (c) 1994 The Regents of the University of California.
Copyright (c) 1996-2014 Anthony Green, Red Hat, Inc and others.
Copyright (c) 1992-1996, 1998-2012 Free Software Foundation, Inc.
Copyright (c) 1996-2001, 2003-2015 Free Software Foundation, Inc.
Copyright (c) 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
Copyright (c) 2001, 2003, 2005, 2011 Free Software Foundation, Inc.
Copyright (c) 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
Copyright (c) 2003-2019 University of Illinois at Urbana-Champaign.
Copyright (c) 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
Copyright (c) 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
Copyright (c) 2007-2018 University of Illinois at Urbana-Champaign.
Copyright (c) 2007-2019 University of Illinois at Urbana-Champaign.
Copyright (c) 2002, 2003, 2004, 2010, Free Software Foundation, Inc.
Copyright (c) 2006-2009 Steven J. Bethard <steven.bethard@gmail.com>
Copyright (c) 1992, 1993 The Regents of the University of California.
(c) StringLiteral NumClobbers std::copy Clobbers, Clobbers + NumClobbers
Copyright (c) 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com).
Copyright (c) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc.
Copyright (c) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc.
Copyright (c) 2001, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
Copyright (c) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, Inc.
Copyright (c) 2002, 2006, 2007, 2009, 2010 Free Software Foundation, Inc.
Copyright (c) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, Inc.
Copyright (c) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
Copyright (c) 1992, 1993, 1994 The Regents of the University of California.
Copyright (c) 2004-2005, 2007-2008, 2011-2015 Free Software Foundation, Inc.
Copyright (c) 2004-2005, 2007-2009, 2011-2015 Free Software Foundation, Inc.
Copyright (c) 2004-2005, 2007, 2009, 2011-2015 Free Software Foundation, Inc.
Copyright (c) 2012 Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>
Copyright (c) 2001, 2002, 2003, 2005, 2008, 2010 Free Software Foundation, Inc.
Copyright (c) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
(c) StringLiteral NumConstraints std::copy Constraints, Constraints + NumConstraints
Copyright (c) 1996, 1997, 2000, 2001, 2003, 2005, 2008 Free Software Foundation, Inc.
Copyright (c) 1999, 2000, 2001, 2003, 2004, 2005, 2008 Free Software Foundation, Inc.
Copyright (c) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software Foundation, Inc.
Copyright (c) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
Copyright (c) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 Free Software Foundation, Inc.
Copyright (c) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 Free Software Foundation, Inc.
Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 Free Software Foundation, Inc.
Copyright (c) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 Free Software Foundation, Inc.
Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 Free Software Foundation, Inc.
Copyright (c) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, 2011 Free Software Foundation, Inc.
Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
Copyright (c) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Copyright (c) 2012 Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com> , Paulo Pizarro <paulo.pizarro@gmail.com>
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Copyright (c) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
Copyright (c) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Copyright (c) 1995, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2011, 2014 Free Software Foundation, Inc.
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
Copyright (c) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
Copyright (c) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
Copyright (c) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
Apache-2.0 WITH LLVM-exception
---------------------------------------------------------
---------------------------------------------------------
CommunityToolkit.Mvvm 8.4.0 - MIT
Copyright (c) 2021 Sergio Pedri
Copyright (c) 2020 Michael Dietrich
Copyright (c) Microsoft Corporation
(c) .NET Foundation and Contributors
Copyright (c) 2009 - 2018 Laurent Bugnion
Copyright (c) .NET Foundation and Contributors
Copyright (c) 2017 Pedro Lamas, http://www.pedrolamas.com
# .NET Community Toolkit
Copyright © .NET Foundation and Contributors
All rights reserved.
## MIT License (MIT)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
CommunityToolkit.WinUI.Animations 8.2.250402 - MIT
(c) .NET Foundation and Contributors
Copyright (c) .NET Foundation and Contributors
# Windows Community Toolkit
Copyright © .NET Foundation and Contributors
All rights reserved.
## MIT License (MIT)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
CommunityToolkit.WinUI.Controls.SettingsControls 8.2.250402 - MIT
(c) .NET Foundation and Contributors
Copyright (c) .NET Foundation and Contributors
# Windows Community Toolkit
Copyright © .NET Foundation and Contributors
All rights reserved.
## MIT License (MIT)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
Microsoft.Extensions.Hosting 10.0.0 - MIT
Copyright (c) 2021
Copyright (c) Six Labors
(c) Microsoft Corporation
Copyright (c) 2022 FormatJS
Copyright (c) Andrew Arnott
Copyright 2019 LLVM Project
Copyright (c) 1998 Microsoft
Copyright 2018 Daniel Lemire
Copyright (c) .NET Foundation
Copyright (c) 2011, Google Inc.
Copyright (c) 2020 Dan Shechter
(c) 1997-2005 Sean Eron Anderson
Copyright (c) 2015 Andrew Gallant
Copyright (c) 2022, Wojciech Mula
Copyright (c) 2017 Yoshifumi Kawai
Copyright (c) 2022, Geoff Langdale
Copyright (c) 2005-2020 Rich Felker
Copyright (c) 2012-2021 Yann Collet
Copyright (c) Microsoft Corporation
Copyright (c) 2007 James Newton-King
Copyright (c) 1991-2024 Unicode, Inc.
Copyright (c) 2013-2017, Alfred Klomp
Copyright (c) 2018 Nemanja Mijailovic
Copyright 2012 the V8 project authors
Copyright (c) 1999 Lucent Technologies
Copyright (c) 2008-2016, Wojciech Mula
Copyright (c) 2011-2020 Microsoft Corp
Copyright (c) 2015-2017, Wojciech Mula
Copyright (c) 2015-2018, Wojciech Mula
Copyright (c) 2005-2007, Nick Galbreath
Copyright (c) 2015 The Chromium Authors
Copyright (c) 2018 Alexander Chermyanin
Copyright (c) The Internet Society 1997
Copyright (c) 2004-2006 Intel Corporation
Copyright (c) 2011-2015 Intel Corporation
Copyright (c) 2013-2017, Milosz Krajewski
Copyright (c) 2016-2017, Matthieu Darbois
Copyright (c) The Internet Society (2003)
Copyright (c) .NET Foundation Contributors
(c) 1995-2024 Jean-loup Gailly and Mark Adler
Copyright (c) 2020 Mara Bos <m-ou.se@m-ou.se>
Copyright (c) 2012 - present, Victor Zverovich
Copyright (c) 2006 Jb Evain (jbevain@gmail.com)
Copyright (c) 2008-2020 Advanced Micro Devices, Inc.
Copyright (c) 2019 Microsoft Corporation, Daan Leijen
Copyright (c) 2011 Novell, Inc (http://www.novell.com)
Copyright (c) 2015 Xamarin, Inc (http://www.xamarin.com)
Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors
Copyright (c) 2014 Ryan Juckett http://www.ryanjuckett.com
Copyright (c) 1990- 1993, 1996 Open Software Foundation, Inc.
Portions (c) International Organization for Standardization 1986
Copyright (c) YEAR W3C(r) (MIT, ERCIM, Keio, Beihang) Disclaimers
Copyright (c) 2015 THL A29 Limited, a Tencent company, and Milo Yip
Copyright (c) 1980, 1986, 1993 The Regents of the University of California
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 The Regents of the University of California
Copyright (c) 1989 by Hewlett-Packard Company, Palo Alto, Ca. & Digital Equipment Corporation, Maynard, Mass
MIT License
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
Microsoft.Xaml.Behaviors.WinUI.Managed 3.0.0 - MIT
(c) Microsoft Corporation
MIT License
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
microsoft/gsl 0f6dbc9e2915ef5c16830f3fa3565738de2a9230 - MIT
Copyright 2008, Google Inc.
Copyright (c) 2015 Microsoft Corporation.
Copyright (c) 2015 Microsoft Corporation. All rights reserved.
This code is licensed under the MIT License (MIT).
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
vswhere 3.1.7 - MIT
(c) 2023 GitHub, Inc.
(c) Microsoft Corporation
Copyright (c) by P.J. Plauger
Copyright (c) Microsoft Corporation
MIT License
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
WinUIEx 2.9.0 - MIT
Copyright (c) Microsoft Corporation
Copyright 2021-2025 - Morten Nielsen
Copyright 2021-2025 - Morten Nielsen A
Copyright (c) 2021-2025 - Morten Nielsen
MIT License
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
---------------------------------------------------------
---------------------------------------------------------
wix 5.0.2 - MS-RL
Copyright James Newton-King 2008
Copyright UpdateUrl DisableModify
Copyright (c) Microsoft Corporation
(c) .NET Foundation and contributors
Copyright James Newton-King 2008 Json.NET
Copyright AssemblyDescription AssemblyProduct
Copyright (c) .NET Foundation and contributors
Microsoft Reciprocal License (Ms-RL)
This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
1. Definitions
The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
A "contribution" is the original software, or any additions or changes to the software.
A "contributor" is any person that distributes its contribution under this license.
"Licensed patents" are a contributor's patent claims that read directly on its contribution.
2. Grant of Rights
(A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
(B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
3. Conditions and Limitations
(A) Reciprocal Grants- For any file you distribute that contains code from the software (in source code or binary format), you must provide recipients the source code to that file along with a copy of this license, which license will govern that file. You may license other files that are entirely your own work and do not contain code from the software under any terms you choose.
(B) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
(C) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
(D) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
(E) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
(F) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees, or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
---------------------------------------------------------
================================================
FILE: README.md
================================================
# Welcome to the Windows Subsystem for Linux (WSL) repository
<p align="center">
<img src="./Images/Square44x44Logo.targetsize-256.png" alt="WSL logo"/>
</p>
[Learn more about WSL](https://aka.ms/wsldocs) | [Downloads & Release notes](https://github.com/microsoft/WSL/releases) | [Contributing to WSL](./CONTRIBUTING.md)
## About
Windows Subsystem for Linux (WSL) is a powerful way for you to run your Linux command-line tools, utilities and applications, all unmodified and directly on Windows without the overhead of a traditional virtual machine or dual boot setup.
You can install WSL right away by running this command inside of your Windows command line:
```powershell
wsl --install
```
You can learn more about [best practices for setup](https://learn.microsoft.com/windows/wsl/setup/environment), [overviews of WSL](https://learn.microsoft.com/windows/wsl/about) and more at our [WSL documentation page](https://learn.microsoft.com/windows/wsl/).
## Related repositories
WSL also has related open source repositories:
- [microsoft/WSL2-Linux-Kernel](https://github.com/microsoft/WSL2-Linux-Kernel) - The Linux kernel shipped with WSL
- [microsoft/WSLg](https://github.com/microsoft/wslg) - Support for Linux GUI apps in WSL
- [microsoftdocs/wsl](https://github.com/microsoftdocs/wsl) - WSL documentation at aka.ms/wsldocs
## Contributing
This project welcomes contributions of all types, including coding features / bug fixes, documentation fixes, design proposals and more.
We ask that before you start working on a contribution, please read our [Contributor's Guide](./CONTRIBUTING.md).
For guidance on developing for WSL, please read the [developer docs](./doc/docs/dev-loop.md) for instructions on how to build WSL from source and details on its architecture.
## Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct](./CODE_OF_CONDUCT.md)
## Trademarks
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow [Microsoft’s Trademark & Brand Guidelines](https://www.microsoft.com/legal/intellectualproperty/trademarks). Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.
## Privacy and telemetry
The application logs basic diagnostic data (telemetry). For more information on privacy and what we collect, see our [data and privacy documentation](DATA_AND_PRIVACY.md).
The software may collect information about you and your use of the software and send it to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may turn off the telemetry as described in the repository. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications together with a copy of Microsoft’s privacy statement. Our privacy statement is located at https://go.microsoft.com/fwlink/?LinkID=824704. You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices.
================================================
FILE: SECURITY.md
================================================
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.7 BLOCK -->
## Security
Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.
## Reporting Security Issues
**Please do not report security vulnerabilities through public GitHub issues.**
Instead, please [report them to the Microsoft Security Response Center (MSRC)](https://aka.ms/opensource/security/create-report).
If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).
You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [Microsoft Security Response Center](https://aka.ms/opensource/security/msrc).
Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
* Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
* Full paths of source file(s) related to the manifestation of the issue
* The location of the affected source code (tag/branch/commit or direct URL)
* Any special configuration required to reproduce the issue
* Step-by-step instructions to reproduce the issue
* Proof-of-concept or exploit code (if possible)
* Impact of the issue, including how an attacker might exploit the issue
This information will help us triage your report more quickly.
If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.
## Preferred Languages
We prefer all communications to be in English.
## Policy
Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).
<!-- END MICROSOFT SECURITY.MD BLOCK -->
================================================
FILE: SUPPORT.md
================================================
# Support
## How to file issues and get help
This project uses [GitHub Issues][gh-issue] to [track bugs][gh-bug] and [feature requests][gh-feature]. Please search the existing issues before filing new issues to avoid duplicates. For new issues, file your bug or
feature request as a new Issue.
For general information on the Windows Subsystem for Linux, including help, tutorials, how-tos and reference guides, please view our [WSL documentation](https://docs.microsoft.com/windows/wsl/).
## Microsoft Support Policy
Technical Support for the use of WSL may also be available from Microsoft’s Customer Support Services (CSS). If you are a Premier or Unified Support customer, you may reach out to your account manager for further assistance. Otherwise, you may visit Microsoft’s [Support For Business site](https://support.serviceshub.microsoft.com/supportforbusiness/create) to [open a new support case for WSL](https://support.serviceshub.microsoft.com/supportforbusiness/create?sapid=9d5af292-506b-63ca-cb2c-7f4eaa380c56).
[gh-issue]: https://github.com/microsoft/WSL/issues/new/choose
[gh-bug]: https://github.com/microsoft/WSL/issues/new?assignees=&labels=&template=bug_report.md&title=
[gh-feature]: https://github.com/microsoft/WSL/issues/new?assignees=&labels=feature&template=feature_request.md&title=
================================================
FILE: UserConfig.cmake.sample
================================================
# Sample user configuration
message(STATUS "Loading user configuration")
# Uncomment to enable development packages (smaller, faster to install)
# # Note: .vhd files fail to mount via symlink / hardlink, so COPY is needed.
# set(WSL_DEV_BINARY_PATH "C:/wsldev")
if(WSL_DEV_BINARY_PATH)
file(MAKE_DIRECTORY ${WSL_DEV_BINARY_PATH})
file(CREATE_LINK "${KERNEL_SOURCE_DIR}/bin/${TARGET_PLATFORM}/kernel" "${WSL_DEV_BINARY_PATH}/kernel" SYMBOLIC)
file(COPY_FILE "${WSLG_SOURCE_DIR}/${TARGET_PLATFORM}/system.vhd" "${WSL_DEV_BINARY_PATH}/system.vhd" ONLY_IF_DIFFERENT)
file(COPY_FILE "${KERNEL_SOURCE_DIR}/bin/${TARGET_PLATFORM}/modules.vhd" "${WSL_DEV_BINARY_PATH}/modules.vhd" ONLY_IF_DIFFERENT)
# read-only VHDs need to be world readable to mount successfully.
execute_process(
COMMAND icacls.exe "${WSL_DEV_BINARY_PATH}/system.vhd" "/grant:r" "Everyone:(R)" /Q
COMMAND icacls.exe "${WSL_DEV_BINARY_PATH}/modules.vhd" "/grant:r" "Everyone:(R)" /Q
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
COMMAND_ERROR_IS_FATAL ANY)
file(CREATE_LINK "${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/msrdc.exe" "${WSL_DEV_BINARY_PATH}/msrdc.exe" SYMBOLIC)
file(CREATE_LINK "${WSLG_SOURCE_DIR}/wslg.rdp" "${WSL_DEV_BINARY_PATH}/wslg.rdp" SYMBOLIC)
file(CREATE_LINK "${WSLG_SOURCE_DIR}/wslg_desktop.rdp" "${WSL_DEV_BINARY_PATH}/wslg_desktop.rdp" SYMBOLIC)
file(CREATE_LINK "${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/rdclientax.dll" "${WSL_DEV_BINARY_PATH}/rdclientax.dll" SYMBOLIC)
file(CREATE_LINK "${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/rdpnanoTransport.dll" "${WSL_DEV_BINARY_PATH}/rdpnanoTransport.dll" SYMBOLIC)
file(CREATE_LINK "${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/RdpWinStlHelper.dll" "${WSL_DEV_BINARY_PATH}/RdpWinStlHelper.dll" SYMBOLIC)
file(CREATE_LINK "${MSAL_SOURCE_DIR}/${TARGET_PLATFORM}/msal.wsl.proxy.exe" "${WSL_DEV_BINARY_PATH}/msal.wsl.proxy.exe" SYMBOLIC)
file(CREATE_LINK "${DIRECT3D_SOURCE_DIR}/lib/${TARGET_PLATFORM}" "${WSL_DEV_BINARY_PATH}/lib" SYMBOLIC)
foreach(LANG ${SUPPORTED_LANGS})
file(CREATE_LINK "${MSRDC_SOURCE_DIR}/${TARGET_PLATFORM}/${LANG}" "${WSL_DEV_BINARY_PATH}/${LANG}" SYMBOLIC)
endforeach()
endif()
# # Uncomment to skip building, packaging and installing wslsettings
# set(WSL_BUILD_WSL_SETTINGS false)
# # Uncomment to generate a "thin" MSI package which builds and installs faster
# set(WSL_BUILD_THIN_PACKAGE true)
# # Uncomment to install the package as part of the build
# set(WSL_POST_BUILD_COMMAND "powershell;-ExecutionPolicy;Bypass;-NoProfile;-NonInteractive;./tools/deploy/deploy-to-host.ps1")
# # Uncomment to reduce the verbosity of the appx package build
# set(WSL_SILENT_APPX_BUILD true)
================================================
FILE: cgmanifest.json
================================================
{
"version": 1,
"$schema": "https://json.schemastore.org/component-detection-manifest.json",
"registrations": [
{
"component": {
"type": "git",
"git": {
"repositoryUrl": "https://github.com/microsoft/GSL",
"commitHash": "0f6dbc9e2915ef5c16830f3fa3565738de2a9230"
}
}
},
{
"component": {
"type": "git",
"git": {
"repositoryUrl": "https://github.com/llvm/llvm-project",
"commitHash": "d32170dbd5b0d54436537b6b75beaf44324e0c28"
}
}
},
{
"component": {
"type": "other",
"other": {
"name": "libarchive",
"version": "3.7.7",
"downloadUrl": "https://github.com/libarchive/libarchive/releases/download/v3.7.7/libarchive-3.7.7.tar.gz",
"hash": "sha1:918692098b11db61aff23684ab04f375e4a68f69"
}
}
}
]
}
================================================
FILE: cloudtest/CMakeLists.txt
================================================
set(OUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/cloudtest)
file(MAKE_DIRECTORY ${OUT})
if (${TARGET_PLATFORM} STREQUAL x64)
set(CLOUDTEST_IMAGES
"wsl-test-image-rs_prerelease-2025-01-30"
"wsl-test-image-win11-23h2-ent-2024-11-18"
"wsl-test-image-2022-datacenter-g2-2024-09-10"
"wsl-test-image-win10-22h2-ent-g2-2024-09-10")
set(CLOUDTEST_TEST_PACKAGES "Test_Packages_2025_07_28")
set(DUMPTOOL_DROP "DumpTool_X64_2025-01-27")
elseif (${TARGET_PLATFORM} STREQUAL arm64)
set(CLOUDTEST_IMAGES)
else()
message(FATAL_ERROR "Unsupported target platform: ${TARGET_PLATFORM}")
endif()
# Passed down to test-setup.ps1 to determine if -AllowUnsigned should be passed to Add-AppxPackage
if (OFFICIAL_BUILD)
set(ALLOW_UNSIGNED_PACKAGE "0")
else()
set(ALLOW_UNSIGNED_PACKAGE "1")
endif()
function(add_test_group image version)
set(DIR ${OUT}/${image}-wsl${version})
file(MAKE_DIRECTORY ${DIR})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TestMap.xml.in ${DIR}/TestMap.xml)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/TestGroup.xml.in ${DIR}/TestGroup.xml)
endfunction()
foreach(image ${CLOUDTEST_IMAGES})
add_test_group("${image}" "1")
add_test_group("${image}" "2")
endforeach()
================================================
FILE: cloudtest/TestGroup.xml.in
================================================
<?xml version="1.0" encoding="utf-8"?>
<TestJobGroup EnableProcessJobObjectBreakaway="true">
<ResourceSpec>
<Resource SKU="Standard_D4_v3" Image="${image}"/>
</ResourceSpec>
<Setup TimeoutMins="30">
<BuildFiles>
<Copy Src="[drop]\bundle\Microsoft.WSL_${PACKAGE_VERSION}_x64_ARM64.msixbundle" Dest="[WorkingDirectory]" IsRecursive="false"/>
<Copy Src="[drop]\testbin\${TARGET_PLATFORM}\release\*" Dest="[WorkingDirectory]\" IsRecursive="true" Writable="true"/>
<Copy Src="[drop]\testbin\${TARGET_PLATFORM}\test_distro.tar.xz" Dest="[WorkingDirectory]" IsRecursive="false" Writable="true"/>
<Copy Src="[drop]\testbin\test-setup.ps1" Dest="[WorkingDirectory]\" IsRecursive="false" />
<Copy Src="[drop]\testbin\CloudTest-Setup.bat" Dest="[WorkingDirectory]\" IsRecursive="false" />
<Copy Src="[drop]\testbin\wsl.wprp" Dest="[WorkingDirectory]\" IsRecursive="false" />
<Copy Src="[drop]\testbin\unit_tests\*" Dest="[WorkingDirectory]\unit_tests" IsRecursive="true" Writable="true"/>
<Copy Src="[test_packages]\*" Dest="[WorkingDirectory]" IsRecursive="false" />
<Copy Src="[dump_tool]\DumpTool.exe" Dest="[WorkingDirectory]" IsRecursive="false" />
</BuildFiles>
<Scripts>
<Script Path="[WorkingDirectory]\CloudTest-Setup.bat" Args="[WorkingDirectory] [LoggingDirectory]" />
</Scripts>
</Setup>
<TestJob Name="CloudTest.Taef" TimeoutMins="240">
<Execution Type="TAEF" Path="[WorkingDirectory]\wsltests.dll" Args="/p:bugReportDirectory=[LoggingDirectory]\BugReportOutput /errorOnCrash /testmode:etwlogger /EtwLogger:WPRProfileFile=[WorkingDirectory]\wsl.wprp /EtwLogger:WPRProfile=WSL /EtwLogger:SavePoint=ExecutionComplete /EtwLogger:RecordingScope=Execution /p:SetupScript=.\test-setup.ps1 /p:Package=[WorkingDirectory]\Microsoft.WSL_${PACKAGE_VERSION}_x64_ARM64.msixbundle /p:Version=${version} /p:AllowUnsigned=${ALLOW_UNSIGNED_PACKAGE} /p:UnitTestsPath=[WorkingDirectory]\unit_tests /p:DistroPath=[WorkingDirectory]\test_distro.tar.xz /p:DistroName=test_distro /logOutput:High /p:RedirectStdout=[LoggingDirectory]\stdout.txt /p:RedirectStderr=[LoggingDirectory]\stderr.txt /p:KernelLogs=[LoggingDirectory]\dmesg.txt /p:DumpFolder=[LoggingDirectory] /p:WerReport /p:LogDmesg /p:PipelineBuildId=${PIPELINE_BUILD_ID} /p:DumpTool=DumpTool.exe" />
</TestJob>
</TestJobGroup>
================================================
FILE: cloudtest/TestMap.xml.in
================================================
<?xml version="1.0" encoding="utf-8"?>
<TestMap>
<TestJobGroup Name="TaefTestsGroup" TestSystem="Default" ConfigPath="[BuildRoot]\testbin\${TARGET_PLATFORM}\cloudtest\${image}-wsl${version}\TestGroup.xml" IsActive="true"/>
<Providers>
<Provider Type="PipelineArtifacts">
<Properties>
<Add Name="CloudTest.ProviderCustomName" Value="[drop]" />
<Add Name="PipelineArtifactBuildUrl" Value="https://${VSO_ORG}.visualstudio.com/${VSO_PROJECT}/_build/results?buildId=${PIPELINE_BUILD_ID}"/>
<Add Name="PipelineArtifactName" Value="drop_wsl_build"/>
</Properties>
</Provider>
<Provider Type="VSODrop">
<Properties>
<Add Name="CloudTest.ProviderCustomName" Value="[test_distro]" />
<!-- When updating the drops for this make sure the retention is set to never expire -->
<Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${CLOUDTEST_TEST_DISTRO_DROP}"/>
</Properties>
</Provider>
<Provider Type="VSODrop">
<Properties>
<Add Name="CloudTest.ProviderCustomName" Value="[test_packages]" />
<!-- When updating the drops for this make sure the retention is set to never expire -->
<Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${CLOUDTEST_TEST_PACKAGES}"/>
</Properties>
</Provider>
<Provider Type="VSODrop">
<Properties>
<Add Name="CloudTest.ProviderCustomName" Value="[dump_tool]" />
<!-- When updating the drops for this make sure the retention is set to never expire -->
<Add Name="DropURL" Value="https://${VSO_ORG}.artifacts.visualstudio.com/_apis/drop/drops/WSL/${DUMPTOOL_DROP}"/>
</Properties>
</Provider>
</Providers>
</TestMap>
================================================
FILE: cmake/FindIDL.cmake
================================================
function(add_idl target idl_files_with_proxy idl_files_no_proxy)
set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PLATFORM}/${CMAKE_BUILD_TYPE})
file(MAKE_DIRECTORY ${OUTPUT_DIR})
set(TARGET_OUTPUTS)
set(IDL_DEFINITIONS "")
get_directory_property(IDL_DEFS COMPILE_DEFINITIONS )
foreach(e ${IDL_DEFS})
set(IDL_DEFINITIONS ${IDL_DEFINITIONS} /D${e})
endforeach()
string(TOLOWER ${TARGET_PLATFORM} IDL_ENV)
foreach(idl_file ${idl_files_with_proxy})
cmake_path(GET idl_file STEM IDL_NAME)
set(IDL_HEADER ${OUTPUT_DIR}/${IDL_NAME}.h)
# Adding a _${TARGET_PLATFORM} to work around object files having
# the same paths regardless of TARGET_PLATFORM, which can cause the linker to fail with:
# "fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'ARM64'"
set(IDL_I ${OUTPUT_DIR}/${IDL_NAME}_i_${TARGET_PLATFORM}.c)
set(IDL_P ${OUTPUT_DIR}/${IDL_NAME}_p_${TARGET_PLATFORM}.c)
set(IDL_DLLDATA ${OUTPUT_DIR}/dlldata_${TARGET_PLATFORM}.c)
set(MIDL_OUTPUT ${IDL_HEADER} ${IDL_I} ${IDL_P} ${IDL_DLLDATA})
add_custom_command(
OUTPUT ${MIDL_OUTPUT} ${CMAKE_CURRENT_BINARY_DIR}/CmakeFiles/${target}
COMMAND midl /nologo /target NT100 /env "${IDL_ENV}" /Zp8 /char unsigned /ms_ext /c_ext /h ${IDL_HEADER} /iid ${IDL_I} /proxy ${IDL_P} /dlldata ${IDL_DLLDATA} ${idl_file} ${IDL_DEFINITIONS}
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/CmakeFiles/${target}"
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
DEPENDS ${idl_file}
MAIN_DEPENDENCY ${idl_file}
VERBATIM
)
set_source_files_properties(${MIDL_OUTPUT} PROPERTIES GENERATED TRUE)
list(APPEND TARGET_OUTPUTS ${MIDL_OUTPUT})
endforeach()
foreach(idl_file ${idl_files_no_proxy})
cmake_path(GET idl_file STEM IDL_NAME)
set(IDL_HEADER ${OUTPUT_DIR}/${IDL_NAME}.h)
add_custom_command(
OUTPUT ${IDL_HEADER} ${CMAKE_CURRENT_BINARY_DIR}/CmakeFiles/${target}
COMMAND midl /nologo /target NT100 /env "${IDL_ENV}" /Zp8 /char unsigned /ms_ext /c_ext /h ${IDL_HEADER} ${idl_file} ${IDL_DEFINITIONS}
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/CmakeFiles/${target}"
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
DEPENDS ${idl_file}
MAIN_DEPENDENCY ${idl_file}
VERBATIM
)
set_source_files_properties(${IDL_HEADER} PROPERTIES GENERATED TRUE)
list(APPEND TARGET_OUTPUTS ${IDL_HEADER})
endforeach()
add_custom_target(${target} DEPENDS ${TARGET_OUTPUTS} SOURCES ${idl_files_with_proxy} ${idl_files_no_proxy})
endfunction()
================================================
FILE: cmake/FindLINUXBUILD.cmake
================================================
function(build_linux_objects sources headers)
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PLATFORM}/${CMAKE_BUILD_TYPE})
foreach(e ${sources})
cmake_path(GET e FILENAME object_name)
set(object "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PLATFORM}/${CMAKE_BUILD_TYPE}/${object_name}.o")
set(objects ${objects} ${object})
if("${e}" MATCHES "^.*\.c$")
set(compiler ${LINUX_CC})
set(flags ${LINUX_CFLAGS})
else()
set(compiler ${LINUX_CXX})
set(flags ${LINUX_CXXFLAGS})
endif()
add_custom_command(
OUTPUT ${object}
COMMAND ${compiler} ${flags} ${LINUX_BUILD_TYPE_FLAGS} ${e} -c -o ${object}
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
MAIN_DEPENDENCY ${e}
DEPENDS ${headers} # Every object depends on all headers to trigger a rebuild if a header is changed
VERBATIM
)
endforeach()
set(objects ${objects} PARENT_SCOPE)
endfunction()
function(add_linux_library_impl target sources headers add_sources)
set(ar_output "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${target}.a")
build_linux_objects("${sources}" "${headers}")
add_custom_command(
OUTPUT ${ar_output} ${CMAKE_CURRENT_BINARY_DIR}/CmakeFiles/${target}
COMMAND ${LINUX_AR} crus ${ar_output} ${objects}
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/CmakeFiles/${target}"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${objects}
VERBATIM
)
if (${add_sources})
add_custom_target(${target} DEPENDS ${ar_output} SOURCES ${sources} ${headers})
else()
add_custom_target(${target} DEPENDS ${ar_output})
endif()
set_source_files_properties(${ar_output} PROPERTIES GENERATED TRUE)
endfunction()
function(add_linux_library target sources headers)
add_linux_library_impl(${target} "${sources}" "${headers}" TRUE)
endfunction()
function(add_linux_library_no_sources target sources headers)
add_linux_library_impl(${target} "${sources}" "${headers}" FALSE)
endfunction()
function(add_linux_executable target sources headers libraries)
set(output "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${target}")
set(output_unstripped "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${target}.unstripped")
build_linux_objects("${sources}" "${headers}")
set(libs -lunwind -lc++abi -lc++)
foreach(e ${libraries})
set(libs ${libs} -l${e})
# Note: This makes the assumption that all libraries are static (.a and not .so).
# Executables need to depend on both the target and the underlying library file, so that
# the libraries target get analyzed for changes, and the executable gets linked again if the .a files changed.
list(APPEND lib_targets "lib${e}")
list(APPEND lib_files "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/lib${e}.a")
endforeach()
if (NOT ${CMAKE_BUILD_TYPE} STREQUAL "Debug")
set(stripped_output "${output}")
set(output "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE}/${target}.debug")
add_custom_command(
OUTPUT ${stripped_output}
COMMAND ${LLVM_INSTALL_DIR}/llvm-strip.exe "${output}" -o "${stripped_output}"
COMMAND ${LLVM_INSTALL_DIR}/llvm-objcopy.exe --add-gnu-debuglink "${output}" "${stripped_output}"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${output}
VERBATIM
)
endif()
add_custom_command(
OUTPUT ${output}
COMMAND ${LINUX_CXX} -o ${output} ${LINUXSDK_PATH}/lib/crti.o ${LINUXSDK_PATH}/lib/crt1.o ${objects} ${LINUXSDK_PATH}/lib/crtn.o ${LINUX_LDFLAGS} ${libs}
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/CmakeFiles/${target}"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
DEPENDS ${objects} ${lib_files}
VERBATIM
)
add_custom_target(${target} DEPENDS ${output} ${stripped_output} SOURCES ${sources} ${headers})
add_dependencies(${target} ${lib_targets})
endfunction()
================================================
FILE: cmake/FindMC.cmake
================================================
function(add_mc target mc_file)
cmake_path(GET mc_file STEM MC_NAME)
set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}\\${TARGET_PLATFORM}\\${CMAKE_BUILD_TYPE})
set(RC_FILE ${OUTPUT_DIR}/${MC_NAME}.rc)
set(HEADER_FILE ${OUTPUT_DIR}/${MC_NAME}.h)
add_custom_command(
OUTPUT ${RC_FILE} ${HEADER_FILE} ${CMAKE_CURRENT_BINARY_DIR}/CmakeFiles/${target}
COMMAND mc.exe -A -b -c -h ${OUTPUT_DIR} -r ${OUTPUT_DIR} ${mc_file}
COMMAND rc.exe -nologo -fo${OUTPUT_DIR}\\${MC_NAME}.res ${RC_FILE}
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/CmakeFiles/${target}"
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
DEPENDS ${mc_file}
MAIN_DEPENDENCY ${mc_file}
VERBATIM
)
add_custom_target(${target} DEPENDS ${RC_FILE} SOURCES ${mc_file})
set_source_files_properties(${RC_FILE} PROPERTIES GENERATED TRUE)
endfunction()
================================================
FILE: cmake/findAppx.cmake
================================================
function(add_appx_target target binaries manifest_in output_package dependencies)
set(PACKAGE_LAYOUT "${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PLATFORM}/package_layout")
set(MANIFEST "${CMAKE_CURRENT_BINARY_DIR}/AppxManifest.xml")
set(PRI_CONF "${CMAKE_CURRENT_BINARY_DIR}/priconf.xml")
set(OUTPUT_RESOURCES_PRI "${CMAKE_CURRENT_BINARY_DIR}/resources.pri")
# generate the list of languages for the appxmanifest
set(SUPPORTED_LANGS_MANIFEST_ENTRIES "")
foreach(LANG ${SUPPORTED_LANGS})
string(TOUPPER "${LANG}" LANG)
set(SUPPORTED_LANGS_MANIFEST_ENTRIES "${SUPPORTED_LANGS_MANIFEST_ENTRIES}\n <Resource Language=\"${LANG}\"/>")
endforeach()
configure_file(${manifest_in} ${MANIFEST})
file(MAKE_DIRECTORY ${PACKAGE_LAYOUT})
# images
file(MAKE_DIRECTORY ${PACKAGE_LAYOUT}/Images)
set(RESOURCES_DEPENDENCY)
file(GLOB IMAGES RELATIVE ${PROJECT_SOURCE_DIR}/ "${PROJECT_SOURCE_DIR}/images/*.png")
foreach(e ${IMAGES})
file(CREATE_LINK ${PROJECT_SOURCE_DIR}/${e} ${PACKAGE_LAYOUT}/${e} SYMBOLIC)
list(APPEND RESOURCES_DEPENDENCY ${PROJECT_SOURCE_DIR}/${e})
endforeach()
# Localization. Note: these files aren't added to the resource map, so they aren't added to the package,
# but they are used by makepri to generate resources.pri
file(CREATE_LINK ${PROJECT_SOURCE_DIR}/localization/strings ${PACKAGE_LAYOUT}/Strings SYMBOLIC)
foreach(binary ${binaries})
set(BINARY_SRC "${BIN}/${binary}")
set(BINARY_DEST "${PACKAGE_LAYOUT}/${binary}")
add_custom_command(
OUTPUT ${BINARY_DEST}
COMMAND ${CMAKE_COMMAND} -E create_symlink "${BINARY_SRC}" "${BINARY_DEST}"
DEPENDS ${BINARY_SRC}
)
list(APPEND BINARIES_DEPENDENCY ${BINARY_DEST})
endforeach()
# Reduce the output of makeappx unless WSL_APPX_DEBUG is set to make the build output nicer to read
if (WSL_SILENT_APPX_BUILD)
set(COMMAND_SUFFIX "2>NUL;>;NUL")
endif ()
# generate priconf.xml
string(REPLACE ";" "_" SUPPORTED_LANGS_STR "${SUPPORTED_LANGS}")
add_custom_command(
OUTPUT ${PRI_CONF}
COMMAND makepri.exe createconfig /cf ${PRI_CONF} /dq ${SUPPORTED_LANGS_STR} /pv 10.0 /o ${COMMAND_SUFFIX}
COMMAND_EXPAND_LISTS
)
# generate resources.pri
add_custom_command(
OUTPUT ${OUTPUT_RESOURCES_PRI} ${CMAKE_CURRENT_BINARY_DIR}/resources.map.txt
COMMAND makepri.exe new /pr ${PACKAGE_LAYOUT} /cf ${PRI_CONF} /of ${OUTPUT_RESOURCES_PRI} /mn ${MANIFEST} /mf AppX /o /IndexOptions +lf ${COMMAND_SUFFIX}
COMMAND_EXPAND_LISTS
DEPENDS ${PRI_CONF} ${MANIFEST} ${BINARIES_DEPENDENCY} ${RESOURCES_DEPENDENCY} # Make sure the package is rebuilt if any of the resources change
)
# make appx
add_custom_command(
OUTPUT ${output_package}
COMMAND makeappx.exe pack /m ${MANIFEST} /f ${CMAKE_CURRENT_BINARY_DIR}/resources.map.txt /p ${output_package} /o ${COMMAND_SUFFIX}
COMMAND ${PACKAGE_SIGN_COMMAND} ${output_package} ${COMMAND_SUFFIX}
COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/CmakeFiles/${target}"
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMAND_EXPAND_LISTS
DEPENDS ${MANIFEST} ${BINARIES_DEPENDENCY} ${OUTPUT_RESOURCES_PRI} ${CMAKE_CURRENT_BINARY_DIR}/resources.map.txt # Make sure the package is rebuilt if any of the binaries or resources change
)
add_custom_target(${target} DEPENDS ${output_package})
foreach(e ${dependencies})
add_dependencies(${target} ${e})
endforeach()
set_target_properties(${target} PROPERTIES EXCLUDE_FROM_ALL FALSE SOURCES ${manifest_in})
set_source_files_properties(${output_package} PROPERTIES GENERATED TRUE)
endfunction()
================================================
FILE: cmake/findNuget.cmake
================================================
function(find_nuget_package name var_name path)
string(JSON "${var_name}_VERSION" GET ${NUGET_PACKAGES_JSON} "${name}")
set(${var_name}_SOURCE_DIR "${CMAKE_BINARY_DIR}/packages/${name}.${${var_name}_VERSION}${path}" PARENT_SCOPE)
set(${var_name}_VERSION "${${var_name}_VERSION}" PARENT_SCOPE)
endfunction()
function (restore_nuget_packages)
# Fetch nuget.exe
FILE(DOWNLOAD
https://dist.nuget.org/win-x86-commandline/v5.10.0/nuget.exe
${CMAKE_BINARY_DIR}/_deps/nuget.exe
EXPECTED_HASH SHA256=852b71cc8c8c2d40d09ea49d321ff56fd2397b9d6ea9f96e532530307bbbafd3)
set_property(
DIRECTORY
APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS
${CMAKE_CURRENT_LIST_DIR}/packages.config
${CMAKE_CURRENT_LIST_DIR}/nuget.config)
# Restore nuget packages
execute_process(COMMAND
${CMAKE_BINARY_DIR}/_deps/nuget.exe restore packages.config -SolutionDirectory ${CMAKE_BINARY_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
COMMAND_ERROR_IS_FATAL ANY)
endfunction()
function (parse_nuget_packages_versions)
# Parse the list of available packages
set(CMD "$packages=@{}; (Select-Xml -path ${CMAKE_SOURCE_DIR}/packages.config /packages).Node.ChildNodes | Where-Object { $_.name -ne '#whitespace'} | % {$packages.add($_.id, $_.Attributes['version'].Value) }; $packages | ConvertTo-Json | Write-Host")
execute_process(
COMMAND powershell.exe -ExecutionPolicy Bypass -NoProfile -NonInteractive -Command "${CMD}"
OUTPUT_VARIABLE output
COMMAND_ERROR_IS_FATAL ANY)
set(NUGET_PACKAGES_JSON ${output} PARENT_SCOPE)
endfunction()
================================================
FILE: cmake/findVersion.cmake
================================================
function(get_version_impl command var_name)
execute_process(
COMMAND powershell.exe
-NoProfile
-NonInteractive
-ExecutionPolicy Bypass
-Command "$env:Path += ';${GITVERSION_SOURCE_DIR}' ; . .\\tools\\devops\\version_functions.ps1 ; ${command}"
OUTPUT_VARIABLE OUTPUT_VERSION
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
COMMAND_ERROR_IS_FATAL ANY)
string(STRIP "${OUTPUT_VERSION}" OUTPUT_VERSION)
SET(${var_name} ${OUTPUT_VERSION} PARENT_SCOPE)
endfunction()
function(find_commit_hash var_name)
get_version_impl("Get-Current-Commit-Hash" "command_output")
SET(${var_name} ${command_output} PARENT_SCOPE)
endfunction()
function(find_version msix_var_name nuget_var_name)
get_version_impl("Get-VersionInfo -Nightly $false | ConvertTo-Json" "command_output")
string(JSON "${msix_var_name}" GET "${command_output}" MsixVersion)
string(JSON "${nuget_var_name}" GET "${command_output}" NugetVersion)
return(PROPAGATE ${msix_var_name} ${nuget_var_name})
endfunction()
================================================
FILE: diagnostics/collect-wsl-logs.ps1
================================================
#Requires -RunAsAdministrator
[CmdletBinding()]
Param (
$LogProfile = $null,
[switch]$Dump = $false,
[switch]$RestartWslReproMode = $false
)
Set-StrictMode -Version Latest
function Collect-WindowsNetworkState {
param (
$Folder,
$ReproStep
)
# Collect host networking state relevant for WSL
# Using a try/catch for commands below, as some of them do not exist on all OS versions
try { Get-NetAdapter -includeHidden | select Name,ifIndex,NetLuid,InterfaceGuid,Status,MacAddress,MtuSize,InterfaceType,Hidden,HardwareInterface,ConnectorPresent,MediaType,PhysicalMediaType | Out-File -FilePath "$Folder/Get-NetAdapter_$ReproStep.log" -Append } catch {}
try { & netsh nlm query all $Folder/nlmquery_"$ReproStep".log } catch {}
try { Get-NetIPConfiguration -All -Detailed | Out-File -FilePath "$Folder/Get-NetIPConfiguration_$ReproStep.log" -Append } catch {}
try { Get-NetRoute | Out-File -FilePath "$Folder/Get-NetRoute_$ReproStep.log" -Append } catch {}
try { Get-NetFirewallHyperVVMCreator | Out-File -FilePath "$Folder/Get-NetFirewallHyperVVMCreator_$ReproStep.log" -Append } catch {}
try { Get-NetFirewallHyperVVMSetting -PolicyStore ActiveStore | Out-File -FilePath "$Folder/Get-NetFirewallHyperVVMSetting_ActiveStore_$ReproStep.log" -Append } catch {}
try { Get-NetFirewallHyperVProfile -PolicyStore ActiveStore | Out-File -FilePath "$Folder/Get-NetFirewallHyperVProfile_ActiveStore_$ReproStep.log" -Append } catch {}
try { Get-NetFirewallHyperVRule -PolicyStore ActiveStore | Out-File -FilePath "$Folder/Get-NetFirewallHyperVRule_ActiveStore_$ReproStep.log" -Append } catch {}
try { Get-NetFirewallRule -PolicyStore ActiveStore | Out-File -FilePath "$Folder/Get-NetFirewallRule_ActiveStore_$ReproStep.log" -Append } catch {}
try { Get-NetFirewallProfile -PolicyStore ActiveStore | Out-File -FilePath "$Folder/Get-NetFirewallProfile_ActiveStore_$ReproStep.log" -Append } catch {}
try { Get-NetFirewallHyperVPort | Out-File -FilePath "$Folder/Get-NetFirewallHyperVPort_$ReproStep.log" -Append } catch {}
try { & hnsdiag.exe list all 2>&1 > $Folder/hnsdiag_list_all_"$ReproStep".log } catch {}
try { & hnsdiag.exe list endpoints -df 2>&1 > $Folder/hnsdiag_list_endpoints_"$ReproStep".log } catch {}
try {
foreach ($port in Get-NetFirewallHyperVPort) {
& vfpctrl.exe /port $port.PortName /get-port-state 2>&1 > "$Folder/vfp-port-$($port.PortName)-get-port-state_$ReproStep.log"
& vfpctrl.exe /port $port.PortName /list-rule 2>&1 > "$Folder/vfp-port-$($port.PortName)-list-rule_$ReproStep.log"
}
} catch {}
try { & vfpctrl.exe /list-vmswitch-port 2>&1 > $Folder/vfpctrl_list_vmswitch_port_"$ReproStep".log } catch {}
try { Get-VMSwitch | select Name,Id,SwitchType | Out-File -FilePath "$Folder/Get-VMSwitch_$ReproStep.log" -Append } catch {}
try { Get-NetUdpEndpoint | Out-File -FilePath "$Folder/Get-NetUdpEndpoint_$ReproStep.log" -Append } catch {}
}
$folder = "WslLogs-" + (Get-Date -Format "yyyy-MM-dd_HH-mm-ss")
mkdir -p $folder | Out-Null
# Check if LogProfile is a custom file path or a profile name
if ($LogProfile -ne $null -And [System.IO.File]::Exists($LogProfile))
{
# User provided a custom .wprp file path - use it directly
$wprpFile = $LogProfile
$wprpProfile = $null # Use default profile in the file
}
else
{
# Map log profile names to WPRP profile names
$wprpProfile = "WSL"
if ($LogProfile -eq "storage")
{
$wprpProfile = "WSL-Storage"
}
elseif ($LogProfile -eq "networking")
{
$wprpProfile = "WSL-Networking"
}
elseif ($LogProfile -eq "hvsocket")
{
$wprpProfile = "WSL-HvSocket"
}
elseif ($LogProfile -ne $null)
{
Write-Error "Unknown log profile: $LogProfile. Valid options are: storage, networking, hvsocket, or a path to a custom .wprp file"
exit 1
}
# Use the consolidated wsl.wprp file, attempt to use local copy first.
$wprpFile = "$folder/wsl.wprp"
if (Test-Path "$PSScriptRoot/wsl.wprp")
{
Copy-Item "$PSScriptRoot/wsl.wprp" $wprpFile
}
else
{
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/wsl.wprp" -OutFile $wprpFile
}
}
# Networking-specific setup
if ($LogProfile -eq "networking")
{
# Copy/download networking.sh script
$networkingBashScript = "$folder/networking.sh"
if (Test-Path "$PSScriptRoot/networking.sh")
{
Copy-Item "$PSScriptRoot/networking.sh" $networkingBashScript
}
else
{
Write-Host -ForegroundColor Yellow "networking.sh not found in the current directory. Downloading it from GitHub."
Invoke-WebRequest -UseBasicParsing "https://raw.githubusercontent.com/microsoft/WSL/master/diagnostics/networking.sh" -OutFile $networkingBashScript
}
# Detect the super user (uid=0, not necessarily named "root" - see #11693)
$superUser = & wsl.exe -- id -nu 0
# Collect Linux & Windows network state before the repro
& wsl.exe -u $superUser -e $networkingBashScript 2>&1 > $folder/linux_network_configuration_before.log
Collect-WindowsNetworkState -Folder $folder -ReproStep "before_repro"
if ($RestartWslReproMode)
{
# The WSL HNS network is created once per boot. Resetting it to collect network creation logs.
# Note: The below HNS command applies only to WSL in NAT mode
Get-HnsNetwork | Where-Object {$_.Name -eq 'WSL' -Or $_.Name -eq 'WSL (Hyper-V firewall)'} | Remove-HnsNetwork
# Stop WSL
net.exe stop WslService
if(-not $?) { net.exe stop LxssManager }
}
}
reg.exe export HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss $folder/HKCU.txt 2>&1 | Out-Null
reg.exe export HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Lxss $folder/HKLM.txt 2>&1 | Out-Null
reg.exe export HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\P9NP $folder/P9NP.txt 2>&1 | Out-Null
reg.exe export HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2 $folder/Winsock2.txt 2>&1 | Out-Null
reg.exe export "HKEY_CLASSES_ROOT\CLSID\{e66b0f30-e7b4-4f8c-acfd-d100c46c6278}" $folder/wslsupport-proxy.txt 2>&1 | Out-Null
reg.exe export "HKEY_CLASSES_ROOT\CLSID\{a9b7a1b9-0671-405c-95f1-e0612cb4ce7e}" $folder/wslsupport-impl.txt 2>&1 | Out-Null
Get-ItemProperty -Path "Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" > $folder/windows-version.txt
Get-Service wslservice -ErrorAction Ignore | Format-list * -Force > $folder/wslservice.txt
$wslconfig = "$env:USERPROFILE/.wslconfig"
if (Test-Path $wslconfig)
{
Copy-Item $wslconfig $folder | Out-Null
}
Copy-Item "C:\Windows\temp\wsl-install-log.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
bcdedit.exe > $folder/bcdedit.txt
$uninstallLogs = "$env:TEMP/wsl-uninstall-logs.txt"
if (Test-Path $uninstallLogs)
{
Copy-Item $uninstallLogs $folder | Out-Null
}
$wprOutputLog = "$folder/wpr.txt"
# Build wpr command - if wprpProfile is set, use profile syntax, otherwise use file only
if ($wprpProfile -ne $null)
{
$wprCommand = "$wprpFile!$wprpProfile"
}
else
{
$wprCommand = $wprpFile
}
wpr.exe -start $wprCommand -filemode 2>&1 >> $wprOutputLog
if ($LastExitCode -Ne 0)
{
Write-Host -ForegroundColor Yellow "Log collection failed to start (exit code: $LastExitCode), trying to reset it."
wpr.exe -cancel 2>&1 >> $wprOutputLog
wpr.exe -start $wprComma
gitextract_550h3trh/
├── .clang-format
├── .gdnsuppress
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ ├── Bug_Report.yaml
│ │ └── feature_request.md
│ ├── actions/
│ │ └── triage/
│ │ └── action.yml
│ ├── copilot-instructions.md
│ ├── policies/
│ │ └── resourceManagement.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── distributions.yml
│ ├── documentation.yml
│ ├── issue_edited.yml
│ ├── modern-distributions.yml
│ ├── new_issue.yml
│ ├── new_issue_comment.yml
│ └── winget.yml
├── .gitignore
├── .pipelines/
│ ├── build-stage.yml
│ ├── flight-stage.yml
│ ├── nuget-stage.yml
│ ├── test-job.yml
│ ├── test-stage.yml
│ ├── wsl-build-nightly-localization.yml
│ ├── wsl-build-nightly-onebranch.yml
│ ├── wsl-build-notice.yml
│ ├── wsl-build-pr-onebranch.yml
│ ├── wsl-build-pr.yml
│ └── wsl-build-release-onebranch.yml
├── CMakeLists.txt
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── DATA_AND_PRIVACY.md
├── Directory.Build.Props
├── LICENSE
├── NOTICE.txt
├── README.md
├── SECURITY.md
├── SUPPORT.md
├── UserConfig.cmake.sample
├── cgmanifest.json
├── cloudtest/
│ ├── CMakeLists.txt
│ ├── TestGroup.xml.in
│ └── TestMap.xml.in
├── cmake/
│ ├── FindIDL.cmake
│ ├── FindLINUXBUILD.cmake
│ ├── FindMC.cmake
│ ├── findAppx.cmake
│ ├── findNuget.cmake
│ └── findVersion.cmake
├── diagnostics/
│ ├── collect-wsl-logs.ps1
│ ├── dump-init-stacks.sh
│ ├── dump-init.sh
│ ├── networking.sh
│ └── wsl.wprp
├── distributions/
│ ├── DistributionInfo.json
│ ├── requirements.txt
│ ├── validate-modern.py
│ └── validate.py
├── doc/
│ ├── README.md
│ ├── docs/
│ │ ├── debugging.md
│ │ ├── dev-loop.md
│ │ ├── index.md
│ │ └── technical-documentation/
│ │ ├── boot-process.md
│ │ ├── drvfs.md
│ │ ├── gns.md
│ │ ├── index.md
│ │ ├── init.md
│ │ ├── interop.md
│ │ ├── localhost.md
│ │ ├── mini_init.md
│ │ ├── plan9.md
│ │ ├── relay.md
│ │ ├── session-leader.md
│ │ ├── systemd.md
│ │ ├── wsl.exe.md
│ │ ├── wslconfig.exe.md
│ │ ├── wslg.exe.md
│ │ ├── wslhost.exe.md
│ │ ├── wslrelay.exe.md
│ │ └── wslservice.exe.md
│ └── mkdocs.yml
├── intune/
│ ├── WSL.admx
│ └── en-US/
│ └── WSL.adml
├── localization/
│ ├── CMakeLists.txt
│ └── strings/
│ ├── cs-CZ/
│ │ └── Resources.resw
│ ├── da-DK/
│ │ └── Resources.resw
│ ├── de-DE/
│ │ └── Resources.resw
│ ├── en-GB/
│ │ └── Resources.resw
│ ├── en-US/
│ │ └── Resources.resw
│ ├── es-ES/
│ │ └── Resources.resw
│ ├── fi-FI/
│ │ └── Resources.resw
│ ├── fr-FR/
│ │ └── Resources.resw
│ ├── hu-HU/
│ │ └── Resources.resw
│ ├── it-IT/
│ │ └── Resources.resw
│ ├── ja-JP/
│ │ └── Resources.resw
│ ├── ko-KR/
│ │ └── Resources.resw
│ ├── nb-NO/
│ │ └── Resources.resw
│ ├── nl-NL/
│ │ └── Resources.resw
│ ├── pl-PL/
│ │ └── Resources.resw
│ ├── pt-BR/
│ │ └── Resources.resw
│ ├── pt-PT/
│ │ └── Resources.resw
│ ├── ru-RU/
│ │ └── Resources.resw
│ ├── sv-SE/
│ │ └── Resources.resw
│ ├── tr-TR/
│ │ └── Resources.resw
│ ├── zh-CN/
│ │ └── Resources.resw
│ └── zh-TW/
│ └── Resources.resw
├── msipackage/
│ ├── CMakeLists.txt
│ └── package.wix.in
├── msixgluepackage/
│ ├── AppxManifest.in
│ └── CMakeLists.txt
├── msixinstaller/
│ ├── AppxManifest.in
│ └── CMakeLists.txt
├── nuget/
│ ├── CMakeLists.txt
│ ├── Microsoft.WSL.PluginApi.nuspec.in
│ └── README.WslPluginApi.MD
├── nuget.config
├── packages.config
├── src/
│ ├── linux/
│ │ ├── inc/
│ │ │ ├── lxdef.h
│ │ │ ├── lxwil.h
│ │ │ └── seccomp_defs.h
│ │ ├── init/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── DnsServer.cpp
│ │ │ ├── DnsServer.h
│ │ │ ├── DnsTunnelingChannel.cpp
│ │ │ ├── DnsTunnelingChannel.h
│ │ │ ├── DnsTunnelingManager.cpp
│ │ │ ├── DnsTunnelingManager.h
│ │ │ ├── GnsEngine.cpp
│ │ │ ├── GnsEngine.h
│ │ │ ├── GnsPortTracker.cpp
│ │ │ ├── GnsPortTracker.h
│ │ │ ├── Localization.cpp
│ │ │ ├── NetworkManager.cpp
│ │ │ ├── NetworkManager.h
│ │ │ ├── SecCompDispatcher.cpp
│ │ │ ├── SecCompDispatcher.h
│ │ │ ├── WslDistributionConfig.cpp
│ │ │ ├── WslDistributionConfig.h
│ │ │ ├── binfmt.cpp
│ │ │ ├── binfmt.h
│ │ │ ├── common.h
│ │ │ ├── config.cpp
│ │ │ ├── config.h
│ │ │ ├── drvfs.cpp
│ │ │ ├── drvfs.h
│ │ │ ├── escape.cpp
│ │ │ ├── escape.h
│ │ │ ├── init.cpp
│ │ │ ├── localhost.cpp
│ │ │ ├── localhost.h
│ │ │ ├── main.cpp
│ │ │ ├── plan9.cpp
│ │ │ ├── plan9.h
│ │ │ ├── telemetry.cpp
│ │ │ ├── telemetry.h
│ │ │ ├── timezone.cpp
│ │ │ ├── timezone.h
│ │ │ ├── util.cpp
│ │ │ ├── util.h
│ │ │ ├── waitablevalue.h
│ │ │ ├── wslinfo.cpp
│ │ │ ├── wslinfo.h
│ │ │ ├── wslpath.cpp
│ │ │ └── wslpath.h
│ │ ├── mountutil/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── mountflags.cpp
│ │ │ ├── mountutil.c
│ │ │ ├── mountutil.h
│ │ │ └── mountutilcpp.h
│ │ ├── netlinkutil/
│ │ │ ├── Address.cpp
│ │ │ ├── CMakeLists.txt
│ │ │ ├── Forwarder.h
│ │ │ ├── Forwarder.hxx
│ │ │ ├── Fwd.h
│ │ │ ├── Interface.cpp
│ │ │ ├── Interface.h
│ │ │ ├── InterfaceConfiguration.h
│ │ │ ├── IpNeighborManager.cpp
│ │ │ ├── IpNeighborManager.h
│ │ │ ├── IpRuleManager.cpp
│ │ │ ├── IpRuleManager.h
│ │ │ ├── Makefile.linux
│ │ │ ├── Neighbor.cpp
│ │ │ ├── Neighbor.h
│ │ │ ├── NetLinkStrings.h
│ │ │ ├── NetlinkChannel.h
│ │ │ ├── NetlinkChannel.hxx
│ │ │ ├── NetlinkError.cpp
│ │ │ ├── NetlinkError.h
│ │ │ ├── NetlinkMessage.h
│ │ │ ├── NetlinkMessage.hxx
│ │ │ ├── NetlinkParseException.cpp
│ │ │ ├── NetlinkParseException.h
│ │ │ ├── NetlinkResponse.cpp
│ │ │ ├── NetlinkResponse.h
│ │ │ ├── NetlinkResponse.hxx
│ │ │ ├── NetlinkTransaction.cpp
│ │ │ ├── NetlinkTransaction.h
│ │ │ ├── NetlinkTransactionError.cpp
│ │ │ ├── NetlinkTransactionError.h
│ │ │ ├── Operation.h
│ │ │ ├── Packet.h
│ │ │ ├── Protocol.h
│ │ │ ├── Route.cpp
│ │ │ ├── Route.h
│ │ │ ├── RoutingTable.cpp
│ │ │ ├── RoutingTable.h
│ │ │ ├── Rule.cpp
│ │ │ ├── Rule.h
│ │ │ ├── RuntimeErrorWithSourceLocation.cpp
│ │ │ ├── RuntimeErrorWithSourceLocation.h
│ │ │ ├── Syscall.h
│ │ │ ├── Syscall.hxx
│ │ │ ├── SyscallError.cpp
│ │ │ ├── SyscallError.h
│ │ │ ├── Utils.cpp
│ │ │ ├── Utils.h
│ │ │ ├── Utils.hxx
│ │ │ └── address.h
│ │ └── plan9/
│ │ ├── CMakeLists.txt
│ │ ├── expected.h
│ │ ├── p9await.h
│ │ ├── p9commonutil.h
│ │ ├── p9data.h
│ │ ├── p9defs.h
│ │ ├── p9errors.h
│ │ ├── p9fid.cpp
│ │ ├── p9fid.h
│ │ ├── p9file.cpp
│ │ ├── p9file.h
│ │ ├── p9fs.cpp
│ │ ├── p9fs.h
│ │ ├── p9handler.cpp
│ │ ├── p9handler.h
│ │ ├── p9ihandler.h
│ │ ├── p9io.cpp
│ │ ├── p9io.h
│ │ ├── p9log.h
│ │ ├── p9lx.cpp
│ │ ├── p9lx.h
│ │ ├── p9platform.h
│ │ ├── p9protohelpers.h
│ │ ├── p9readdir.cpp
│ │ ├── p9readdir.h
│ │ ├── p9scheduler.cpp
│ │ ├── p9scheduler.h
│ │ ├── p9tracelogging.cpp
│ │ ├── p9tracelogging.h
│ │ ├── p9tracelogginghelper.h
│ │ ├── p9util.cpp
│ │ ├── p9util.h
│ │ ├── p9xattr.cpp
│ │ ├── p9xattr.h
│ │ ├── precomp.h
│ │ └── result_macros.h
│ ├── shared/
│ │ ├── configfile/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── configfile.cpp
│ │ │ ├── configfile.h
│ │ │ ├── linux/
│ │ │ │ └── CMakeLists.txt
│ │ │ └── windows/
│ │ │ └── CMakeLists.txt
│ │ └── inc/
│ │ ├── CommandLine.h
│ │ ├── JsonUtils.h
│ │ ├── SocketChannel.h
│ │ ├── conncheckshared.h
│ │ ├── defs.h
│ │ ├── gslhelpers.h
│ │ ├── hns_schema.h
│ │ ├── lxfsshares.h
│ │ ├── lxinitshared.h
│ │ ├── message.h
│ │ ├── prettyprintshared.h
│ │ ├── retryshared.h
│ │ ├── socketshared.h
│ │ └── stringshared.h
│ └── windows/
│ ├── common/
│ │ ├── CMakeLists.txt
│ │ ├── ConsoleProgressBar.cpp
│ │ ├── ConsoleProgressBar.h
│ │ ├── ConsoleProgressIndicator.cpp
│ │ ├── ConsoleProgressIndicator.h
│ │ ├── ConsoleState.cpp
│ │ ├── ConsoleState.h
│ │ ├── DeviceHostProxy.cpp
│ │ ├── DeviceHostProxy.h
│ │ ├── Distribution.cpp
│ │ ├── Distribution.h
│ │ ├── Dmesg.cpp
│ │ ├── Dmesg.h
│ │ ├── DnsResolver.cpp
│ │ ├── DnsResolver.h
│ │ ├── DnsTunnelingChannel.cpp
│ │ ├── DnsTunnelingChannel.h
│ │ ├── ExecutionContext.cpp
│ │ ├── ExecutionContext.h
│ │ ├── GnsChannel.cpp
│ │ ├── GnsChannel.h
│ │ ├── GnsPortTrackerChannel.cpp
│ │ ├── GnsPortTrackerChannel.h
│ │ ├── GuestDeviceManager.cpp
│ │ ├── GuestDeviceManager.h
│ │ ├── HandleConsoleProgressBar.cpp
│ │ ├── HandleConsoleProgressBar.h
│ │ ├── INetworkingEngine.h
│ │ ├── Localization.cpp
│ │ ├── LxssMessagePort.cpp
│ │ ├── LxssMessagePort.h
│ │ ├── LxssPort.h
│ │ ├── LxssSecurity.cpp
│ │ ├── LxssSecurity.h
│ │ ├── LxssServerPort.cpp
│ │ ├── LxssServerPort.h
│ │ ├── NatNetworking.cpp
│ │ ├── NatNetworking.h
│ │ ├── Redirector.cpp
│ │ ├── Redirector.h
│ │ ├── RingBuffer.cpp
│ │ ├── RingBuffer.h
│ │ ├── Stringify.h
│ │ ├── SubProcess.cpp
│ │ ├── SubProcess.h
│ │ ├── VirtioNetworking.cpp
│ │ ├── VirtioNetworking.h
│ │ ├── WslClient.cpp
│ │ ├── WslClient.h
│ │ ├── WslCoreConfig.cpp
│ │ ├── WslCoreConfig.h
│ │ ├── WslCoreFilesystem.cpp
│ │ ├── WslCoreFilesystem.h
│ │ ├── WslCoreFirewallSupport.cpp
│ │ ├── WslCoreFirewallSupport.h
│ │ ├── WslCoreHostDnsInfo.cpp
│ │ ├── WslCoreHostDnsInfo.h
│ │ ├── WslCoreMessageQueue.h
│ │ ├── WslCoreNetworkEndpointSettings.cpp
│ │ ├── WslCoreNetworkEndpointSettings.h
│ │ ├── WslCoreNetworkingSupport.cpp
│ │ ├── WslCoreNetworkingSupport.h
│ │ ├── WslInstall.cpp
│ │ ├── WslInstall.h
│ │ ├── WslSecurity.cpp
│ │ ├── WslSecurity.h
│ │ ├── WslTelemetry.cpp
│ │ ├── WslTelemetry.h
│ │ ├── disk.cpp
│ │ ├── disk.hpp
│ │ ├── filesystem.cpp
│ │ ├── filesystem.hpp
│ │ ├── hcs.cpp
│ │ ├── hcs.hpp
│ │ ├── hcs_schema.h
│ │ ├── helpers.cpp
│ │ ├── helpers.hpp
│ │ ├── hvsocket.cpp
│ │ ├── hvsocket.hpp
│ │ ├── install.cpp
│ │ ├── install.h
│ │ ├── interop.cpp
│ │ ├── interop.hpp
│ │ ├── lxssbusclient.cpp
│ │ ├── lxssclient.cpp
│ │ ├── notifications.cpp
│ │ ├── notifications.h
│ │ ├── precomp.h
│ │ ├── registry.cpp
│ │ ├── registry.hpp
│ │ ├── relay.cpp
│ │ ├── relay.hpp
│ │ ├── socket.cpp
│ │ ├── socket.hpp
│ │ ├── string.cpp
│ │ ├── string.hpp
│ │ ├── svccomm.cpp
│ │ ├── svccomm.hpp
│ │ ├── wslutil.cpp
│ │ └── wslutil.h
│ ├── inc/
│ │ ├── LxssDynamicFunction.h
│ │ ├── RegistryWatcher.h
│ │ ├── WmiService.h
│ │ ├── WmiVariant.h
│ │ ├── WslCoreConfigInterface.h
│ │ ├── WslPluginApi.h
│ │ ├── comservicehelper.h
│ │ ├── lxssbusclient.h
│ │ ├── lxssclient.h
│ │ ├── traceloggingconfig.h
│ │ ├── wdk.h
│ │ ├── wsl.h
│ │ ├── wslconfig.h
│ │ ├── wslhost.h
│ │ ├── wslpolicies.h
│ │ ├── wslrelay.h
│ │ └── wslversioninfo.h
│ ├── libwsl/
│ │ ├── CMakeLists.txt
│ │ ├── DllMain.cpp
│ │ ├── WslCoreConfigInterface.cpp
│ │ └── libwsl.def
│ ├── service/
│ │ ├── CMakeLists.txt
│ │ ├── exe/
│ │ │ ├── BridgedNetworking.cpp
│ │ │ ├── BridgedNetworking.h
│ │ │ ├── CMakeLists.txt
│ │ │ ├── DistributionRegistration.cpp
│ │ │ ├── DistributionRegistration.h
│ │ │ ├── GnsRpcServer.cpp
│ │ │ ├── GnsRpcServer.h
│ │ │ ├── GuestTelemetryLogger.cpp
│ │ │ ├── GuestTelemetryLogger.h
│ │ │ ├── IMirroredNetworkManager.h
│ │ │ ├── Lifetime.cpp
│ │ │ ├── Lifetime.h
│ │ │ ├── LxssConsoleManager.cpp
│ │ │ ├── LxssConsoleManager.h
│ │ │ ├── LxssCreateProcess.cpp
│ │ │ ├── LxssCreateProcess.h
│ │ │ ├── LxssHttpProxy.cpp
│ │ │ ├── LxssHttpProxy.h
│ │ │ ├── LxssInstance.cpp
│ │ │ ├── LxssInstance.h
│ │ │ ├── LxssIpTables.cpp
│ │ │ ├── LxssIpTables.h
│ │ │ ├── LxssUserCallback.cpp
│ │ │ ├── LxssUserCallback.h
│ │ │ ├── LxssUserSession.cpp
│ │ │ ├── LxssUserSession.h
│ │ │ ├── LxssUserSessionFactory.cpp
│ │ │ ├── LxssUserSessionFactory.h
│ │ │ ├── MirroredNetworking.cpp
│ │ │ ├── MirroredNetworking.h
│ │ │ ├── PluginManager.cpp
│ │ │ ├── PluginManager.h
│ │ │ ├── ServiceMain.cpp
│ │ │ ├── WslCoreAdviseHandler.h
│ │ │ ├── WslCoreGuestNetworkService.cpp
│ │ │ ├── WslCoreGuestNetworkService.h
│ │ │ ├── WslCoreInstance.cpp
│ │ │ ├── WslCoreInstance.h
│ │ │ ├── WslCoreNetworkEndpoint.h
│ │ │ ├── WslCoreTcpIpStateTracking.cpp
│ │ │ ├── WslCoreTcpIpStateTracking.h
│ │ │ ├── WslCoreVm.cpp
│ │ │ ├── WslCoreVm.h
│ │ │ ├── WslMirroredNetworking.cpp
│ │ │ ├── WslMirroredNetworking.h
│ │ │ ├── application.manifest
│ │ │ ├── main.rc
│ │ │ └── resource.h
│ │ ├── inc/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── windowsdefs.idl
│ │ │ └── wslservice.idl
│ │ ├── mc/
│ │ │ ├── CMakeLists.txt
│ │ │ └── wsleventschema.mc
│ │ └── stub/
│ │ ├── CMakeLists.txt
│ │ ├── WslServiceProxyStub.def
│ │ └── WslServiceProxyStub.rc
│ ├── wsl/
│ │ ├── CMakeLists.txt
│ │ ├── main.cpp
│ │ ├── main.rc
│ │ └── resource.h
│ ├── wslg/
│ │ ├── CMakeLists.txt
│ │ ├── main.cpp
│ │ ├── main.rc
│ │ └── resource.h
│ ├── wslhost/
│ │ ├── CMakeLists.txt
│ │ ├── main.cpp
│ │ ├── main.rc
│ │ └── resource.h
│ ├── wslinstall/
│ │ ├── CMakeLists.txt
│ │ ├── DllMain.cpp
│ │ ├── version.rc
│ │ └── wslinstall.def
│ ├── wslinstaller/
│ │ ├── exe/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── ServiceMain.cpp
│ │ │ ├── WslInstaller.cpp
│ │ │ ├── WslInstaller.h
│ │ │ ├── WslInstallerFactory.cpp
│ │ │ ├── WslInstallerFactory.h
│ │ │ └── main.rc
│ │ ├── inc/
│ │ │ ├── CMakeLists.txt
│ │ │ └── wslinstallerservice.idl
│ │ ├── stub/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── WslInstallerProxyStub.def
│ │ │ └── WslInstallerProxyStub.rc
│ │ └── wslinstaller.idl
│ ├── wslrelay/
│ │ ├── CMakeLists.txt
│ │ ├── localhost.cpp
│ │ ├── localhost.h
│ │ ├── main.cpp
│ │ ├── main.rc
│ │ └── resource.h
│ └── wslsettings/
│ ├── Activation/
│ │ ├── ActivationHandler.cs
│ │ ├── DefaultActivationHandler.cs
│ │ ├── IActivationHandler.cs
│ │ └── ProtocolActivationHandler.cs
│ ├── App.xaml
│ ├── App.xaml.cs
│ ├── Behaviors/
│ │ ├── NavigationViewHeaderBehavior.cs
│ │ └── NavigationViewHeaderMode.cs
│ ├── CMakeLists.txt
│ ├── Constants.cs
│ ├── Contracts/
│ │ ├── Services/
│ │ │ ├── IActivationService.cs
│ │ │ ├── INavigationService.cs
│ │ │ ├── INavigationViewService.cs
│ │ │ ├── IPageService.cs
│ │ │ ├── IWindowService.cs
│ │ │ └── IWslConfigService.cs
│ │ └── ViewModels/
│ │ └── INavigationAware.cs
│ ├── Controls/
│ │ ├── HyperlinkTextBlock.xaml
│ │ ├── HyperlinkTextBlock.xaml.cs
│ │ ├── OOBEContent.xaml
│ │ └── OOBEContent.xaml.cs
│ ├── Converters/
│ │ ├── BooleanToVisibilityConverter.cs
│ │ ├── MegabyteNumberConverter.cs
│ │ ├── MegabyteStringConverter.cs
│ │ └── MillisecondsStringConverter.cs
│ ├── Helpers/
│ │ ├── FrameExtensions.cs
│ │ ├── NavigationHelper.cs
│ │ ├── ResourceExtensions.cs
│ │ ├── RuntimeHelper.cs
│ │ └── TitleBarHelper.cs
│ ├── LibWsl.cs
│ ├── Services/
│ │ ├── ActivationService.cs
│ │ ├── NavigationService.cs
│ │ ├── NavigationViewService.cs
│ │ ├── PageService.cs
│ │ ├── WindowService.cs
│ │ └── WslConfigService.cs
│ ├── Styles/
│ │ ├── Button.xaml
│ │ ├── CommonStyles.xaml
│ │ ├── FontSizes.xaml
│ │ └── Thickness.xaml
│ ├── Usings.cs
│ ├── ViewModels/
│ │ ├── OOBE/
│ │ │ ├── DistroManagementViewModel.cs
│ │ │ ├── DockerDesktopIntegrationViewModel.cs
│ │ │ ├── GPUAccelerationViewModel.cs
│ │ │ ├── GUIAppsViewModel.cs
│ │ │ ├── GeneralViewModel.cs
│ │ │ ├── NetworkingIntegrationViewModel.cs
│ │ │ ├── VSCodeIntegrationViewModel.cs
│ │ │ ├── VSIntegrationViewModel.cs
│ │ │ ├── WelcomeToUbuntuViewModel.cs
│ │ │ └── WorkingAcrossFileSystemsViewModel.cs
│ │ ├── Settings/
│ │ │ ├── AboutViewModel.cs
│ │ │ ├── DeveloperViewModel.cs
│ │ │ ├── FileSystemViewModel.cs
│ │ │ ├── MemAndProcViewModel.cs
│ │ │ ├── NetworkingViewModel.cs
│ │ │ ├── OptionalFeaturesViewModel.cs
│ │ │ └── WslConfigSettingViewModel.cs
│ │ └── ShellViewModel.cs
│ ├── Views/
│ │ ├── OOBE/
│ │ │ ├── DistroManagementPage.xaml
│ │ │ ├── DistroManagementPage.xaml.cs
│ │ │ ├── DockerDesktopIntegrationPage.xaml
│ │ │ ├── DockerDesktopIntegrationPage.xaml.cs
│ │ │ ├── GPUAccelerationPage.xaml
│ │ │ ├── GPUAccelerationPage.xaml.cs
│ │ │ ├── GUIAppsPage.xaml
│ │ │ ├── GUIAppsPage.xaml.cs
│ │ │ ├── GeneralPage.xaml
│ │ │ ├── GeneralPage.xaml.cs
│ │ │ ├── NetworkingIntegrationPage.xaml
│ │ │ ├── NetworkingIntegrationPage.xaml.cs
│ │ │ ├── ShellPage.xaml
│ │ │ ├── ShellPage.xaml.cs
│ │ │ ├── VSCodeIntegrationPage.xaml
│ │ │ ├── VSCodeIntegrationPage.xaml.cs
│ │ │ ├── VSIntegrationPage.xaml
│ │ │ ├── VSIntegrationPage.xaml.cs
│ │ │ ├── WorkingAcrossFileSystemsPage.xaml
│ │ │ └── WorkingAcrossFileSystemsPage.xaml.cs
│ │ └── Settings/
│ │ ├── AboutPage.xaml
│ │ ├── AboutPage.xaml.cs
│ │ ├── DeveloperPage.xaml
│ │ ├── DeveloperPage.xaml.cs
│ │ ├── FileSystemPage.xaml
│ │ ├── FileSystemPage.xaml.cs
│ │ ├── MemAndProcPage.xaml
│ │ ├── MemAndProcPage.xaml.cs
│ │ ├── NetworkingPage.xaml
│ │ ├── NetworkingPage.xaml.cs
│ │ ├── OptionalFeaturesPage.xaml
│ │ ├── OptionalFeaturesPage.xaml.cs
│ │ ├── ShellPage.xaml
│ │ └── ShellPage.xaml.cs
│ ├── Windows/
│ │ ├── MainWindow.xaml
│ │ ├── MainWindow.xaml.cs
│ │ ├── OOBEWindow.xaml
│ │ └── OOBEWindow.xaml.cs
│ ├── app.manifest
│ ├── directory.build.targets.in
│ └── properties/
│ └── AssemblyInfo.cs.in
├── storebroker/
│ ├── PDPs/
│ │ ├── cs-CZ/
│ │ │ └── PDP.xml
│ │ ├── da-DK/
│ │ │ └── PDP.xml
│ │ ├── de-DE/
│ │ │ └── PDP.xml
│ │ ├── en-GB/
│ │ │ └── PDP.xml
│ │ ├── en-us/
│ │ │ └── PDP.xml
│ │ ├── es-ES/
│ │ │ └── PDP.xml
│ │ ├── fi-FI/
│ │ │ └── PDP.xml
│ │ ├── fr-FR/
│ │ │ └── PDP.xml
│ │ ├── hu-HU/
│ │ │ └── PDP.xml
│ │ ├── it-IT/
│ │ │ └── PDP.xml
│ │ ├── ja-JP/
│ │ │ └── PDP.xml
│ │ ├── ko-KR/
│ │ │ └── PDP.xml
│ │ ├── nb-NO/
│ │ │ └── PDP.xml
│ │ ├── nl-NL/
│ │ │ └── PDP.xml
│ │ ├── pl-PL/
│ │ │ └── PDP.xml
│ │ ├── pt-BR/
│ │ │ └── PDP.xml
│ │ ├── pt-PT/
│ │ │ └── PDP.xml
│ │ ├── qps-ploc/
│ │ │ └── PDP.xml
│ │ ├── qps-ploca/
│ │ │ └── PDP.xml
│ │ ├── qps-plocm/
│ │ │ └── PDP.xml
│ │ ├── ru-RU/
│ │ │ └── PDP.xml
│ │ ├── sv-SE/
│ │ │ └── PDP.xml
│ │ ├── tr-TR/
│ │ │ └── PDP.xml
│ │ ├── zh-CN/
│ │ │ └── PDP.xml
│ │ └── zh-TW/
│ │ └── PDP.xml
│ └── sbconfig.json
├── test/
│ ├── README.md
│ ├── linux/
│ │ └── unit_tests/
│ │ ├── Makefile
│ │ ├── auxv.c
│ │ ├── binfmt.c
│ │ ├── brk.c
│ │ ├── build_tests.sh
│ │ ├── cgroup.c
│ │ ├── common.c
│ │ ├── common.h
│ │ ├── dev_pt.c
│ │ ├── dev_pt_2.c
│ │ ├── dev_pt_common.c
│ │ ├── dev_pt_common.h
│ │ ├── drvfs.c
│ │ ├── dup.c
│ │ ├── epoll.c
│ │ ├── eventfd.c
│ │ ├── execve.c
│ │ ├── flock.c
│ │ ├── fork.c
│ │ ├── fscommon.c
│ │ ├── fstab.c
│ │ ├── get_set_id.c
│ │ ├── getaddrinfo.c
│ │ ├── gettime.c
│ │ ├── inotify.c
│ │ ├── interop.c
│ │ ├── ioprio.c
│ │ ├── keymgmt.c
│ │ ├── lxtcommon.h
│ │ ├── lxtevent.c
│ │ ├── lxtevent.h
│ │ ├── lxtfs.c
│ │ ├── lxtfs.h
│ │ ├── lxtlog.c
│ │ ├── lxtlog.h
│ │ ├── lxtmount.c
│ │ ├── lxtmount.h
│ │ ├── lxtutil.c
│ │ ├── lxtutil.h
│ │ ├── madvise.c
│ │ ├── mprotect.c
│ │ ├── mremap.c
│ │ ├── namespace.c
│ │ ├── netlink.c
│ │ ├── overlayfs.c
│ │ ├── pipe.c
│ │ ├── poll.c
│ │ ├── random.c
│ │ ├── resourcelimits.c
│ │ ├── sched.c
│ │ ├── select.c
│ │ ├── sem.c
│ │ ├── shm.c
│ │ ├── socket.c
│ │ ├── socket_nonblock.c
│ │ ├── splice.c
│ │ ├── sysfs.c
│ │ ├── sysinfo.c
│ │ ├── timer.c
│ │ ├── timerfd.c
│ │ ├── tty.c
│ │ ├── ttys.c
│ │ ├── unittests.c
│ │ ├── unittests.h
│ │ ├── user.c
│ │ ├── utimensat.c
│ │ ├── vfsaccess.c
│ │ ├── vnet.c
│ │ ├── waitpid.c
│ │ ├── wslpath.c
│ │ └── xattr.c
│ └── windows/
│ ├── CMakeLists.txt
│ ├── Common.cpp
│ ├── Common.h
│ ├── DrvFsTests.cpp
│ ├── InstallerTests.cpp
│ ├── MountTests.cpp
│ ├── NetworkTests.cpp
│ ├── Plan9Tests.cpp
│ ├── PluginTests.cpp
│ ├── PluginTests.h
│ ├── PolicyTests.cpp
│ ├── SimpleTests.cpp
│ ├── UnitTests.cpp
│ ├── lxsstest.h
│ └── testplugin/
│ ├── CMakeLists.txt
│ └── Plugin.cpp
├── tools/
│ ├── FormatSource.ps1.in
│ ├── SetupClangFormat.bat
│ ├── build-bundle.bat
│ ├── create-dev-cert.ps1
│ ├── create-initrd.ps1
│ ├── deploy/
│ │ ├── deploy-to-host.ps1
│ │ └── deploy-to-vm.ps1
│ ├── devops/
│ │ ├── create-change.py
│ │ ├── create-release.py
│ │ ├── find-release.py
│ │ ├── requirements.txt
│ │ ├── validate-copyright-headers.py
│ │ ├── validate-localization.py
│ │ └── version_functions.ps1
│ ├── generateLocalizationHeader.ps1
│ ├── hooks/
│ │ └── pre-commit
│ └── test/
│ ├── CloudTest-Setup.bat
│ ├── build-test-distro.ps1
│ ├── copy_and_build_tests.ps1
│ ├── copy_tests.ps1
│ ├── gh-release-server.py
│ ├── run-tests.ps1
│ ├── setup-vm-for-tests.ps1
│ ├── test-setup.ps1
│ └── test.bat.in
└── triage/
├── config.yml
├── install-latest-wsl.ps1
└── no-filter.wpaProfile
Showing preview only (310K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3492 symbols across 429 files)
FILE: distributions/validate-modern.py
function subset (line 67) | def subset(inner, outer) -> bool:
function node_equals (line 77) | def node_equals(left, right):
function main (line 93) | def main(manifest: str, tar: str, compare_with_branch: str, repo_path: s...
function report_status_on_pr (line 172) | def report_status_on_pr(manifest: str):
function read_config_keys (line 192) | def read_config_keys(config: configparser.ConfigParser) -> dict:
function read_passwd (line 201) | def read_passwd(node, default_uid: int, fd):
function read_systemd_enabled_units (line 235) | def read_systemd_enabled_units(node, tar) -> dict:
function linux_real_path (line 291) | def linux_real_path(path: str):
function get_tar_file (line 311) | def get_tar_file(tar, path: str, follow_symlink=False, symlink_depth=10):
function find_unsupported_attrs (line 356) | def find_unsupported_attrs(tar):
function read_tar (line 371) | def read_tar(node, file, elf_magic: str):
function read_url (line 482) | def read_url(url: dict, elf_magic):
function error (line 544) | def error(node, message: str):
function warning (line 555) | def warning(node, message: str):
FILE: distributions/validate.py
function download_and_get_manifest (line 11) | def download_and_get_manifest(url: str):
function validate_package_url (line 24) | def validate_package_url(url: str, family_name: str, platform: str):
function validate_distro (line 50) | def validate_distro(distro: dict):
function is_unique (line 57) | def is_unique(collection: list):
FILE: src/linux/inc/lxdef.h
type LX_INT (line 5) | typedef int LX_INT;
type LX_UID_T (line 6) | typedef unsigned long LX_UID_T;
type LX_GID_T (line 7) | typedef unsigned long LX_GID_T;
type LX_MODE_T (line 8) | typedef unsigned long LX_MODE_T;
type std (line 11) | typedef std::uint8_t UINT8;
type std (line 12) | typedef std::int8_t INT8;
type std (line 13) | typedef std::uint16_t UINT16;
type std (line 14) | typedef std::int16_t INT16;
type std (line 15) | typedef std::uint32_t UINT32;
type std (line 16) | typedef std::int32_t INT32;
type std (line 17) | typedef std::uint64_t UINT64;
type std (line 18) | typedef std::int64_t INT64;
type std (line 19) | typedef std::uintptr_t ULONG_PTR;
type UCHAR (line 20) | typedef unsigned char UCHAR;
type _GUID (line 23) | struct _GUID
type _ENUM_FLAG_INTEGER_FOR_SIZE (line 130) | struct _ENUM_FLAG_INTEGER_FOR_SIZE
type INT8 (line 132) | typedef INT8 type;
type _ENUM_FLAG_INTEGER_FOR_SIZE (line 136) | struct _ENUM_FLAG_INTEGER_FOR_SIZE
type INT16 (line 138) | typedef INT16 type;
type _ENUM_FLAG_INTEGER_FOR_SIZE (line 142) | struct _ENUM_FLAG_INTEGER_FOR_SIZE
type INT32 (line 144) | typedef INT32 type;
type _ENUM_FLAG_INTEGER_FOR_SIZE (line 148) | struct _ENUM_FLAG_INTEGER_FOR_SIZE
type INT64 (line 150) | typedef INT64 type;
type LIST_ENTRY (line 194) | typedef struct _LIST_ENTRY
function InitializeListHead (line 200) | inline void InitializeListHead(PLIST_ENTRY listHead)
function IsListEmpty (line 205) | [[nodiscard]] inline bool IsListEmpty(const LIST_ENTRY* listHead)
function InsertTailList (line 210) | inline void InsertTailList(PLIST_ENTRY listHead, PLIST_ENTRY entry)
function RemoveEntryList (line 219) | inline bool RemoveEntryList(PLIST_ENTRY entry)
FILE: src/linux/inc/lxwil.h
function namespace (line 11) | namespace wil {
function class (line 76) | class ExceptionWithUserMessage : public std::exception
function namespace (line 92) | namespace details {
function ResultFromCaughtException (line 195) | inline int ResultFromCaughtException()
function class (line 257) | class unique_dir
function DIR (line 290) | DIR* get() const noexcept
function reset (line 295) | void reset(DIR* dir = invalid_dir) noexcept
function DIR (line 305) | DIR* release() noexcept
function class (line 321) | class unique_fd
function class (line 385) | class unique_pipe
function class (line 453) | class unique_file
function FILE (line 486) | FILE* get() const noexcept
function reset (line 491) | void reset(FILE* file = invalid_file) noexcept
function FILE (line 501) | FILE* release() noexcept
function noexcept (line 521) | [[nodiscard]] inline auto scope_exit(TLambda&& lambda) noexcept
function namespace (line 526) | namespace details {
function AreAllFlagsSetHelper (line 544) | bool AreAllFlagsSetHelper(TVal val, TFlags flags)
function IsSingleFlagSetHelper (line 550) | bool IsSingleFlagSetHelper(TVal val)
function IsClearOrSingleFlagSetHelper (line 556) | bool IsClearOrSingleFlagSetHelper(TVal val)
type type (line 591) | typedef unsigned long long type;
function class (line 644) | class ScopedWarningsCollector
FILE: src/linux/init/DnsServer.h
function class (line 14) | class DnsServer
FILE: src/linux/init/DnsTunnelingChannel.cpp
type pollfd (line 44) | struct pollfd
FILE: src/linux/init/DnsTunnelingChannel.h
function class (line 11) | class DnsTunnelingChannel
FILE: src/linux/init/DnsTunnelingManager.h
function class (line 8) | class DnsTunnelingManager
FILE: src/linux/init/GnsEngine.cpp
function Interface (line 47) | Interface GnsEngine::OpenAdapterImpl(const GUID& id)
function Interface (line 78) | Interface GnsEngine::OpenAdapter(const GUID& id)
function Interface (line 83) | Interface GnsEngine::OpenInterfaceImpl(const std::string& deviceName)
function Interface (line 95) | Interface GnsEngine::OpenInterface(const std::string& deviceName)
function Interface (line 129) | Interface GnsEngine::OpenInterfaceOrAdapter(const std::wstring& nameOrId)
FILE: src/linux/init/GnsEngine.h
function class (line 14) | class GnsEngine
FILE: src/linux/init/GnsPortTracker.h
function class (line 21) | class GnsPortTracker
type DeferredPortLookup (line 97) | struct DeferredPortLookup
type BindCall (line 114) | struct BindCall
type PortRefreshResult (line 121) | struct PortRefreshResult
FILE: src/linux/init/Localization.cpp
function FormatLanguage (line 17) | std::string FormatLanguage(const char* Input)
function GetUserLanguage (line 34) | std::optional<std::string> GetUserLanguage()
FILE: src/linux/init/NetworkManager.cpp
function Interface (line 77) | Interface NetworkManager::CreateVirtualWifiAdapter(Interface& baseAdapte...
function Interface (line 88) | Interface NetworkManager::CreateProxyWifiAdapter(Interface& baseAdapter,...
function Interface (line 252) | Interface NetworkManager::CreateBondAdapter(const std::string& name)
FILE: src/linux/init/NetworkManager.h
function class (line 11) | class NetworkManager
FILE: src/linux/init/SecCompDispatcher.cpp
function seccomp (line 9) | static int seccomp(unsigned int operation, unsigned int flags, void* arg...
type pollfd (line 50) | struct pollfd
FILE: src/linux/init/SecCompDispatcher.h
function class (line 15) | class SecCompDispatcher
FILE: src/linux/init/WslDistributionConfig.h
function namespace (line 22) | namespace wsl::linux {
FILE: src/linux/init/binfmt.cpp
type termios (line 35) | struct termios
type pollfd (line 46) | struct pollfd
function CreateNtProcess (line 52) | int CreateNtProcess(int Argc, char* Argv[])
function CreateNtProcessUtilityVm (line 113) | int CreateNtProcessUtilityVm(int Argc, char* Argv[])
function HasOpenFileDescriptors (line 959) | bool HasOpenFileDescriptors(struct pollfd* PollDescriptors, int PollDesc...
function RestoreConsoleState (line 991) | void RestoreConsoleState(void)
function WindowSizeChanged (line 1018) | void WindowSizeChanged(int SignalChannelFd)
FILE: src/linux/init/common.h
type sigaction (line 71) | struct sigaction
function logline (line 104) | auto logline = std::format(format, std::forward<Args>(args)...);
FILE: src/linux/init/config.cpp
class RemoveMountAndEnvironmentOnScopeExit (line 82) | class RemoveMountAndEnvironmentOnScopeExit
method RemoveMountAndEnvironmentOnScopeExit (line 85) | RemoveMountAndEnvironmentOnScopeExit() = default;
method RemoveMountAndEnvironmentOnScopeExit (line 87) | RemoveMountAndEnvironmentOnScopeExit(const char* EnvironmentName) : m_...
method RemoveMountAndEnvironmentOnScopeExit (line 92) | RemoveMountAndEnvironmentOnScopeExit& operator=(const RemoveMountAndEn...
method RemoveMountAndEnvironmentOnScopeExit (line 93) | RemoveMountAndEnvironmentOnScopeExit(const RemoveMountAndEnvironmentOn...
method RemoveMountAndEnvironmentOnScopeExit (line 95) | RemoveMountAndEnvironmentOnScopeExit(RemoveMountAndEnvironmentOnScopeE...
method RemoveMountAndEnvironmentOnScopeExit (line 100) | RemoveMountAndEnvironmentOnScopeExit& operator=(RemoveMountAndEnvironm...
method MoveMount (line 146) | bool MoveMount(const char* Target)
type stat (line 910) | struct stat
function ConfigInitializeVmMode (line 1009) | int ConfigInitializeVmMode(bool Elevated, wsl::linux::WslDistributionCon...
function ConfigInitializeWsl (line 1158) | int ConfigInitializeWsl(void)
function ConfigInitializeEntry (line 1216) | int ConfigInitializeEntry(PCINIT_STARTUP_ANY AnyEntry)
function ConfigCreateResolvConfSymlink (line 1330) | void ConfigCreateResolvConfSymlink(const wsl::linux::WslDistributionConf...
function ConfigCreateResolvConfSymlinkTarget (line 1385) | int ConfigCreateResolvConfSymlinkTarget(void)
function ConfigReconfigureResolvConfSymlink (line 1516) | int ConfigReconfigureResolvConfSymlink(const wsl::linux::WslDistribution...
function EnvironmentBlock (line 1576) | EnvironmentBlock ConfigCreateEnvironmentBlock(const PLX_INIT_CREATE_PROC...
function ConfigGetMountedDrvFsVolumes (line 1679) | std::set<std::pair<unsigned int, std::string>> ConfigGetMountedDrvFsVolu...
function ConfigGetWslgEnvironmentVariables (line 1757) | std::vector<std::pair<std::string, std::string>> ConfigGetWslgEnvironmen...
function ConfigGetDriveLetter (line 1786) | void ConfigInitializeCgroups(wsl::linux::WslDistributionConfig& Config)
function ConfigApplyWindowsLibPath (line 2056) | static void ConfigApplyWindowsLibPath(const wsl::linux::WslDistributionC...
function ConfigMountFsTab (line 2114) | void ConfigMountFsTab(bool Elevated)
function ConfigRegisterBinfmtInterpreter (line 2149) | int ConfigRegisterBinfmtInterpreter(void)
function ConfigRemountDrvFs (line 2189) | int ConfigRemountDrvFs(gsl::span<gsl::byte> Buffer, wsl::shared::SocketC...
function ConfigSetMountNamespace (line 2469) | int ConfigSetMountNamespace(bool Elevated)
function CreateLoginSession (line 2677) | bool CreateLoginSession(const wsl::linux::WslDistributionConfig& Config,...
FILE: src/linux/init/config.h
type INIT_SECURITY (line 219) | typedef struct _INIT_SECURITY
type INIT_STARTUP_MOUNT (line 228) | typedef struct _INIT_STARTUP_MOUNT
type INIT_STARTUP_SYMBOLIC_LINK (line 241) | typedef struct _INIT_STARTUP_SYMBOLIC_LINK
type INIT_STARTUP_DIRECTORY (line 249) | typedef struct _INIT_STARTUP_DIRECTORY
type INIT_STARTUP_FILE (line 257) | typedef struct _INIT_STARTUP_FILE
type INIT_STARTUP_NODE (line 265) | typedef struct _INIT_STARTUP_NODE
type INIT_STARTUP_TYPE (line 275) | typedef enum _INIT_STARTUP_TYPE
type INIT_STARTUP_ANY (line 285) | typedef struct _INIT_STARTUP_ANY
function found (line 322) | auto found = std::find_if(
function AddVariableNoThrow (line 336) | int AddVariableNoThrow(std::string_view Name, std::string_view Value)
function found (line 349) | auto found = std::find_if(
type sigaction (line 379) | struct sigaction
type std (line 432) | struct std
FILE: src/linux/init/drvfs.cpp
function SaveVirtiofsTagMapping (line 47) | void SaveVirtiofsTagMapping(const char* Tag, const char* Source)
function ConvertDrvfsMountOptionsToPlan9 (line 103) | std::pair<std::string, std::string> ConvertDrvfsMountOptionsToPlan9(std:...
function IsDrvfsElevated (line 159) | bool IsDrvfsElevated(void)
function MountFilesystem (line 216) | int MountFilesystem(const char* FsType, const char* Source, const char* ...
function MountWithRetry (line 276) | int MountWithRetry(const char* Source, const char* Target, const char* F...
FILE: src/linux/init/escape.cpp
function EscapeCharNeedsEscape (line 165) | bool EscapeCharNeedsEscape(char Character)
function EscapePathForNt (line 196) | void EscapePathForNt(const char* Path, char* EscapedPath)
function EscapePathForNtLength (line 255) | size_t EscapePathForNtLength(const char* Path)
function UnescapePathInplace (line 298) | void UnescapePathInplace(char* Path)
FILE: src/linux/init/init.cpp
type _CREATE_PROCESS_PARSED_COMMON (line 63) | struct _CREATE_PROCESS_PARSED_COMMON
type _CREATE_PROCESS_PARSED (line 74) | struct _CREATE_PROCESS_PARSED
type sigaction (line 82) | struct sigaction
function WslEntryPoint (line 158) | int WslEntryPoint(int Argc, char* Argv[])
function GenerateUserSystemdUnits (line 244) | int GenerateUserSystemdUnits(int Argc, char** Argv)
function GenerateSystemdUnits (line 299) | int GenerateSystemdUnits(int Argc, char** Argv)
function CreateProcess (line 456) | void CreateProcess(PCREATE_PROCESS_PARSED Parsed, int TtyFd, const wsl::...
function CreateProcessCommon (line 518) | void CreateProcessCommon(PCREATE_PROCESS_PARSED_COMMON Common, int TtyFd...
function CREATE_PROCESS_PARSED (line 819) | CREATE_PROCESS_PARSED CreateProcessParse(gsl::span<gsl::byte> Buffer, in...
type passwd (line 990) | struct passwd
type sockaddr_vm (line 1138) | struct sockaddr_vm
function InitConnectToServer (line 1270) | int InitConnectToServer(int LxBusFd, bool WaitForServer)
function InitCreateProcessUtilityVm (line 1325) | int InitCreateProcessUtilityVm(
function InitEntry (line 2161) | void InitEntry(int Argc, char* Argv[])
function InitEntryUtilityVm (line 2214) | void InitEntryUtilityVm(wsl::linux::WslDistributionConfig& Config)
function InitEntryWsl (line 2534) | void InitEntryWsl(wsl::linux::WslDistributionConfig& Config)
function SessionLeaderCreateProcess (line 2818) | void SessionLeaderCreateProcess(gsl::span<gsl::byte> Buffer, int Message...
function SessionLeaderSigchldHandler (line 2934) | void SessionLeaderSigchldHandler(__attribute__((unused)) int Signal, __a...
function SessionLeaderEntryUtilityVm (line 2973) | void SessionLeaderEntryUtilityVm(wsl::shared::SocketChannel& channel, co...
function SessionLeaderEntry (line 3050) | void SessionLeaderEntry(int MessageFd, int TtyFd, const wsl::linux::WslD...
function StopPlan9Server (line 3137) | bool StopPlan9Server(bool Force, wsl::linux::WslDistributionConfig& Config)
function UnmarshalConsoleFromServer (line 3160) | wil::unique_fd UnmarshalConsoleFromServer(int MessageFd, LXBUS_IPC_CONSO...
function StartPlan9 (line 3200) | unsigned int StartPlan9(int Argc, char** Argv)
function StartGns (line 3238) | unsigned int StartGns(int Argc, char** Argv)
function WaitForBootProcess (line 3400) | void WaitForBootProcess(wsl::linux::WslDistributionConfig& Config)
FILE: src/linux/init/localhost.cpp
function ListenThread (line 33) | void ListenThread(sockaddr_vm hvSocketAddress, int listenSocket)
function QueryListeningSockets (line 152) | std::vector<sockaddr_storage> QueryListeningSockets(NetlinkChannel& chan...
function LX_GNS_PORT_LISTENER_RELAY (line 224) | LX_GNS_PORT_LISTENER_RELAY SockToRelayMessage(const sockaddr_storage& sock)
function IsSameSockAddr (line 266) | bool IsSameSockAddr(const sockaddr_storage& left, const sockaddr_storage...
function MonitorListeningSockets (line 291) | int MonitorListeningSockets(wsl::shared::SocketChannel& channel)
function StartLocalhostRelay (line 351) | int StartLocalhostRelay(wsl::shared::SocketChannel& channel, int GuestRe...
function RunPortTracker (line 398) | int RunPortTracker(int Argc, char** Argv)
FILE: src/linux/init/main.cpp
type VmConfiguration (line 107) | struct VmConfiguration
function Chroot (line 222) | int Chroot(const char* Target)
function CreateNetlinkSocket (line 448) | wil::unique_fd CreateNetlinkSocket(void)
function CreateSwap (line 485) | void CreateSwap(unsigned int Lun)
function CreateTempDirectory (line 524) | int CreateTempDirectory(const char* ParentPath, std::string& Path)
function dev_t (line 568) | dev_t GetBlockDeviceNumber(const std::string& BlockDeviceName)
function DetachScsiDisk (line 607) | int DetachScsiDisk(unsigned int Lun)
function EnableInterface (line 771) | int EnableInterface(int Socket, const char* Name)
function ExportToSocket (line 810) | int ExportToSocket(const char* Source, int Socket, int ErrorSocket, unsi...
function GetLunDeviceName (line 904) | int FormatDevice(unsigned int Lun)
function GetLunDevicePath (line 993) | std::string GetLunDevicePath(unsigned int Lun)
function GetUserCpuTime (line 1060) | long long int GetUserCpuTime(void)
type sysinfo (line 1125) | struct sysinfo
function ImportFromSocket (line 1131) | int ImportFromSocket(const char* Destination, int Socket, int ErrorSocke...
function StartDebugShell (line 1185) | void StartDebugShell()
function StartDhcpClient (line 1228) | int StartDhcpClient(int DhcpTimeout)
function StartGuestNetworkService (line 1273) | int StartGuestNetworkService(int GnsFd, wil::unique_fd&& DnsTunnelingFd,...
function StartPortTracker (line 1330) | void StartPortTracker(LX_MINI_INIT_PORT_TRACKER_TYPE Type)
function Initialize (line 1421) | int Initialize(const char* Hostname)
function InitializeLogging (line 1575) | int InitializeLogging(bool SetStderr, wil::LogFunction* ExceptionCallbac...
function InjectEntropy (line 1640) | void InjectEntropy(gsl::span<gsl::byte> EntropyBuffer)
function LaunchInit (line 1679) | void LaunchInit(
function LaunchSystemDistro (line 1926) | void LaunchSystemDistro(
function ListInitChildProcesses (line 1999) | std::set<pid_t> ListInitChildProcesses()
function ListScsiDisks (line 2013) | std::vector<unsigned int> ListScsiDisks()
function LogException (line 2033) | void LogException(const char* Message, const char* Description) noexcept
function PostProcessImportedDistribution (line 2603) | void PostProcessImportedDistribution(wsl::shared::MessageWriter<LX_MINI_...
function ProcessImportExportMessage (line 2715) | void ProcessImportExportMessage(gsl::span<gsl::byte> Buffer, wsl::shared...
function ProcessMountFolderMessage (line 2811) | int ProcessMountFolderMessage(wsl::shared::SocketChannel& Channel, gsl::...
function ProcessMountMessage (line 2851) | int ProcessMountMessage(gsl::span<gsl::byte> Buffer)
function ProcessWaitForPmemDeviceMessage (line 3041) | int ProcessWaitForPmemDeviceMessage(PLX_MINI_INIT_WAIT_FOR_PMEM_DEVICE_M...
function SetCloseOnExec (line 3673) | int SetCloseOnExec(int Fd, bool Enable)
type pollfd (line 3930) | struct pollfd
type signalfd_siginfo (line 3932) | struct signalfd_siginfo
FILE: src/linux/init/plan9.cpp
function LogPlan9Exception (line 24) | void LogPlan9Exception(const char* message, const char* exceptionDescrip...
function TranslatePath (line 33) | std::string TranslatePath(char* windowsPath)
function CreateUnixServerSocket (line 42) | wil::unique_fd CreateUnixServerSocket(const char* path)
function EnableLogging (line 97) | wil::unique_fd EnableLogging(const char* logFile, int logLevel, bool tru...
function StopPlan9Server (line 122) | bool StopPlan9Server(p9fs::IPlan9FileSystem& fileSystem, bool force)
function RunPlan9Server (line 173) | void RunPlan9Server(const char* socketPath, const char* logFile, int log...
function StartPlan9Server (line 218) | std::pair<unsigned int, wsl::shared::SocketChannel> StartPlan9Server(con...
FILE: src/linux/init/telemetry.cpp
function GetProcessInformation (line 64) | std::pair<std::string, bool> GetProcessInformation(int pid)
function StartTelemetryAgent (line 127) | unsigned int StartTelemetryAgent()
FILE: src/linux/init/timezone.cpp
function UpdateTimezone (line 112) | void UpdateTimezone(gsl::span<gsl::byte> Buffer, const wsl::linux::WslDi...
FILE: src/linux/init/util.cpp
type wil (line 60) | namespace wil {
function UtilAcceptVsock (line 201) | int UtilAcceptVsock(int SocketFd, sockaddr_vm SocketAddress, int Timeout)
function UtilBindVsockAnyPort (line 278) | int UtilBindVsockAnyPort(struct sockaddr_vm* SocketAddress, int Type)
function UtilCanonicalisePathSeparator (line 349) | size_t UtilCanonicalisePathSeparator(char* Path, char Separator)
function UtilCanonicalisePathSeparator (line 411) | void UtilCanonicalisePathSeparator(std::string& Path, char Separator)
function UtilConnectUnix (line 435) | wil::unique_fd UtilConnectToInteropServer(std::optional<pid_t> Pid)
function UtilConnectVsock (line 541) | wil::unique_fd UtilConnectVsock(unsigned int Port, bool CloseOnExec, std...
function UtilCreateProcessAndWait (line 616) | int UtilCreateProcessAndWait(const char* const File, const char* const A...
function UtilExecCommandLine (line 727) | int UtilExecCommandLine(const char* CommandLine, std::string* Output, in...
function UtilFindMount (line 808) | std::string UtilFindMount(const char* MountInfoFile, const char* Path, b...
function UtilGetEnv (line 999) | std::optional<std::string> UtilGetEnv(const char* Name, char* Environment)
function UtilGetEnvironmentVariable (line 1059) | std::string UtilGetEnvironmentVariable(const char* Name)
function UtilGetFeatureFlags (line 1123) | int UtilGetFeatureFlags()
function UtilGetNetworkingMode (line 1190) | void UtilSetFeatureFlags(int FeatureFlags, bool UpdateEnv)
function pid_t (line 1266) | pid_t UtilGetPpid(pid_t Pid)
function UtilGetVmId (line 1321) | std::string UtilGetVmId(void)
function UtilInitGroups (line 1355) | void UtilInitGroups(const char* User, gid_t Gid)
function UtilInitializeMessageBuffer (line 1388) | void UtilInitializeMessageBuffer(std::vector<gsl::byte>& Buffer)
function UtilIsAbsoluteWindowsPath (line 1413) | bool UtilIsAbsoluteWindowsPath(const char* Path)
function UtilIsPathPrefix (line 1441) | size_t UtilIsPathPrefix(const char* Path, const char* Prefix, bool WinPath)
function UtilIsUtilityVm (line 1502) | bool UtilIsUtilityVm(void)
function UtilListenVsockAnyPort (line 1550) | int UtilListenVsockAnyPort(struct sockaddr_vm* Address, int Backlog, boo...
function UtilMkdir (line 1603) | int UtilMkdir(const char* Path, mode_t Mode)
function UtilMkdirPath (line 1633) | int UtilMkdirPath(const char* Path, mode_t Mode, bool SkipLast)
function UtilMount (line 1692) | int UtilMount(const char* Source, const char* Target, const char* Type, ...
function UtilMountOverlayFs (line 1783) | int UtilMountOverlayFs(const char* Target, const char* Lower, unsigned l...
function UtilSaveSignalHandlers (line 2581) | int UtilSaveSignalHandlers(struct sigaction* SavedSignalActions)
function UtilSetSignalHandlers (line 2623) | int UtilSetSignalHandlers(struct sigaction* SavedSignalActions, bool Ign...
function UtilSetThreadName (line 2676) | void UtilSetThreadName(const char* Name)
function UtilSocketShutdown (line 2686) | void UtilSocketShutdown(int Fd, int How)
function UtilSizeTAdd (line 2713) | bool UtilSizeTAdd(size_t Left, size_t Right, size_t* Out)
function UtilStringNextToken (line 2750) | std::string_view UtilStringNextToken(std::string_view& View, std::string...
function UtilStringNextToken (line 2791) | std::string_view UtilStringNextToken(std::string_view& View, char Separa...
function UtilTranslatePathList (line 2831) | std::optional<std::string> UtilTranslatePathList(char* PathList, bool Is...
function UtilWinPathTranslate (line 2923) | std::string UtilWinPathTranslate(const char* Path, bool Reverse)
function UtilWinPathTranslateInternal (line 3044) | std::string UtilWinPathTranslateInternal(const char* Path, bool Reverse)
function UtilWriteBuffer (line 3145) | ssize_t UtilWriteBuffer(int Fd, gsl::span<const gsl::byte> Buffer)
function UtilWriteBuffer (line 3169) | ssize_t UtilWriteBuffer(int Fd, const void* Buffer, size_t BufferSize)
function UtilWriteStringView (line 3218) | ssize_t UtilWriteStringView(int Fd, std::string_view StringView)
function UtilReadFileContentW (line 3242) | std::wstring UtilReadFileContentW(std::string_view path)
function UtilReadFileContent (line 3251) | std::string UtilReadFileContent(std::string_view path)
function UtilWinAfToLinuxAf (line 3260) | uint16_t UtilWinAfToLinuxAf(uint16_t WinAddressFamily)
function WriteToFile (line 3277) | int WriteToFile(const char* Path, const char* Content, int permissions)
function ProcessCreateProcessMessage (line 3320) | int ProcessCreateProcessMessage(wsl::shared::SocketChannel& channel, gsl...
FILE: src/linux/init/util.h
function namespace (line 36) | namespace wsl::shared {
function namespace (line 40) | namespace wsl::linux {
function c_defaultRetryPeriod (line 83) | constexpr auto c_defaultRetryPeriod = std::chrono::milliseconds{10};
type sockaddr_vm (line 246) | struct sockaddr_vm
type sigaction (line 282) | struct sigaction
type sigaction (line 284) | struct sigaction
FILE: src/linux/init/waitablevalue.h
function T (line 40) | T get()
FILE: src/linux/init/wslinfo.cpp
type WslInfoMode (line 28) | enum class WslInfoMode
function WslInfoEntry (line 36) | int WslInfoEntry(int Argc, char* Argv[])
FILE: src/linux/init/wslpath.cpp
function AbsolutePath (line 44) | std::string AbsolutePath(char* Path, char* Cwd, size_t CwdSize, bool* Re...
function AbsoluteWindowsPath (line 105) | std::string AbsoluteWindowsPath(char* RelativePath, const char* Cwd)
function CollapsePath (line 159) | int CollapsePath(char* Path, char Separator)
function Die (line 230) | void Die(const char* Argv0, int Error, bool PrintUsage, const char* Mess...
function DosToCanonicalPath (line 287) | std::string DosToCanonicalPath(char* Path, char* UnixCwd, size_t UnixCwd...
function WslPathEntry (line 407) | int WslPathEntry(int Argc, char* Argv[])
function WslPathTranslate (line 501) | std::string WslPathTranslate(char* Path, int Flags, char Mode)
FILE: src/linux/mountutil/mountflags.cpp
type ParseFlags (line 19) | enum class ParseFlags
type MountFlag (line 32) | struct MountFlag
function MountFlag (line 86) | const MountFlag* FindOption(std::string_view option)
function NextToken (line 116) | std::string_view NextToken(std::string_view& view, char separator)
type mountutil (line 136) | namespace mountutil {
function ParsedOptions (line 138) | ParsedOptions MountParseFlags(std::string_view options)
function MountFilesystem (line 178) | int MountFilesystem(const char* source, const char* target, const char...
FILE: src/linux/mountutil/mountutil.c
type MOUNT_FIELD (line 20) | typedef enum _MOUNT_FIELD
function MountEnumCreate (line 45) | int MountEnumCreate(PMOUNT_ENUM mountEnum)
function MountEnumCreateEx (line 51) | int MountEnumCreateEx(PMOUNT_ENUM mountEnum, const char* mountInfoFile)
function MountEnumFree (line 70) | void MountEnumFree(PMOUNT_ENUM mountEnum)
function MountEnumNext (line 84) | int MountEnumNext(PMOUNT_ENUM mountEnum)
function MountFieldUnescape (line 112) | void MountFieldUnescape(char* field)
function MountFieldUnescapeOctal (line 143) | bool MountFieldUnescapeOctal(const char* string, char* unescaped)
function MountParseDevice (line 185) | int MountParseDevice(char* field, dev_t* device)
function MountParseMountInfoLine (line 210) | int MountParseMountInfoLine(char* line, PMOUNT_ENTRY entry)
FILE: src/linux/mountutil/mountutil.h
type MOUNT_ENTRY (line 8) | typedef struct _MOUNT_ENTRY
type MOUNT_ENUM (line 22) | typedef struct _MOUNT_ENUM
FILE: src/linux/mountutil/mountutilcpp.h
function namespace (line 8) | namespace mountutil {
type ParsedOptions (line 73) | struct ParsedOptions
FILE: src/linux/netlinkutil/Address.cpp
function Address (line 44) | Address Address::FromBytes(int family, int prefixLength, const void* ptr)
function Address (line 63) | Address Address::FromPrefixString(int family, const std::string& prefix)
function Address (line 83) | Address Address::FromBinary(int family, int prefixLength, const void* data)
FILE: src/linux/netlinkutil/Forwarder.h
function class (line 12) | class IForwarder
FILE: src/linux/netlinkutil/Forwarder.hxx
type pollfd (line 30) | struct pollfd
FILE: src/linux/netlinkutil/Interface.cpp
type AddressMessage (line 31) | struct AddressMessage
type AddressMessageWithBroadcast (line 41) | struct AddressMessageWithBroadcast : AddressMessage<TAddr>
type Request (line 159) | struct Request
type ifinfomsg (line 430) | struct ifinfomsg
type ifinfomsg (line 471) | struct ifinfomsg
type LinkInfo (line 213) | struct LinkInfo
type Request (line 218) | struct Request
type ifinfomsg (line 430) | struct ifinfomsg
type ifinfomsg (line 471) | struct ifinfomsg
type Message (line 253) | struct Message
type Message (line 274) | struct Message
type Message (line 293) | struct Message
type ActiveChildInfo (line 313) | struct ActiveChildInfo
type LinkInfo (line 318) | struct LinkInfo
type Request (line 324) | struct Request
type ifinfomsg (line 430) | struct ifinfomsg
type ifinfomsg (line 471) | struct ifinfomsg
type Message (line 384) | struct Message
type Message (line 401) | struct Message
type Request (line 428) | struct Request
type ifinfomsg (line 430) | struct ifinfomsg
type ifinfomsg (line 471) | struct ifinfomsg
type Request (line 449) | struct Request
type ifinfomsg (line 430) | struct ifinfomsg
type ifinfomsg (line 471) | struct ifinfomsg
type Request (line 469) | struct Request
type ifinfomsg (line 430) | struct ifinfomsg
type ifinfomsg (line 471) | struct ifinfomsg
type Message (line 515) | struct Message
function MacAddress (line 532) | MacAddress Interface::GetMacAddress()
function InterfaceConfiguration (line 575) | InterfaceConfiguration Interface::Ipv6Configuration()
function InterfaceConfiguration (line 580) | InterfaceConfiguration Interface::Ipv4Configuration()
function InterfaceConfiguration (line 585) | InterfaceConfiguration Interface::ListAddressesImpl(int af)
function Interface (line 686) | Interface Interface::Open(const std::string& name)
type Message (line 695) | struct Message
type TcOptions (line 720) | struct TcOptions
type Message (line 727) | struct Message
FILE: src/linux/netlinkutil/Interface.h
function class (line 13) | class Interface
FILE: src/linux/netlinkutil/InterfaceConfiguration.h
type InterfaceConfiguration (line 9) | struct InterfaceConfiguration
FILE: src/linux/netlinkutil/IpNeighborManager.cpp
type _arp_packet_header (line 21) | struct _arp_packet_header
function ComposeArpRequest (line 42) | void ComposeArpRequest(T& ArpRequest, uint16_t ProtocolType, const Neigh...
function ParseArpReply (line 60) | bool ParseArpReply(const T& ArpReply, uint16_t ProtocolType, const Neigh...
type pollfd (line 135) | struct pollfd
type Message (line 240) | struct Message
FILE: src/linux/netlinkutil/IpNeighborManager.h
function class (line 9) | class IpNeighborManager
FILE: src/linux/netlinkutil/IpRuleManager.cpp
type LoopbackInterfaceAttribute (line 8) | struct LoopbackInterfaceAttribute
type Message (line 70) | struct Message
type Message (line 171) | struct Message : RuleMessage
type Message (line 206) | struct Message : RuleMessage
type Message (line 238) | struct Message : RuleMessage
type Message (line 264) | struct Message
FILE: src/linux/netlinkutil/IpRuleManager.h
type RuleMessage (line 9) | struct RuleMessage
function class (line 21) | class IpRuleManager
FILE: src/linux/netlinkutil/Neighbor.h
type Neighbor (line 6) | struct Neighbor
FILE: src/linux/netlinkutil/NetLinkStrings.h
function std (line 7) | inline std::string NetLinkFormatFlagsToString(int flags)
FILE: src/linux/netlinkutil/NetlinkChannel.h
function class (line 9) | class NetlinkChannel
FILE: src/linux/netlinkutil/NetlinkChannel.hxx
function NetlinkChannel (line 31) | inline const NetlinkChannel& NetlinkChannel::operator=(NetlinkChannel&& ...
function NetlinkChannel (line 46) | inline NetlinkChannel NetlinkChannel::FromFd(int fd)
function NetlinkTransaction (line 56) | inline NetlinkTransaction NetlinkChannel::CreateTransactionImpl(std::vec...
function NetlinkTransaction (line 72) | inline NetlinkTransaction NetlinkChannel::CreateTransaction(int type, in...
function NetlinkTransaction (line 79) | NetlinkTransaction NetlinkChannel::CreateTransaction(const T& message, i...
function NetlinkTransaction (line 84) | inline NetlinkTransaction NetlinkChannel::CreateTransaction(const void* ...
function NetlinkResponse (line 103) | inline NetlinkResponse NetlinkChannel::ReceiveNetlinkResponse()
FILE: src/linux/netlinkutil/NetlinkError.h
function class (line 6) | class NetlinkError : public RuntimeErrorWithSourceLocation
FILE: src/linux/netlinkutil/NetlinkMessage.hxx
function TMessage (line 18) | const TMessage* NetlinkMessage<TMessage>::Payload() const
function rtattr (line 36) | inline const rtattr* NetlinkMessage<rtmsg>::FirstAttribute() const
function rtattr (line 42) | inline const rtattr* NetlinkMessage<ifaddrmsg>::FirstAttribute() const
function rtattr (line 48) | const rtattr* NetlinkMessage<TAttribute>::FirstAttribute() const
function nlmsghdr (line 103) | const nlmsghdr* NetlinkMessage<TMessage>::Header() const
FILE: src/linux/netlinkutil/NetlinkParseException.h
function class (line 7) | class NetlinkParseException : public RuntimeErrorWithSourceLocation
FILE: src/linux/netlinkutil/NetlinkResponse.cpp
function __u32 (line 30) | __u32 NetlinkResponse::Sequence() const
FILE: src/linux/netlinkutil/NetlinkTransaction.h
function class (line 8) | class NetlinkTransaction
FILE: src/linux/netlinkutil/NetlinkTransactionError.h
function class (line 7) | class NetlinkTransactionError : public RuntimeErrorWithSourceLocation
FILE: src/linux/netlinkutil/Operation.h
type Operation (line 4) | enum Operation
FILE: src/linux/netlinkutil/Packet.h
function class (line 7) | class Packet
FILE: src/linux/netlinkutil/Protocol.h
type Protocol (line 4) | enum Protocol
FILE: src/linux/netlinkutil/Route.h
type Route (line 7) | struct Route
FILE: src/linux/netlinkutil/RoutingTable.cpp
type Message (line 187) | struct Message : RouteMessage
type Message (line 241) | struct Message : RouteMessage
type Message (line 267) | struct Message : RouteMessage
type Message (line 298) | struct Message : RouteMessage
FILE: src/linux/netlinkutil/RoutingTable.h
type RouteMessage (line 9) | struct RouteMessage
function class (line 22) | class RoutingTable
FILE: src/linux/netlinkutil/Rule.h
type Rule (line 12) | struct Rule
FILE: src/linux/netlinkutil/RuntimeErrorWithSourceLocation.h
function class (line 8) | class RuntimeErrorWithSourceLocation : public std::runtime_error
FILE: src/linux/netlinkutil/Syscall.hxx
type detail (line 32) | namespace detail {
function ArgumentToString (line 40) | inline std::string ArgumentToString(const std::nullptr_t&)
function ArgumentToString (line 46) | std::string ArgumentToString(T* arg)
function ArgumentToString (line 62) | std::string ArgumentToString(T arg)
function PrettyPrintArguments (line 67) | inline void PrettyPrintArguments(std::ostream&)
function PrettyPrintArguments (line 72) | void PrettyPrintArguments(std::ostream& out, T first)
function PrettyPrintArguments (line 78) | void PrettyPrintArguments(std::ostream& out, T first, Args... args)
function _Syscall (line 86) | typename std::invoke_result<Routine, Args...>::type _Syscall(const std::...
function _SyscallInterruptable (line 106) | typename std::invoke_result<Routine, Args...>::type _SyscallInterruptabl...
FILE: src/linux/netlinkutil/SyscallError.h
function class (line 6) | class SyscallError : public RuntimeErrorWithSourceLocation
FILE: src/linux/netlinkutil/Utils.cpp
function Address (line 33) | Address utils::ComputeBroadcastAddress(const Address& address)
FILE: src/linux/netlinkutil/Utils.h
function namespace (line 13) | namespace utils {
FILE: src/linux/netlinkutil/Utils.hxx
type ifa_cacheinfo (line 41) | struct ifa_cacheinfo
FILE: src/linux/netlinkutil/address.h
type class (line 15) | enum class
type class (line 24) | enum class
function SetIsPrefixRouteAutogenerationDisabled (line 45) | void SetIsPrefixRouteAutogenerationDisabled(bool disable) noexcept
function Address (line 60) | Address FromBytes(int family, int prefixLength, const T& address)
FILE: src/linux/plan9/expected.h
function Value (line 18) | Unexpected(const E& value) : Value{value}
function namespace (line 25) | namespace details {
function P9_EXPECTED_STD (line 45) | P9_EXPECTED_STD forward<Args>(args)...}
function HasValue (line 55) | constexpr TrivialExpectedStorage(TrivialExpectedStorage&& other) : HasVa...
function P9_EXPECTED_STD (line 126) | P9_EXPECTED_STD forward<Args>(args)...}
function HasValue (line 131) | constexpr NonTrivialExpectedStorage(const Unexpected<E>& error) : HasVal...
function m_storage (line 237) | constexpr BasicExpected(T&& value) : m_storage{P9_EXPECTED_STD in_place,...
function m_storage (line 242) | constexpr BasicExpected(const Unexpected<E>& error) : m_storage{error}
function m_storage (line 247) | constexpr BasicExpected(Unexpected<E>&& error) : m_storage{P9_EXPECTED_S...
function P9_EXPECTED_STD (line 252) | P9_EXPECTED_STD move(other.m_storage)}
function T (line 296) | const T* operator->() const
FILE: src/linux/plan9/p9await.h
function namespace (line 7) | namespace p9fs {
function class (line 74) | class AsyncTask
function class (line 291) | class TaskPromise
function await_suspend (line 455) | bool await_suspend(std::coroutine_handle<> awaiter) noexcept
function await_resume (line 461) | static void await_resume() noexcept
function m_Count (line 473) | AsyncSemaphore(uint64_t initialCount) : m_Count(initialCount)
function AsyncSemaphoreTask (line 479) | AsyncSemaphoreTask Acquire(uint64_t count) noexcept
function AsyncSemaphoreTask (line 541) | AsyncSemaphoreTask* m_Waiter{}
function class (line 544) | class AsyncEvent
function class (line 638) | class AsyncLock
function class (line 674) | class AsyncLockTask
function AsyncLockTask (line 740) | AsyncLockTask Lock() noexcept
function TryLock (line 745) | bool TryLock() noexcept
function Unlock (line 751) | void Unlock() noexcept
function class (line 805) | class ICancellable
function class (line 814) | class CancelToken
function Cancelled (line 886) | bool Cancelled()
function RemoveChild (line 913) | void RemoveChild(CancelToken& child)
FILE: src/linux/plan9/p9commonutil.h
function namespace (line 4) | namespace p9fs::util {
function QidType (line 52) | inline QidType DirEntryTypeToQidType(int type)
function LX_MODE_T (line 70) | inline LX_MODE_T DirEntryTypeToMode(int type)
function class (line 90) | class iterator
function reference (line 147) | reference operator*()
function Insert (line 179) | void Insert(T& value)
function Remove (line 187) | void Remove(T& value)
function Contains (line 195) | bool Contains(const T& value)
function iterator (line 209) | iterator begin()
FILE: src/linux/plan9/p9data.h
function namespace (line 17) | namespace p9fs {
FILE: src/linux/plan9/p9defs.h
type class (line 12) | enum class
type class (line 94) | enum class
type Qid (line 111) | struct Qid
type StatFsResult (line 119) | struct StatFsResult
type StatResult (line 133) | struct StatResult
type class (line 198) | enum class
type class (line 225) | enum class
type class (line 233) | enum class
type class (line 241) | enum class
type class (line 254) | enum class
function WOpenStatus (line 265) | enum class WOpenStatus : UINT8
FILE: src/linux/plan9/p9errors.h
function namespace (line 8) | namespace p9fs {
FILE: src/linux/plan9/p9fid.cpp
type p9fs (line 5) | namespace p9fs {
function LX_INT (line 17) | LX_INT Fid::SetAttr(UINT32, const StatResult&)
function LX_INT (line 37) | LX_INT Fid::ReadDir(UINT64, SpanWriter&, bool)
function LX_INT (line 52) | LX_INT Fid::UnlinkAt(std::string_view, UINT32)
function LX_INT (line 57) | LX_INT Fid::Remove()
function LX_INT (line 62) | LX_INT Fid::RenameAt(std::string_view, Fid&, std::string_view)
function LX_INT (line 67) | LX_INT Fid::Rename(Fid&, std::string_view)
function LX_INT (line 82) | LX_INT Fid::Link(std::string_view, Fid&)
function LX_INT (line 92) | LX_INT Fid::Fsync()
function LX_INT (line 122) | LX_INT Fid::Clunk()
function LX_INT (line 129) | LX_INT Fid::Access(AccessFlags)
function Qid (line 149) | Qid Fid::GetQid() const
FILE: src/linux/plan9/p9fid.h
function namespace (line 10) | namespace p9fs {
FILE: src/linux/plan9/p9file.cpp
type p9fs (line 14) | namespace p9fs {
type OpenFlagMapping (line 20) | struct OpenFlagMapping
function CreateFile (line 45) | Expected<std::tuple<std::shared_ptr<Fid>, Qid>> CreateFile(std::shared...
function QidType (line 58) | QidType ModeToQidType(mode_t mode)
function Qid (line 74) | Qid StatToQid(const struct stat& st)
function GetFileQidByPath (line 81) | Expected<Qid> GetFileQidByPath(int fd, const std::string& path)
function AppendPath (line 95) | void AppendPath(std::string& Base, std::string_view Name)
function OpenFlagsToLinuxFlags (line 108) | int OpenFlagsToLinuxFlags(OpenFlags flags)
type stat (line 128) | struct stat
type stat (line 130) | struct stat
function LX_INT (line 158) | LX_INT File::ValidateExists()
type stat (line 280) | struct stat
function LX_INT (line 357) | LX_INT File::SetAttr(UINT32 valid, const StatResult& stat)
type stat (line 527) | struct stat
function LX_INT (line 560) | LX_INT File::ReadDir(UINT64 offset, SpanWriter& writer, bool includeAt...
function LX_INT (line 691) | LX_INT File::UnlinkAt(std::string_view name, UINT32 flags)
function LX_INT (line 714) | LX_INT File::Remove()
function LX_INT (line 763) | LX_INT File::RenameAt(std::string_view oldName, Fid& newParent, std::s...
function LX_INT (line 789) | LX_INT File::Rename(Fid& newParent, std::string_view newName)
function LX_INT (line 863) | LX_INT File::Link(std::string_view newName, Fid& target)
function LX_INT (line 913) | LX_INT File::Fsync()
type statfs (line 939) | struct statfs
function LX_INT (line 1038) | LX_INT File::Access(AccessFlags flags)
function Qid (line 1142) | Qid File::GetQid() const
FILE: src/linux/plan9/p9file.h
type Share (line 12) | struct Share
type Root (line 17) | struct Root
function passwd (line 34) | passwd pwd{}
function LX_INT (line 88) | LX_INT Remove() override;
function dev_t (line 132) | dev_t m_Device{}
FILE: src/linux/plan9/p9fs.cpp
type p9fs (line 11) | namespace p9fs {
class ShareList (line 15) | class ShareList final : public IShareList
class FileSystem (line 116) | class FileSystem final : public IPlan9FileSystem
method FileSystem (line 122) | FileSystem(int socket)
method AddShare (line 144) | void AddShare(const std::string& name, int rootFd) override
method Pause (line 150) | void Pause() override
method Resume (line 175) | void Resume() override
method Teardown (line 182) | void Teardown() override
method HasConnections (line 187) | bool HasConnections() const noexcept override
method AsyncTask (line 194) | AsyncTask Run() noexcept
function CreateFileSystem (line 206) | std::unique_ptr<IPlan9FileSystem> CreateFileSystem(int socket)
FILE: src/linux/plan9/p9fs.h
function namespace (line 4) | namespace p9fs {
FILE: src/linux/plan9/p9handler.cpp
type p9fs (line 15) | namespace p9fs {
class Handler (line 23) | class Handler final : public IHandler
method Handler (line 26) | Handler(ISocket& s, IShareList& shareList) noexcept :
method Handler (line 31) | Handler(IShareList& shareList, bool allowRenegotiate) noexcept :
class MessageResponse (line 38) | class MessageResponse final
method MessageResponse (line 42) | MessageResponse(gsl::span<gsl::byte> initialBuffer, bool allowResi...
method EnsureSize (line 52) | void EnsureSize(MessageType message, UINT32 extraSize, UINT32 maxS...
method MessageResponse (line 88) | MessageResponse(const MessageResponse&) = delete;
method MessageResponse (line 89) | MessageResponse& operator=(const MessageResponse&) = delete;
type RequestInfo (line 97) | struct RequestInfo
method RequestInfo (line 99) | RequestInfo(UINT16 tag) : Tag{tag}
method RequestInfo (line 104) | RequestInfo(const RequestInfo&) = delete;
method RequestInfo (line 105) | RequestInfo& operator=(const RequestInfo&) = delete;
method RequestInfo (line 106) | RequestInfo(RequestInfo&&) = delete;
method RequestInfo (line 107) | RequestInfo& operator=(RequestInfo&&) = delete;
type RequestList (line 115) | struct RequestList
class RequestTracker (line 121) | class RequestTracker
method RequestTracker (line 124) | RequestTracker(const std::shared_ptr<RequestList>& requests, UINT1...
method RequestTracker (line 132) | RequestTracker(RequestTracker&& other) = default;
method RequestInfo (line 166) | RequestInfo& Request() const
method LogMessage (line 176) | void LogMessage([[maybe_unused]] gsl::span<const gsl::byte> message)
method HandleMessage (line 181) | Task<LX_INT> HandleMessage(MessageType messageType, SpanReader& read...
method LX_INT (line 292) | LX_INT HandleNotSupported(PCSTR)
method LX_INT (line 297) | LX_INT HandleVersion(SpanReader& reader, MessageResponse& response)
method LX_INT (line 342) | LX_INT HandleAttach(SpanReader& reader, MessageResponse& response)
method LX_INT (line 371) | LX_INT HandleStatFs(SpanReader& reader, MessageResponse& response)
method LX_INT (line 397) | LX_INT HandleGetAttr(SpanReader& reader, MessageResponse& response)
method LX_INT (line 422) | LX_INT HandleWalk(SpanReader& reader, MessageResponse& response)
method LX_INT (line 454) | LX_INT HandleClunk(SpanReader& reader)
method LX_INT (line 476) | LX_INT HandleLOpen(SpanReader& reader, MessageResponse& response)
method LX_INT (line 494) | LX_INT HandleLCreate(SpanReader& reader, MessageResponse& response)
method LX_INT (line 515) | LX_INT HandleSymLink(SpanReader& reader, MessageResponse& response)
method LX_INT (line 534) | LX_INT HandleMkNod(SpanReader& reader, MessageResponse& response)
method LX_INT (line 555) | LX_INT HandleReadLink(SpanReader& reader, MessageResponse& response)
method LX_INT (line 579) | LX_INT HandleReadDir(SpanReader& reader, MessageResponse& response, ...
method LX_INT (line 606) | LX_INT HandleFsync(SpanReader& reader)
method LX_INT (line 614) | LX_INT HandleLink(SpanReader& reader)
method HandleRead (line 624) | Task<LX_INT> HandleRead(SpanReader& reader, MessageResponse& response)
method HandleWrite (line 643) | Task<LX_INT> HandleWrite(SpanReader& reader, MessageResponse& response)
method LX_INT (line 662) | LX_INT HandleUnlinkAt(SpanReader& reader)
method LX_INT (line 672) | LX_INT HandleRemove(SpanReader& reader)
method LX_INT (line 680) | LX_INT HandleRenameAt(SpanReader& reader)
method LX_INT (line 691) | LX_INT HandleRename(SpanReader& reader)
method LX_INT (line 701) | LX_INT HandleMkDir(SpanReader& reader, MessageResponse& response)
method LX_INT (line 720) | LX_INT HandleSetAttr(SpanReader& reader)
method LX_INT (line 738) | LX_INT HandleLock(SpanReader& reader, MessageResponse& response)
method LX_INT (line 760) | LX_INT HandleGetLock(SpanReader& reader, MessageResponse& response)
method LX_INT (line 786) | LX_INT HandleXattrWalk(SpanReader& reader, MessageResponse& response)
method LX_INT (line 811) | LX_INT HandleXattrCreate(SpanReader& reader)
method LX_INT (line 836) | LX_INT HandleAccess(SpanReader& reader)
method LX_INT (line 867) | LX_INT HandleWOpen(SpanReader& reader, MessageResponse& response)
method LX_INT (line 1068) | LX_INT WriteWOpenReply(WOpenStatus status, UINT16 walked, Fid& fid, ...
method HandleFlush (line 1119) | Task<LX_INT> HandleFlush(SpanReader& reader)
method FillData (line 1163) | Task<bool> FillData(UINT32 requiredBytes, CancelToken& token)
method NextMessage (line 1188) | Task<gsl::span<gsl::byte>> NextMessage(CancelToken& token)
method ProcessMessage (line 1215) | Task<void> ProcessMessage(gsl::span<const gsl::byte> message, Cancel...
method ProcessMessage (line 1238) | Task<void> ProcessMessage(SpanReader& reader, MessageResponse& respo...
method ProcessMessageAsync (line 1269) | void ProcessMessageAsync(std::vector<gsl::byte>&& message, size_t re...
method Run (line 1312) | Task<void> Run(CancelToken& parentToken) noexcept
method LookupFid (line 1374) | std::shared_ptr<Fid> LookupFid(UINT32 fid)
method LookupFidPair (line 1382) | std::pair<std::shared_ptr<Fid>, std::shared_ptr<Fid>> LookupFidPair(...
method EmplaceFid (line 1392) | void EmplaceFid(UINT32 fid, std::shared_ptr<Fid> item)
method UINT32 (line 1400) | static UINT32 IoUnit()
function AsyncTask (line 1423) | AsyncTask HandleConnections(ISocket& listen, IShareList& shareList, Ca...
FILE: src/linux/plan9/p9handler.h
function namespace (line 7) | namespace p9fs {
FILE: src/linux/plan9/p9ihandler.h
function namespace (line 4) | namespace p9fs {
FILE: src/linux/plan9/p9io.cpp
type p9fs (line 16) | namespace p9fs {
function RecvAsync (line 222) | Task<size_t> RecvAsync(CoroutineEpollIssuer& socket, gsl::span<gsl::by...
function SendAsync (line 236) | Task<size_t> SendAsync(CoroutineEpollIssuer& socket, gsl::span<const g...
function AcceptAsync (line 250) | Task<int> AcceptAsync(CoroutineEpollIssuer& listen, CancelToken& token)
function ReadAsync (line 264) | Task<IoResult> ReadAsync(CoroutineIoIssuer& file, std::uint64_t offset...
function WriteAsync (line 280) | Task<IoResult> WriteAsync(CoroutineIoIssuer& file, std::uint64_t offse...
FILE: src/linux/plan9/p9io.h
function namespace (line 7) | namespace p9fs {
function m_FileDescriptor (line 279) | int m_FileDescriptor{-1};
FILE: src/linux/plan9/p9log.h
function namespace (line 17) | namespace p9fs {
FILE: src/linux/plan9/p9lx.cpp
type p9fs (line 6) | namespace p9fs {
function CreateWorkItem (line 61) | std::unique_ptr<IWorkItem> CreateWorkItem(std::function<void()> callback)
FILE: src/linux/plan9/p9lx.h
function namespace (line 7) | namespace p9fs {
FILE: src/linux/plan9/p9platform.h
function namespace (line 6) | namespace p9fs {
FILE: src/linux/plan9/p9protohelpers.h
function namespace (line 6) | namespace p9fs {
FILE: src/linux/plan9/p9readdir.cpp
type p9fs (line 5) | namespace p9fs {
type dirent (line 23) | struct dirent
FILE: src/linux/plan9/p9readdir.h
function namespace (line 4) | namespace p9fs {
FILE: src/linux/plan9/p9scheduler.cpp
type p9fs (line 6) | namespace p9fs {
FILE: src/linux/plan9/p9scheduler.h
function namespace (line 4) | namespace p9fs {
FILE: src/linux/plan9/p9tracelogging.cpp
type p9fs (line 15) | namespace p9fs {
function ConvertNumber (line 23) | std::string_view ConvertNumber(char* buffer, int bufferSize, UINT64 va...
FILE: src/linux/plan9/p9tracelogging.h
function namespace (line 16) | namespace p9fs {
FILE: src/linux/plan9/p9tracelogginghelper.h
function namespace (line 4) | namespace p9fs {
FILE: src/linux/plan9/p9util.cpp
type cap_user_header_t (line 13) | struct cap_user_header_t
type cap_user_data_t (line 19) | struct cap_user_data_t
function sys_setresuid (line 26) | inline int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid)
function sys_setresgid (line 31) | inline int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid)
function sys_faccessat (line 36) | inline int sys_faccessat(int dirFd, const char* pathName, int mode, int ...
function sys_setgroups (line 41) | inline int sys_setgroups(size_t size, const gid_t* list)
type p9fs::util (line 48) | namespace p9fs::util {
function OpenAt (line 50) | Expected<wil::unique_fd> OpenAt(int dirfd, const std::string& name, in...
function Reopen (line 66) | Expected<wil::unique_fd> Reopen(int fd, int openFlags)
function GetFdPath (line 94) | std::string GetFdPath(int fd)
function LX_INT (line 104) | LX_INT LinuxErrorFromCaughtException()
function LX_INT (line 109) | LX_INT AccessHelper(int fd, const std::string& path, int mode)
function LX_INT (line 132) | LX_INT CheckFOwnerCapability()
function gid_t (line 151) | gid_t GetUserGroupId(uid_t uid)
function gid_t (line 187) | gid_t GetGroupIdByName(const char* name)
FILE: src/linux/plan9/p9util.h
function namespace (line 6) | namespace p9fs::util {
FILE: src/linux/plan9/p9xattr.cpp
type p9fs (line 7) | namespace p9fs {
function LX_INT (line 60) | LX_INT XAttr::Clunk()
FILE: src/linux/plan9/p9xattr.h
function namespace (line 6) | namespace p9fs {
FILE: src/linux/plan9/result_macros.h
type ErrorSite (line 8) | struct ErrorSite
FILE: src/shared/configfile/configfile.cpp
function SetConfig (line 211) | static void SetConfig(std::vector<ConfigKey>& keys, const char* keyName,...
function IsHSpace (line 224) | static bool IsHSpace(wint_t ch)
function ParseConfigFile (line 231) | int ParseConfigFile(std::vector<ConfigKey>& keys, FILE* file, int flags,...
function ParseConfigFile (line 239) | int ParseConfigFile(std::vector<ConfigKey>& keys, FILE* file, int flags,...
FILE: src/shared/configfile/configfile.h
type MemoryString (line 28) | struct MemoryString
function ConfigKeyPresence (line 34) | enum class ConfigKeyPresence
FILE: src/shared/inc/CommandLine.h
function namespace (line 22) | namespace wsl::shared {
function const (line 215) | int operator()(const TChar* input) const
function const (line 238) | int operator()(const TChar* input) const
type NoOp (line 256) | struct NoOp
function class (line 280) | class ArgumentParser
function m_argc (line 499) | int m_argc{}
function m_startIndex (line 511) | int m_startIndex{}
function TChar (line 512) | const TChar* m_name{}
FILE: src/shared/inc/JsonUtils.h
function namespace (line 32) | namespace wsl::shared {
function string (line 82) | string JsonEnumToString(T value)
function namespace (line 91) | namespace nlohmann {
function GUID (line 133) | struct adl_serializer<GUID>
function MacAddress (line 151) | struct adl_serializer<wsl::shared::string::MacAddress>
FILE: src/shared/inc/SocketChannel.h
function namespace (line 28) | namespace wsl::shared {
FILE: src/shared/inc/conncheckshared.h
function namespace (line 39) | namespace wsl::shared::conncheck {
function ConnCheckResult (line 152) | inline ConnCheckResult CheckConnection(const char* hostname, const char*...
FILE: src/shared/inc/defs.h
function namespace (line 37) | namespace wsl::shared {
FILE: src/shared/inc/gslhelpers.h
function namespace (line 19) | namespace gslhelpers {
FILE: src/shared/inc/hns_schema.h
function namespace (line 19) | namespace wsl::shared::hns {
type Version (line 50) | struct Version
function Minor (line 53) | uint32_t Minor{}
function EndpointPolicyType (line 58) | enum class EndpointPolicyType
type class (line 167) | enum class
type class (line 186) | enum class
type DNS (line 209) | struct DNS
type IPAddress (line 219) | struct IPAddress
function OnLinkPrefixLength (line 223) | uint8_t OnLinkPrefixLength{}
function PrefixOrigin (line 224) | uint8_t PrefixOrigin{}
function SuffixOrigin (line 225) | uint8_t SuffixOrigin{}
function PreferredLifetime (line 226) | uint32_t PreferredLifetime{}
function OperationType (line 231) | enum class OperationType
type class (line 284) | enum class
type CreateDeviceRequest (line 303) | struct CreateDeviceRequest
function to_json (line 313) | inline void to_json(nlohmann::json& j, const CreateDeviceRequest& request)
type ModifyGuestDeviceSettingRequest (line 328) | struct ModifyGuestDeviceSettingRequest
type InterfaceNetFilterRequest (line 335) | struct InterfaceNetFilterRequest
function ephemeralPortRangeStart (line 339) | uint16_t ephemeralPortRangeStart{}
function ephemeralPortRangeEnd (line 340) | uint16_t ephemeralPortRangeEnd{}
type MacAddress (line 345) | struct MacAddress
function ModifyRequestType (line 355) | ModifyRequestType RequestType{}
function GuestEndpointResourceType (line 356) | GuestEndpointResourceType ResourceType{}
function T (line 357) | T Settings{}
function void (line 366) | struct ModifyGuestEndpointSettingRequest<void>
function to_json (line 376) | void to_json(nlohmann::json& j, const ModifyGuestEndpointSettingRequest<...
type IpSubnet (line 391) | struct IpSubnet
type Subnet (line 398) | struct Subnet
type HNSNetwork (line 407) | struct HNSNetwork
function InterfaceConstraint (line 417) | InterfaceConstraint InterfaceConstraint{}
type class (line 422) | enum class
type Network (line 437) | struct Network
type NotificationBase (line 449) | struct NotificationBase
function Flags (line 452) | uint32_t Flags{}
type class (line 457) | enum class
type RpcConnectionInformation (line 468) | struct RpcConnectionInformation
function GuestNetworkServiceFlags (line 476) | enum class GuestNetworkServiceFlags
type class (line 495) | enum class
type GuestNetworkServiceStateRequest (line 522) | struct GuestNetworkServiceStateRequest
type GuestNetworkServiceResourceType (line 529) | enum GuestNetworkServiceResourceType
type ModifyGuestNetworkServiceSettingRequest (line 536) | struct ModifyGuestNetworkServiceSettingRequest
function GuestNetworkServiceStateRequest (line 539) | GuestNetworkServiceStateRequest Settings{}
function ModifyRequestType (line 540) | ModifyRequestType RequestType{}
FILE: src/shared/inc/lxfsshares.h
type LXSS_SHARED_DIRECTORY (line 18) | typedef struct _LXSS_SHARED_DIRECTORY
FILE: src/shared/inc/lxinitshared.h
type LX_MESSAGE_TYPE (line 281) | typedef enum _LX_MESSAGE_TYPE
function X (line 374) | X(LxMiniInitMessageAny)
function PrettyPrint (line 473) | inline void PrettyPrint(std::stringstream& Out, LX_MESSAGE_TYPE Value)
type MESSAGE_HEADER (line 478) | struct MESSAGE_HEADER
type LX_INIT_CREATE_SESSION_RESPONSE (line 493) | typedef struct _LX_INIT_CREATE_SESSION_RESPONSE
type LX_INIT_CREATE_SESSION (line 504) | typedef struct _LX_INIT_CREATE_SESSION
type CREATE_PROCESS_SHELL_OPTIONS (line 515) | typedef enum _CREATE_PROCESS_SHELL_OPTIONS
type LX_PROCESS_CRASH (line 562) | typedef struct _LX_PROCESS_CRASH
type LX_INIT_CREATE_PROCESS_COMMON (line 578) | typedef struct _LX_INIT_CREATE_PROCESS_COMMON
type LX_INIT_CREATE_PROCESS_RESPONSE (line 596) | typedef struct _LX_INIT_CREATE_PROCESS_RESPONSE
type LX_INIT_CREATE_PROCESS (line 608) | typedef struct _LX_INIT_CREATE_PROCESS
type LX_INIT_CREATE_NT_PROCESS_COMMON (line 622) | typedef struct _LX_INIT_CREATE_NT_PROCESS_COMMON
type LX_INIT_CREATE_NT_PROCESS (line 641) | typedef struct _LX_INIT_CREATE_NT_PROCESS
type LX_INIT_CREATE_NT_PROCESS_UTILITY_VM (line 655) | typedef struct _LX_INIT_CREATE_NT_PROCESS_UTILITY_VM
type LX_INIT_NETWORK_INFORMATION (line 674) | typedef struct _LX_INIT_NETWORK_INFORMATION
type LX_INIT_CREATE_LOGIN_SESSION (line 686) | typedef struct _LX_INIT_CREATE_LOGIN_SESSION
type LX_INIT_QUERY_ENVIRONMENT_VARIABLE (line 704) | typedef struct _LX_INIT_QUERY_ENVIRONMENT_VARIABLE
type LX_GNS_RESULT (line 714) | typedef struct _LX_GNS_RESULT
type LX_GNS_INTERFACE_CONFIGURATION (line 726) | typedef struct _LX_GNS_INTERFACE_CONFIGURATION
type LX_GNS_NOTIFICATION (line 737) | typedef struct _LX_GNS_NOTIFICATION
type LX_GNS_PORT_ALLOCATION_REQUEST (line 749) | typedef struct _LX_GNS_PORT_ALLOCATION_REQUEST
type LX_GNS_SET_PORT_LISTENER (line 764) | typedef struct _LX_GNS_SET_PORT_LISTENER
type LX_GNS_PORT_LISTENER_RELAY (line 776) | typedef struct _LX_GNS_PORT_LISTENER_RELAY
type LX_GNS_TUN_BRIDGE_REQUEST (line 790) | typedef struct _LX_GNS_TUN_BRIDGE_REQUEST
type LX_GNS_DNS_CLIENT_IDENTIFIER (line 802) | typedef struct _LX_GNS_DNS_CLIENT_IDENTIFIER
type LX_GNS_DNS_TUNNELING_MESSAGE (line 817) | typedef struct _LX_GNS_DNS_TUNNELING_MESSAGE
type LX_GNS_JSON_MESSAGE (line 832) | typedef struct _LX_GNS_JSON_MESSAGE
type LX_INIT_STOP_PLAN9_SERVER (line 845) | typedef struct _LX_INIT_STOP_PLAN9_SERVER
type LX_INIT_FEATURE_FLAGS (line 865) | typedef enum _LX_INIT_FEATURE_FLAGS
type LX_INIT_CONFIGURATION_INFORMATION_RESPONSE (line 877) | typedef struct _LX_INIT_CONFIGURATION_INFORMATION_RESPONSE
type LX_INIT_CONFIGURATION_INFORMATION (line 902) | typedef struct _LX_INIT_CONFIGURATION_INFORMATION
type LX_INIT_TIMEZONE_INFORMATION (line 941) | typedef struct _LX_INIT_TIMEZONE_INFORMATION
type LX_INIT_CREATE_PROCESS_FLAGS (line 958) | typedef enum _LX_INIT_CREATE_PROCESS_FLAGS
type LX_INIT_CREATE_PROCESS_UTILITY_VM (line 970) | typedef struct _LX_INIT_CREATE_PROCESS_UTILITY_VM
type LX_INIT_PROCESS_EXIT_STATUS (line 989) | typedef struct _LX_INIT_PROCESS_EXIT_STATUS
type LX_INIT_WINDOW_SIZE_CHANGED (line 1005) | typedef struct _LX_INIT_WINDOW_SIZE_CHANGED
type LX_INIT_TERMINATE_INSTANCE (line 1022) | typedef struct _LX_INIT_TERMINATE_INSTANCE
type LX_INIT_START_SOCKET_RELAY (line 1039) | typedef struct _LX_INIT_START_SOCKET_RELAY
type LX_INIT_MOUNT_DRVFS (line 1054) | typedef struct _LX_INIT_MOUNT_DRVFS
type LX_INIT_ADD_VIRTIOFS_SHARE_RESPONSE_MESSAGE (line 1068) | typedef struct _LX_INIT_ADD_VIRTIOFS_SHARE_RESPONSE_MESSAGE
type LX_INIT_ADD_VIRTIOFS_SHARE_MESSAGE (line 1081) | typedef struct _LX_INIT_ADD_VIRTIOFS_SHARE_MESSAGE
type LX_INIT_REMOUNT_VIRTIOFS_SHARE_MESSAGE (line 1095) | typedef struct _LX_INIT_REMOUNT_VIRTIOFS_SHARE_MESSAGE
type LX_MINI_INIT_MESSAGE_FLAGS (line 1112) | typedef enum _LX_MINI_INIT_MESSAGE_FLAGS
type LX_MINI_INIT_MOUNT_DEVICE_TYPE (line 1124) | typedef enum _LX_MINI_INIT_MOUNT_DEVICE_TYPE
type LX_MINI_INIT_MESSAGE (line 1132) | typedef struct _LX_MINI_INIT_MESSAGE
type LX_MINI_INIT_MEMORY_RECLAIM_MODE (line 1167) | typedef enum _LX_MINI_INIT_MEMORY_RECLAIM_MODE
type LX_MINI_INIT_EARLY_CONFIG_MESSAGE (line 1175) | typedef struct _LX_MINI_INIT_EARLY_CONFIG_MESSAGE
type LX_MINI_INIT_PORT_TRACKER_TYPE (line 1215) | typedef enum _LX_MINI_INIT_PORT_TRACKER_TYPE
type LX_MINI_INIT_NETWORKING_MODE (line 1223) | typedef enum _LX_MINI_INIT_NETWORKING_MODE
type LX_MINI_INIT_NETWORKING_CONFIGURATION (line 1233) | typedef struct _LX_MINI_INIT_NETWORKING_CONFIGURATION
type LX_MINI_INIT_CONFIG_MESSAGE (line 1244) | typedef struct _LX_MINI_INIT_CONFIG_MESSAGE
type LX_MINI_INIT_TELEMETRY_MESSAGE (line 1275) | typedef struct _LX_MINI_INIT_TELEMETRY_MESSAGE
type LX_MINI_INIT_MOUNT_MESSAGE (line 1289) | typedef struct _LX_MINI_INIT_MOUNT_MESSAGE
type LX_MINI_INIT_UNMOUNT_MESSAGE (line 1307) | typedef struct _LX_MINI_INIT_UNMOUNT_MESSAGE
type LX_MINI_INIT_DETACH_MESSAGE (line 1317) | typedef struct _LX_MINI_INIT_DETACH_MESSAGE
type LX_MINI_MOUNT_STEP (line 1329) | typedef enum _LX_MINI_MOUNT_STEP
type LX_MINI_INIT_MOUNT_RESULT_MESSAGE (line 1341) | typedef struct _LX_MINI_INIT_MOUNT_RESULT_MESSAGE
type LX_INIT_GUEST_CAPABILITIES (line 1355) | typedef struct _LX_INIT_GUEST_CAPABILITIES
type LX_MINI_INIT_WAIT_FOR_PMEM_DEVICE_MESSAGE (line 1366) | typedef struct _LX_MINI_INIT_WAIT_FOR_PMEM_DEVICE_MESSAGE
type LX_MINI_INIT_CHILD_EXIT_MESSAGE (line 1377) | typedef struct _LX_MINI_INIT_CHILD_EXIT_MESSAGE
type LX_MINI_INIT_MOUNT_FOLDER_MESSAGE (line 1387) | typedef struct _LX_MINI_INIT_MOUNT_FOLDER_MESSAGE
type LX_MINI_INIT_RESIZE_DISTRIBUTION_RESPONSE (line 1401) | typedef struct _LX_MINI_INIT_RESIZE_DISTRIBUTION_RESPONSE
type LX_MINI_INIT_RESIZE_DISTRIBUTION_MESSAGE (line 1411) | typedef struct _LX_MINI_INIT_RESIZE_DISTRIBUTION_MESSAGE
type CREATE_PROCESS_MESSAGE (line 1422) | struct CREATE_PROCESS_MESSAGE
type EJECT_VHD_MESSAGE (line 1434) | struct EJECT_VHD_MESSAGE
type LX_MINI_CREATE_INSTANCE_STEP (line 1445) | typedef enum _LX_MINI_CREATE_INSTANCE_STEP
type LX_MINI_INIT_CREATE_INSTANCE_RESULT (line 1456) | typedef struct _LX_MINI_INIT_CREATE_INSTANCE_RESULT
type LX_MINI_INIT_IMPORT_RESULT (line 1471) | typedef struct _LX_MINI_INIT_IMPORT_RESULT
type LX_INIT_OOBE_RESULT (line 1492) | typedef struct _LX_INIT_OOBE_RESULT
type LX_INIT_QUERY_VM_ID (line 1503) | typedef struct _LX_INIT_QUERY_VM_ID
type std (line 1514) | struct std
type std (line 1530) | struct std
FILE: src/shared/inc/message.h
function namespace (line 24) | namespace wsl::shared {
FILE: src/shared/inc/retryshared.h
function namespace (line 17) | namespace wsl::shared::retry {
FILE: src/shared/inc/socketshared.h
function namespace (line 18) | namespace wsl::shared::socket {
FILE: src/shared/inc/stringshared.h
function namespace (line 43) | namespace wsl::shared::string {
function result (line 221) | auto result = std::mismatch(firstString.begin(), firstString.end(), seco...
function T (line 303) | T* End{}
type GuidToStringFlags (line 366) | enum GuidToStringFlags
function result (line 449) | int result{}
function std (line 566) | inline std::wstring MultiByteToWide(const char* string)
function std (line 597) | inline std::wstring MultiByteToWide(const std::string& string)
function std (line 602) | inline std::string WideToMultiByte(const wchar_t* string)
function std (line 633) | inline std::string WideToMultiByte(const std::wstring& string)
function ParseNibble (line 639) | uint8_t ParseNibble(T HexDigit)
function const (line 745) | struct CaseInsensitiveCompare
function const (line 757) | bool operator()(const wchar_t* left, const wchar_t* right) const
function const (line 762) | bool operator()(const std::wstring& left, const std::wstring& right) const
type std (line 771) | struct std
type std (line 787) | struct std
type std (line 819) | struct std
type std (line 835) | struct std
type std (line 851) | struct std
type std (line 899) | struct std
type std (line 915) | struct std
type std (line 931) | struct std
FILE: src/windows/common/ConsoleProgressBar.cpp
function HRESULT (line 35) | HRESULT
function HRESULT (line 82) | HRESULT
function HRESULT (line 98) | HRESULT
FILE: src/windows/common/ConsoleProgressBar.h
function namespace (line 18) | namespace wsl::windows::common {
FILE: src/windows/common/ConsoleProgressIndicator.h
function namespace (line 20) | namespace wsl::windows::common {
FILE: src/windows/common/ConsoleState.cpp
function ChangeConsoleMode (line 22) | void ChangeConsoleMode(_In_ HANDLE Handle, _In_ DWORD Mode)
type wsl::windows::common (line 63) | namespace wsl::windows::common {
function COORD (line 152) | COORD ConsoleState::GetWindowSize() const
FILE: src/windows/common/ConsoleState.h
function namespace (line 21) | namespace wsl::windows::common {
FILE: src/windows/common/DeviceHostProxy.cpp
function GUID (line 31) | GUID DeviceHostProxy::AddNewDevice(const GUID& Type, const wil::com_ptr<...
FILE: src/windows/common/DeviceHostProxy.h
function IFACEMETHOD (line 31) | IFACEMETHOD(NotifyAllDevicesInUse)(_In_ LPCWSTR Tag) override;
type DeviceHostProxyEntry (line 62) | struct DeviceHostProxyEntry
FILE: src/windows/common/Distribution.cpp
function GetFamilyNameFromStorePackage (line 30) | std::wstring GetFamilyNameFromStorePackage(const winrt::Windows::Service...
function GetStorePackage (line 47) | winrt::Windows::Services::Store::StoreProduct GetStorePackage(LPCWSTR Ap...
function GetInstalledPackage (line 64) | std::optional<winrt::Windows::ApplicationModel::Package> GetInstalledPac...
function GetFamilyName (line 80) | std::wstring GetFamilyName(const Distribution& distro, bool directDownload)
function DistributionList (line 91) | DistributionList ReadFromManifest(const std::wstring& url)
function LookupDistributionInManifest (line 164) | std::optional<TDistribution> LookupDistributionInManifest(const Distribu...
function AvailableDistributions (line 215) | AvailableDistributions wsl::windows::common::distribution::GetAvailable()
FILE: src/windows/common/Distribution.h
function namespace (line 23) | namespace wsl::windows::common::distribution {
FILE: src/windows/common/Dmesg.h
type InputSource (line 40) | enum InputSource
function GUID (line 61) | GUID m_runtimeId{}
function m_overlapped (line 63) | _Guarded_by_(m_lock) OVERLAPPED m_overlapped {}
function RingBuffer (line 65) | RingBuffer m_dmesgEarlyBuffer{LX_RELAY_BUFFER_SIZE};
FILE: src/windows/common/DnsResolver.cpp
function HRESULT (line 15) | HRESULT DnsResolver::LoadDnsResolverMethods() noexcept
FILE: src/windows/common/DnsResolver.h
function namespace (line 9) | namespace wsl::core::networking {
FILE: src/windows/common/DnsTunnelingChannel.h
function namespace (line 9) | namespace wsl::core::networking {
FILE: src/windows/common/ExecutionContext.cpp
function ExecutionContext (line 44) | ExecutionContext* ExecutionContext::Current()
function ULONGLONG (line 76) | ULONGLONG ExecutionContext::CurrentContext() const noexcept
function ExecutionContext (line 164) | ExecutionContext& ExecutionContext::RootContext()
function LXSS_ERROR_INFO (line 365) | LXSS_ERROR_INFO* ClientExecutionContext::OutError() noexcept
FILE: src/windows/common/ExecutionContext.h
type Context (line 27) | enum Context
function struct (line 71) | DEFINE_ENUM_FLAG_OPERATORS(Context)
function class (line 91) | class ExecutionContext
FILE: src/windows/common/GnsChannel.h
function namespace (line 9) | namespace wsl::core {
FILE: src/windows/common/GnsPortTrackerChannel.h
function namespace (line 11) | namespace wsl::core {
FILE: src/windows/common/GuestDeviceManager.cpp
function GUID (line 13) | GUID GuestDeviceManager::AddGuestDevice(
function GUID (line 21) | GUID GuestDeviceManager::AddHdvShareWithOptions(
function GUID (line 53) | GUID GuestDeviceManager::AddNewDevice(_In_ const GUID& deviceId, _In_ co...
FILE: src/windows/common/GuestDeviceManager.h
function class (line 27) | class GuestDeviceManager
FILE: src/windows/common/HandleConsoleProgressBar.h
function namespace (line 20) | namespace wsl::windows::common {
FILE: src/windows/common/INetworkingEngine.h
function namespace (line 6) | namespace wsl::core {
FILE: src/windows/common/Localization.cpp
function GetUserLanguagesImpl (line 22) | std::vector<std::wstring> GetUserLanguagesImpl()
function GetUserLanguages (line 44) | std::vector<std::wstring> GetUserLanguages(bool impersonate)
function LPCWSTR (line 78) | LPCWSTR wsl::shared::Localization::LookupString(const std::vector<std::p...
FILE: src/windows/common/LxssMessagePort.cpp
function LXBUS_IPC_CONSOLE_ID (line 90) | LXBUS_IPC_CONSOLE_ID
function LXBUS_IPC_FORK_TOKEN_ID (line 100) | LXBUS_IPC_FORK_TOKEN_ID
function LXBUS_IPC_HANDLE_ID (line 110) | LXBUS_IPC_HANDLE_ID
function LXBUS_IPC_PROCESS_ID (line 120) | LXBUS_IPC_PROCESS_ID
FILE: src/windows/common/LxssMessagePort.h
function class (line 21) | class LxssMessagePort : public LxssPort
FILE: src/windows/common/LxssPort.h
function class (line 17) | class LxssPort
FILE: src/windows/common/LxssSecurity.h
function namespace (line 21) | namespace Security {
FILE: src/windows/common/LxssServerPort.cpp
function HANDLE (line 38) | HANDLE
function NTSTATUS (line 52) | NTSTATUS
FILE: src/windows/common/LxssServerPort.h
function class (line 19) | class LxssServerPort
FILE: src/windows/common/NatNetworking.h
function namespace (line 16) | namespace wsl::core {
FILE: src/windows/common/Redirector.cpp
type ConnectionSecurityContext (line 21) | struct ConnectionSecurityContext
function ConnectionSecurityContext (line 27) | ConnectionSecurityContext GetUserLogonIds(_In_ HANDLE token)
type wsl::windows::common::redirector (line 43) | namespace wsl::windows::common::redirector {
function ClearConnectionTargets (line 48) | void ClearConnectionTargets(HANDLE device)
function OpenRedirector (line 54) | wil::unique_hfile OpenRedirector()
function StartRedirector (line 62) | bool StartRedirector(HANDLE device)
function StartRedirector (line 79) | bool StartRedirector()
function StartRedirectorService (line 86) | bool StartRedirectorService()
function EnsureRedirectorStarted (line 104) | void EnsureRedirectorStarted()
function AddConnectionTarget (line 123) | void AddConnectionTarget(std::wstring_view name, LUID logonId, std::st...
function RemoveConnectionTarget (line 182) | void RemoveConnectionTarget(std::wstring_view name, LUID logonId)
function RegisterUserCallback (line 206) | void RegisterUserCallback(HANDLE handle, gsl::span<gsl::byte> outputBu...
FILE: src/windows/common/Redirector.h
function namespace (line 17) | namespace wsl::windows::common::redirector {
FILE: src/windows/common/RingBuffer.h
function class (line 17) | class RingBuffer
FILE: src/windows/common/Stringify.h
function namespace (line 7) | namespace wsl::windows::common::stringify {
FILE: src/windows/common/SubProcess.cpp
function FileFromHandle (line 22) | wil::unique_file FileFromHandle(wil::unique_hfile& Handle, const char* M...
function ReadFileContent (line 38) | std::wstring ReadFileContent(wil::unique_hfile& Handle)
function DWORD (line 225) | DWORD SubProcess::GetExitCode(HANDLE Process, DWORD Timeout)
function DWORD (line 236) | DWORD SubProcess::Run(DWORD Timeout)
FILE: src/windows/common/SubProcess.h
function namespace (line 20) | namespace wsl::windows::common {
FILE: src/windows/common/VirtioNetworking.cpp
function HRESULT (line 79) | HRESULT VirtioNetworking::HandlePortNotification(const SOCKADDR_INET& ad...
FILE: src/windows/common/VirtioNetworking.h
function namespace (line 11) | namespace wsl::core {
FILE: src/windows/common/WslClient.cpp
type Entrypoint (line 38) | enum Entrypoint
type LaunchProcessOptions (line 46) | struct LaunchProcessOptions
type ListOptions (line 54) | struct ListOptions
type ShellExecOptions (line 63) | struct ShellExecOptions
method IsLogin (line 71) | bool IsLogin() const
method IsUseShell (line 76) | bool IsUseShell() const
method SetExecMode (line 81) | void SetExecMode()
method ParseShellOptionArg (line 87) | void ParseShellOptionArg(std::wstring_view Argument)
function IsInteractiveConsole (line 110) | bool IsInteractiveConsole()
function PromptForKeyPress (line 118) | void PromptForKeyPress()
type WslVersion (line 138) | struct WslVersion
function BashMain (line 155) | int BashMain(_In_ std::wstring_view commandLine)
function ChangeDirectory (line 206) | void ChangeDirectory(_In_ std::wstring_view argument, _Inout_ LaunchProc...
function ExportDistribution (line 227) | int ExportDistribution(_In_ std::wstring_view commandLine)
function ImportDistribution (line 315) | int ImportDistribution(_In_ std::wstring_view commandLine)
function ImportDistributionInplace (line 397) | int ImportDistributionInplace(_In_ std::wstring_view commandLine)
function LaunchElevated (line 415) | int LaunchElevated(_In_ LPCWSTR commandLine)
function Install (line 446) | int Install(_In_ std::wstring_view commandLine)
function InstallPrerequisites (line 626) | bool InstallPrerequisites(_In_ bool installWslOptionalComponent)
function LaunchProcess (line 655) | int LaunchProcess(_In_opt_ LPCWSTR filename, _In_ int argc, _In_reads_(a...
function ListDistributions (line 697) | int ListDistributions(_In_ std::wstring_view commandLine)
function ListDistributionsHelper (line 712) | int ListDistributionsHelper(_In_ ListOptions options)
function Manage (line 888) | int Manage(_In_ std::wstring_view commandLine)
function Mount (line 963) | int Mount(_In_ std::wstring_view commandLine)
function LaunchProcessOptions (line 1040) | LaunchProcessOptions ParseLegacyArguments(_Inout_ std::wstring_view& com...
function DWORD (line 1077) | DWORD
function SetDefaultDistribution (line 1087) | int SetDefaultDistribution(_In_ LPCWSTR distributionName)
function SetDefaultVersion (line 1096) | int SetDefaultVersion(_In_ std::wstring_view commandLine)
function Shutdown (line 1117) | int Shutdown(_In_ std::wstring_view commandLine)
function SetSparse (line 1131) | int SetSparse(GUID& distroGuid, bool sparse, bool allowUnsafe)
function SetVersion (line 1141) | int SetVersion(_In_ std::wstring_view commandLine)
function Status (line 1171) | int Status()
function TerminateDistribution (line 1204) | int TerminateDistribution(_In_ LPCWSTR distributionName)
function Unmount (line 1213) | int Unmount(_In_ const std::wstring& arg)
function UnregisterDistribution (line 1244) | int UnregisterDistribution(_In_ LPCWSTR distributionName)
function UpdatePackage (line 1255) | int UpdatePackage(std::wstring_view commandLine)
function Uninstall (line 1272) | int Uninstall()
function Version (line 1292) | int Version()
function WslconfigMain (line 1310) | int WslconfigMain(_In_ int argc, _In_reads_(argc) LPWSTR* argv)
function WslgMain (line 1368) | int WslgMain(_In_ std::wstring_view commandLine)
function RunDebugShell (line 1469) | int RunDebugShell()
function WslMain (line 1523) | int WslMain(_In_ std::wstring_view commandLine)
FILE: src/windows/common/WslClient.h
function namespace (line 17) | namespace wsl::windows::common {
FILE: src/windows/common/WslCoreConfig.cpp
function GUID (line 499) | GUID wsl::core::Config::NatNetworkId() const noexcept
function LPCWSTR (line 510) | LPCWSTR wsl::core::Config::NatNetworkName() const noexcept
FILE: src/windows/common/WslCoreConfig.h
function namespace (line 37) | namespace wsl::core {
FILE: src/windows/common/WslCoreFilesystem.cpp
function ULONGLONG (line 95) | ULONGLONG wsl::core::filesystem::GetDiskSize(_In_ HANDLE diskHandle)
FILE: src/windows/common/WslCoreFilesystem.h
function namespace (line 25) | namespace wsl::core::filesystem {
FILE: src/windows/common/WslCoreFirewallSupport.cpp
type wsl::core::networking (line 62) | namespace wsl::core::networking {
function MakeLoopbackFirewallRuleId (line 63) | std::wstring MakeLoopbackFirewallRuleId(const GUID& guid)
function MakeLocalSubnetFirewallRuleId (line 69) | std::wstring MakeLocalSubnetFirewallRuleId(const GUID& guid)
function MakeICMPv6FirewallRuleId (line 75) | std::wstring MakeICMPv6FirewallRuleId(const GUID& guid)
function MakeICMPv4FirewallRuleId (line 80) | std::wstring MakeICMPv4FirewallRuleId(const GUID& guid)
function MakeMdnsIpv4FirewallRuleId (line 85) | std::wstring MakeMdnsIpv4FirewallRuleId(const GUID& guid)
function MakeMdnsIpv6FirewallRuleId (line 91) | std::wstring MakeMdnsIpv6FirewallRuleId(const GUID& guid)
function MakeDefaultFirewallRuleConfiguration (line 101) | std::vector<FirewallRuleConfiguration> MakeDefaultFirewallRuleConfigur...
function FirewallRuleConfiguration (line 146) | FirewallRuleConfiguration MakeLoopbackFirewallRuleConfiguration(const ...
function FirewallRuleConfiguration (line 151) | FirewallRuleConfiguration MakeLocalSubnetFirewallRuleConfiguration(con...
function HyperVFirewallSupport (line 158) | HyperVFirewallSupport GetHyperVFirewallSupportVersion(const FirewallCo...
function SpawnWbemObjectInstance (line 237) | wil::com_ptr<IWbemClassObject> SpawnWbemObjectInstance(
function WriteWMIInstance (line 257) | void WriteWMIInstance(_In_opt_ IWbemContext* wbemContext, const wil::c...
function HRESULT (line 269) | HRESULT RegisterHyperVFirewallVmCreator(const GUID& vmCreatorId, const...
function HRESULT (line 364) | HRESULT ConfigureHyperVFirewallLoopbackAllow(const GUID& vmCreatorId) ...
function AddHyperVFirewallRule (line 431) | void ConfigureHyperVFirewall(const FirewallConfiguration& firewallConf...
function HRESULT (line 630) | HRESULT RemoveHyperVFirewallRule(const std::wstring& ruleId) noexcept
function ConfigureSharedAccessFirewallRule (line 836) | void ConfigureSharedAccessFirewallRule() noexcept
FILE: src/windows/common/WslCoreFirewallSupport.h
function namespace (line 11) | namespace wsl::core::networking {
FILE: src/windows/common/WslCoreHostDnsInfo.cpp
type DnsRegistryPath (line 27) | struct DnsRegistryPath
function LoadIpHelperMethods (line 44) | static bool LoadIpHelperMethods() noexcept
function DWORD (line 78) | DWORD wsl::core::networking::GetBestInterface()
FILE: src/windows/common/WslCoreHostDnsInfo.h
function namespace (line 13) | namespace wsl::core::networking {
function class (line 52) | class HostDnsInfo
function class (line 81) | class DnsSuffixRegistryWatcher
FILE: src/windows/common/WslCoreMessageQueue.h
function class (line 28) | class WslBaseThreadPoolWaitableResult
function DWORD (line 58) | DWORD wait(DWORD timeout) const noexcept
function TReturn (line 82) | TReturn move_result() noexcept
function abort (line 125) | void abort() noexcept override
function TReturn (line 141) | TReturn result{}
function RunStatus (line 144) | enum class RunStatus
function noexcept (line 163) | noexcept
function noexcept (line 187) | noexcept
function noexcept (line 211) | noexcept
function cancel (line 228) | void cancel() noexcept
function mutable (line 320) | mutable LONG64 m_threadpoolThreadId{0}
function m_isCanceled (line 321) | bool m_isCanceled{false};
FILE: src/windows/common/WslCoreNetworkEndpointSettings.h
function namespace (line 20) | namespace wsl::core::networking {
function Clear (line 80) | void Clear() noexcept
function SOCKADDR_INET (line 91) | SOCKADDR_INET address{Address};
function if (line 278) | struct NetworkSettings
function GUID (line 311) | GUID InterfaceGuid{}
function EndpointIpAddress (line 312) | EndpointIpAddress PreferredIpAddress{}
function EndpointIpAddress (line 313) | EndpointIpAddress PreferredIpv6Address{}
function ULONG (line 381) | ULONG GetEffectiveMtu() const noexcept
FILE: src/windows/common/WslCoreNetworkingSupport.cpp
type InterfaceUnsupportedReason (line 13) | enum class InterfaceUnsupportedReason
type details (line 22) | namespace details {
function FindInterfacesForNetworkAdapter (line 24) | static bool FindInterfacesForNetworkAdapter(
FILE: src/windows/common/WslCoreNetworkingSupport.h
function namespace (line 132) | namespace wsl::core::networking {
FILE: src/windows/common/WslInstall.cpp
function EnforceFileHash (line 36) | void EnforceFileHash(HANDLE file, const std::wstring& expectedHash)
function GetInstalledOptionalComponents (line 52) | std::vector<std::wstring> GetInstalledOptionalComponents()
function ParseHex (line 67) | std::vector<BYTE> ParseHex(const std::wstring& input)
FILE: src/windows/common/WslInstall.h
function class (line 19) | class WslInstall
FILE: src/windows/common/WslSecurity.cpp
function SECURITY_DESCRIPTOR (line 60) | SECURITY_DESCRIPTOR wsl::windows::common::security::CreateSecurityDescri...
function LUID (line 102) | LUID wsl::windows::common::security::EnableTokenPrivilege(_Inout_ HANDLE...
function DWORD (line 117) | DWORD wsl::windows::common::security::GetUserBasicIntegrityLevel(_In_ HA...
FILE: src/windows/common/WslSecurity.h
function namespace (line 23) | namespace wsl::windows::common::security {
FILE: src/windows/common/WslTelemetry.cpp
type WslTraceLoggingInternal (line 44) | namespace WslTraceLoggingInternal {
function WslTraceLoggingInitialize (line 76) | void WslTraceLoggingInitialize(_In_ const TraceLoggingHProvider provider...
function WslTraceLoggingUninitialize (line 180) | void WslTraceLoggingUninitialize()
function WslTraceLoggingShouldDisableTelemetry (line 186) | bool WslTraceLoggingShouldDisableTelemetry() noexcept
FILE: src/windows/common/WslTelemetry.h
function class (line 49) | class WslTraceLoggingClient
FILE: src/windows/common/disk.cpp
function DWORD (line 108) | DWORD
FILE: src/windows/common/disk.hpp
type wsl::windows::common::disk (line 17) | namespace wsl::windows::common::disk {
FILE: src/windows/common/filesystem.cpp
type CaseSensitivity (line 24) | enum CaseSensitivity
function CreateMetaDataEaBuffer (line 36) | std::vector<char> CreateMetaDataEaBuffer(LX_UID_T Uid, LX_GID_T Gid, LX_...
function CopyFileWithMetadata (line 104) | void CopyFileWithMetadata(_In_ PCWSTR Source, _In_ PCWSTR Destination, _...
function DWORD (line 144) | DWORD GetNtfsDirCaseSensitivityFlags()
function SetNtfsDirCaseSensitivityFlags (line 149) | void SetNtfsDirCaseSensitivityFlags(_In_ ULONG Flags)
function CaseSensitivity (line 161) | CaseSensitivity GetCaseSensitivity()
function NTSTATUS (line 170) | NTSTATUS SetCaseSensitivity(_In_ CaseSensitivity value)
function revert_dir_case_sensitivity (line 196) | revert_dir_case_sensitivity EnableNtfsDirCaseSensitivity()
function revert_case_sensitivity (line 223) | revert_case_sensitivity EnableCaseSensitivity()
function HasReadAccessToDrive (line 230) | bool HasReadAccessToDrive(wchar_t drive)
function EnsureCaseSensitiveDirectoryRecursive (line 245) | void EnsureCaseSensitiveDirectoryRecursive(_In_ HANDLE Directory)
function SetDirectoryCaseSensitive (line 346) | void SetDirectoryCaseSensitive(_In_ PCWSTR Path)
function SetExtendedAttributesLxFs (line 363) | void SetExtendedAttributesLxFs(_In_ PCWSTR Path, _In_ ULONG Mode, _In_ U...
function SetExtendedAttributesDrvFs (line 401) | void SetExtendedAttributesDrvFs(_In_ PCWSTR Path, _In_ ULONG Mode, _In_ ...
function SetExtendedAttributes (line 455) | void SetExtendedAttributes(_In_ PCWSTR Path, _In_ ULONG Mode, _In_ ULONG...
function NTSTATUS (line 583) | NTSTATUS
function VOID (line 1022) | VOID wsl::windows::common::filesystem::QuerySingleEaFile(
function NTSTATUS (line 1051) | NTSTATUS
FILE: src/windows/common/filesystem.hpp
type wsl::windows::common::filesystem (line 25) | namespace wsl::windows::common::filesystem {
type TempFileFlags (line 27) | enum class TempFileFlags
type TempFile (line 42) | struct TempFile
method TempFile (line 57) | TempFile(const TempFile&) = delete;
method TempFile (line 58) | TempFile& operator=(const TempFile&) = delete;
method TempFile (line 60) | TempFile(TempFile&& other) noexcept
method TempFile (line 65) | TempFile& operator=(TempFile&& other) noexcept
function FreeLXSS_ADDMOUNT (line 74) | inline void FreeLXSS_ADDMOUNT(_Inout_opt_ PLX_KMAPPATHS_ADDMOUNT pMount)
function QueryInformationFile (line 201) | void QueryInformationFile(_In_ HANDLE Handle, _Out_ T& Buffer, _In_ FI...
function SetInformationFile (line 217) | void SetInformationFile(_In_ HANDLE Handle, _In_ T& Buffer, _In_ FILE_...
FILE: src/windows/common/hcs.cpp
function GUID (line 140) | GUID wsl::windows::common::hcs::GetRuntimeId(_In_ HCS_SYSTEM ComputeSystem)
FILE: src/windows/common/hcs.hpp
type wsl::windows::common::hcs (line 21) | namespace wsl::windows::common::hcs {
FILE: src/windows/common/hcs_schema.h
type class (line 27) | enum class
type class (line 42) | enum class
type class (line 55) | enum class
type Attachment (line 62) | struct Attachment
type class (line 75) | enum class
type Plan9Share (line 88) | struct Plan9Share
type class (line 98) | enum class
type FlexibleIoDevice (line 109) | struct FlexibleIoDevice
type NetworkAdapter (line 117) | struct NetworkAdapter
function to_json (line 127) | inline void to_json(nlohmann::json& j, const NetworkAdapter& adapter)
type class (line 137) | enum class
type GpuConfiguration (line 148) | struct GpuConfiguration
function to_json (line 156) | inline void to_json(nlohmann::json& j, const GpuConfiguration& configura...
function void (line 173) | struct ModifySettingRequest<void>
function to_json (line 181) | void to_json(nlohmann::json& j, const ModifySettingRequest<TSettings>& r...
type PropertyQuery (line 191) | struct PropertyQuery
type ProcessorFeature (line 198) | enum ProcessorFeature
type _Error (line 203) | struct _Error // Renamed from 'Error' to make the macro happy.
type ProcessorCapabilitiesInfo (line 211) | struct ProcessorCapabilitiesInfo
type Version (line 218) | struct Version
type BasicInformation (line 226) | struct BasicInformation
type class (line 258) | enum class
type Properties (line 269) | struct Properties
type class (line 277) | enum class
type Memory (line 288) | struct Memory
function to_json (line 302) | inline void to_json(nlohmann::json& j, const Memory& memory)
type Processor (line 318) | struct Processor
function to_json (line 326) | inline void to_json(nlohmann::json& j, const Processor& processor)
type Topology (line 334) | struct Topology
type VirtioSerialPort (line 342) | struct VirtioSerialPort
type VirtioSerial (line 351) | struct VirtioSerial
type ComPort (line 357) | struct ComPort
type LinuxKernelDirect (line 363) | struct LinuxKernelDirect
type class (line 371) | enum class
type UefiBootEntry (line 382) | struct UefiBootEntry
type Uefi (line 392) | struct Uefi
type EmptyObject (line 398) | struct EmptyObject
function to_json (line 402) | inline void to_json(nlohmann::json& j, const EmptyObject& memory)
type HvSocketSystemConfig (line 407) | struct HvSocketSystemConfig
type HvSocket (line 415) | struct HvSocket
type Chipset (line 421) | struct Chipset
function to_json (line 428) | inline void to_json(nlohmann::json& j, const Chipset& chipset)
type Scsi (line 436) | struct Scsi
type Devices (line 442) | struct Devices
type VirtualMachine (line 464) | struct VirtualMachine
type ComputeSystem (line 474) | struct ComputeSystem
FILE: src/windows/common/helpers.cpp
class ProcessLauncher (line 36) | class ProcessLauncher
method ProcessLauncher (line 39) | ProcessLauncher(LPCWSTR executable) : m_executable(executable)
method ProcessLauncher (line 43) | ProcessLauncher(LPCWSTR executable, LPCWSTR commandLine) : m_executabl...
method ProcessLauncher (line 47) | ProcessLauncher(const ProcessLauncher&) = delete;
method ProcessLauncher (line 48) | ProcessLauncher& operator=(const ProcessLauncher&) = delete;
method ProcessLauncher (line 50) | ProcessLauncher(ProcessLauncher&& other) noexcept
method ProcessLauncher (line 55) | ProcessLauncher& operator=(ProcessLauncher&& other) noexcept
method AddOption (line 63) | void AddOption(LPCWSTR OptionName, LPCWSTR OptionValue = nullptr)
method AddGuidOption (line 74) | void AddGuidOption(LPCWSTR OptionName, LPCGUID Guid)
method AddHandleOption (line 82) | void AddHandleOption(LPCWSTR OptionName, HANDLE Handle)
method Launch (line 92) | [[nodiscard]] wil::unique_handle Launch(_In_opt_ HANDLE UserToken, _In...
function LaunchWslHost (line 131) | [[nodiscard]] wil::unique_handle LaunchWslHost(
function LaunchWslRelay (line 149) | [[nodiscard]] wil::unique_handle LaunchWslRelay(
function INT32 (line 616) | INT32
function DWORD (line 640) | DWORD
FILE: src/windows/common/helpers.hpp
type wsl::windows::common::helpers (line 59) | namespace wsl::windows::common::helpers {
type LaunchWslRelayFlags (line 61) | enum class LaunchWslRelayFlags
type WindowsBuildNumbers (line 71) | enum WindowsBuildNumbers : ULONG
type GuidLess (line 86) | struct GuidLess
function DeleteProcThreadAttributeList (line 98) | inline void DeleteProcThreadAttributeList(_In_ PPROC_THREAD_ATTRIBUTE_...
type WindowsVersion (line 136) | struct WindowsVersion
FILE: src/windows/common/hvsocket.cpp
function InitializeSocketAddress (line 24) | void InitializeSocketAddress(_In_ const GUID& VmId, _In_ unsigned long P...
function InitializeWildcardSocketAddress (line 33) | void InitializeWildcardSocketAddress(_Out_ PSOCKADDR_HV Address)
FILE: src/windows/common/hvsocket.hpp
type wsl::windows::common::hvsocket (line 20) | namespace wsl::windows::common::hvsocket {
FILE: src/windows/common/install.cpp
function PromptForKeyPress (line 37) | bool PromptForKeyPress()
function PromptForKeyPressWithTimeout (line 45) | bool PromptForKeyPressWithTimeout()
function UpdatePackageImpl (line 80) | int UpdatePackageImpl(bool preRelease, bool repair)
function WaitForMsiInstall (line 136) | void WaitForMsiInstall()
function CreateJob (line 171) | wil::unique_handle CreateJob()
function InstallRecordHandler (line 188) | int WINAPI InstallRecordHandler(void* context, UINT messageType, LPCWSTR...
function ConfigureMsiLogging (line 211) | void ConfigureMsiLogging(_In_opt_ LPCWSTR LogFile, _In_ const std::funct...
function UINT (line 358) | UINT wsl::windows::common::install::UpgradeViaMsi(
function UINT (line 376) | UINT wsl::windows::common::install::UninstallViaMsi(_In_opt_ LPCWSTR Log...
FILE: src/windows/common/install.h
function namespace (line 18) | namespace wsl::windows::common::install {
FILE: src/windows/common/interop.cpp
type CreateProcessResult (line 33) | struct CreateProcessResult
type CreateProcessParsed (line 36) | struct CreateProcessParsed
method CreateProcessParsed (line 38) | CreateProcessParsed(_In_ const gsl::span<gsl::byte>& Common)
method LPWSTR (line 74) | LPWSTR CommandLine()
method LPCWSTR (line 79) | LPCWSTR Cwd() const
method LPVOID (line 84) | LPVOID Environment()
type CreateProcessResult (line 98) | struct CreateProcessResult
type CreateProcessVmModeContext (line 106) | struct CreateProcessVmModeContext
function BuildEnvironment (line 112) | std::wstring BuildEnvironment(gsl::span<gsl::byte> EnvironmentData)
function HRESULT (line 166) | HRESULT GetProcessImageSubSystem(_In_ HANDLE Process, _Out_ ULONG* Image...
function CreateProcessResult (line 191) | CreateProcessResult CreateProcess(_In_ CreateProcessParsed* Parsed, _In_...
function CreateProcessVmMode (line 259) | void CreateProcessVmMode(_In_ const GUID& VmId, _In_ const gsl::span<gsl...
function FormatCommandLine (line 345) | std::string FormatCommandLine(gsl::span<gsl::byte> CommandLineData, USHO...
function DWORD (line 408) | DWORD
FILE: src/windows/common/interop.hpp
type wsl::windows::common::interop (line 19) | namespace wsl::windows::common::interop {
FILE: src/windows/common/lxssbusclient.cpp
function NTSTATUS (line 28) | NTSTATUS
function NTSTATUS (line 53) | NTSTATUS
function NTSTATUS (line 80) | NTSTATUS
function NTSTATUS (line 108) | NTSTATUS
function NTSTATUS (line 135) | NTSTATUS
function NTSTATUS (line 163) | NTSTATUS
function NTSTATUS (line 190) | NTSTATUS
function NTSTATUS (line 218) | NTSTATUS
function NTSTATUS (line 245) | NTSTATUS
function NTSTATUS (line 273) | NTSTATUS
function NTSTATUS (line 322) | NTSTATUS
function NTSTATUS (line 378) | NTSTATUS
function NTSTATUS (line 449) | NTSTATUS
function NTSTATUS (line 498) | NTSTATUS
function NTSTATUS (line 523) | NTSTATUS
function NTSTATUS (line 564) | NTSTATUS
function NTSTATUS (line 630) | NTSTATUS
function NTSTATUS (line 668) | NTSTATUS
function NTSTATUS (line 696) | NTSTATUS
function NTSTATUS (line 724) | NTSTATUS
function NTSTATUS (line 750) | NTSTATUS
function NTSTATUS (line 776) | NTSTATUS
FILE: src/windows/common/lxssclient.cpp
function NTSTATUS (line 20) | NTSTATUS
function NTSTATUS (line 71) | NTSTATUS
function NTSTATUS (line 101) | NTSTATUS
function NTSTATUS (line 135) | NTSTATUS
function NTSTATUS (line 173) | NTSTATUS
function NTSTATUS (line 212) | NTSTATUS
function VOID (line 246) | VOID LxssClientUninitialize(VOID)
FILE: src/windows/common/notifications.cpp
function HRESULT (line 29) | HRESULT CreateToastNotifier(IToastNotifier** notifier)
function HRESULT (line 38) | HRESULT CreateXmlDocumentFromString(const wchar_t* xmlString, IXmlDocume...
function HRESULT (line 51) | HRESULT CreateToastNotification(IXmlDocument* content, IToastNotificatio...
function HRESULT (line 60) | HRESULT DisplayNotification(IXmlDocument* doc)
type wsl::windows::common::notifications (line 76) | namespace wsl::windows::common::notifications {
FILE: src/windows/common/notifications.h
function namespace (line 17) | namespace wsl::windows::common::notifications {
FILE: src/windows/common/registry.cpp
function GetKeyPath (line 21) | std::wstring GetKeyPath(_In_ HKEY Key)
function ReportErrorIfFailed (line 61) | void ReportErrorIfFailed(_In_ LSTATUS Error, _In_ HKEY Key, _In_opt_ LPC...
function DWORD (line 304) | DWORD
function ULONG64 (line 319) | ULONG64
FILE: src/windows/common/registry.hpp
type wsl::windows::common::registry (line 19) | namespace wsl::windows::common::registry {
FILE: src/windows/common/relay.cpp
function LARGE_INTEGER (line 30) | LARGE_INTEGER InitializeFileOffset(HANDLE File)
function DWORD (line 94) | DWORD
function DWORD (line 221) | DWORD
type State (line 447) | enum State
type Input (line 454) | struct Input
method Input (line 463) | Input(Input&&) = default;
method Input (line 464) | Input& operator=(Input&&) = default;
method Input (line 466) | Input(HANDLE Handle, LARGE_INTEGER Offset, size_t BufferSize) : Handle...
function IOHandleStatus (line 704) | IOHandleStatus OverlappedIOHandle::GetState() const
function HANDLE (line 725) | HANDLE EventHandle::GetHandle() const
function HANDLE (line 786) | HANDLE SingleAcceptHandle::GetHandle() const
FILE: src/windows/common/relay.hpp
type wsl::windows::common::relay (line 22) | namespace wsl::windows::common::relay {
type RelayFlags (line 46) | enum class RelayFlags
class ScopedMultiRelay (line 59) | class ScopedMultiRelay
method ScopedMultiRelay (line 67) | ScopedMultiRelay(ScopedMultiRelay&& other) = default;
method ScopedMultiRelay (line 68) | ScopedMultiRelay(const ScopedMultiRelay&) = delete;
method ScopedMultiRelay (line 70) | ScopedMultiRelay& operator=(const ScopedMultiRelay&) = delete;
method ScopedMultiRelay (line 71) | ScopedMultiRelay& operator=(ScopedMultiRelay&&) = delete;
class ScopedRelay (line 89) | class ScopedRelay
method ScopedRelay (line 93) | ScopedRelay(
method ScopedRelay (line 108) | ScopedRelay(ScopedRelay&& other) = default;
method ScopedRelay (line 109) | ScopedRelay(const ScopedRelay&) = delete;
method ScopedRelay (line 111) | ScopedRelay& operator=(const ScopedRelay&) = delete;
method ScopedRelay (line 112) | ScopedRelay& operator=(ScopedRelay&&) = delete;
method HANDLE (line 121) | static HANDLE GetUnderlyingHandle(THandle& handle)
type IOHandleStatus (line 153) | enum class IOHandleStatus
type HandleWrapper (line 160) | struct HandleWrapper
method HandleWrapper (line 165) | HandleWrapper(
method HandleWrapper (line 171) | HandleWrapper(
method HandleWrapper (line 177) | HandleWrapper(
method HandleWrapper (line 183) | HandleWrapper(
method HandleWrapper (line 189) | HandleWrapper(HANDLE handle, std::function<void()>&& OnClose = []() ...
method HandleWrapper (line 193) | HandleWrapper(
method HANDLE (line 204) | HANDLE Get() const
method Reset (line 209) | void Reset()
class OverlappedIOHandle (line 227) | class OverlappedIOHandle
method OverlappedIOHandle (line 233) | OverlappedIOHandle() = default;
class EventHandle (line 244) | class EventHandle : public OverlappedIOHandle
class SingleAcceptHandle (line 260) | class SingleAcceptHandle : public OverlappedIOHandle
class MultiHandleWait (line 282) | class MultiHandleWait
type Flags (line 285) | enum Flags
method MultiHandleWait (line 292) | MultiHandleWait() = default;
FILE: src/windows/common/socket.hpp
type wsl::windows::common::socket (line 19) | namespace wsl::windows::common::socket {
FILE: src/windows/common/string.cpp
function SOCKADDR_INET (line 148) | SOCKADDR_INET wsl::windows::common::string::StringToSockAddrInet(const s...
FILE: src/windows/common/string.hpp
type _IP_ADDRESS_PREFIX (line 21) | struct _IP_ADDRESS_PREFIX
type wsl::windows::common::string (line 24) | namespace wsl::windows::common::string {
type PhysicalMacAddress (line 49) | struct PhysicalMacAddress
FILE: src/windows/common/svccomm.cpp
type CreateProcessArguments (line 44) | struct CreateProcessArguments
method CreateProcessArguments (line 46) | CreateProcessArguments(LPCWSTR Filename, int Argc, LPCWSTR Argv[], ULO...
function BOOL (line 115) | BOOL GetNextCharacter(_In_ INPUT_RECORD* InputRecord, _Out_ PWCHAR NextC...
function BOOL (line 131) | BOOL IsActionableKey(_In_ PKEY_EVENT_RECORD KeyEvent)
function InitializeInterop (line 173) | void InitializeInterop(_In_ HANDLE ServerPort, _In_ const GUID& DistroId)
function SpawnWslHost (line 193) | void SpawnWslHost(_In_ HANDLE ServerPort, _In_ const GUID& DistroId, _In...
function HRESULT (line 578) | HRESULT
function HRESULT (line 601) | HRESULT
function DWORD (line 645) | DWORD
function GUID (line 858) | GUID wsl::windows::common::SvcComm::GetDefaultDistribution() const
function ULONG (line 867) | ULONG
function GUID (line 883) | GUID wsl::windows::common::SvcComm::GetDistributionId(_In_ LPCWSTR Name,...
function GUID (line 893) | GUID wsl::windows::common::SvcComm::ImportDistributionInplace(_In_ LPCWS...
function HRESULT (line 977) | HRESULT
function HRESULT (line 985) | HRESULT
function HRESULT (line 1005) | HRESULT
function HRESULT (line 1021) | HRESULT
FILE: src/windows/common/svccomm.hpp
type wsl::windows::common (line 22) | namespace wsl::windows::common {
class SvcComm (line 26) | class SvcComm
type MountResult (line 29) | struct MountResult
FILE: src/windows/common/wslutil.cpp
function GetWinInetErrorString (line 189) | wil::unique_hlocal_string GetWinInetErrorString(HRESULT error)
function IsWinInetError (line 212) | bool IsWinInetError(HRESULT error)
function EndianSwap (line 219) | constexpr uint16_t EndianSwap(uint16_t value)
function EndianSwap (line 224) | constexpr uint32_t EndianSwap(uint32_t value)
function EndianSwap (line 229) | constexpr unsigned long EndianSwap(unsigned long value)
function GUID (line 234) | constexpr GUID EndianSwap(GUID value)
function GUID (line 268) | GUID wsl::windows::common::wslutil::CreateV5Uuid(const GUID& namespaceGu...
function HANDLE (line 355) | [[nodiscard]] HANDLE wsl::windows::common::wslutil::DuplicateHandle(_In_...
function HANDLE (line 364) | [[nodiscard]] HANDLE wsl::windows::common::wslutil::DuplicateHandleFromC...
function HANDLE (line 375) | [[nodiscard]] HANDLE wsl::windows::common::wslutil::DuplicateHandleToCal...
function DWORD (line 500) | DWORD
function GitHubRelease (line 779) | GitHubRelease wsl::windows::common::wslutil::GetGitHubReleaseByTag(_In_ ...
FILE: src/windows/common/wslutil.h
function namespace (line 23) | namespace wsl::windows::common {
function namespace (line 33) | namespace wsl::windows::common::wslutil {
type GitHubRelease (line 58) | struct GitHubRelease
FILE: src/windows/inc/LxssDynamicFunction.h
type class (line 17) | enum class
function noexcept (line 51) | LxssDynamicFunction(DynamicFunctionErrorLogs) noexcept
function HRESULT (line 59) | HRESULT load(const wil::shared_hmodule& module, LPCSTR functionName) noe...
function wil (line 71) | const wil::shared_hmodule module{LoadLibraryEx(moduleName, nullptr, LOAD...
FILE: src/windows/inc/RegistryWatcher.h
function namespace (line 11) | namespace wsl::windows::common {
FILE: src/windows/inc/WmiService.h
function namespace (line 25) | namespace wsl::core {
function noexcept (line 145) | const noexcept
function property_iterator (line 155) | [[nodiscard]] static property_iterator property_end() noexcept
function class (line 161) | class property_iterator
function increment (line 290) | void increment()
function class (line 330) | class WmiInstance
function noexcept (line 366) | const noexcept
function WmiService (line 389) | [[nodiscard]] WmiService get_service() const noexcept
function WmiClassObject (line 413) | [[nodiscard]] WmiClassObject get_class_object() const noexcept
function write_instance (line 434) | void write_instance(LONG wbemFlags = WBEM_FLAG_CREATE_OR_UPDATE)
function delete_instance (line 439) | void delete_instance()
function WmiInstance (line 453) | WmiInstance execute_method(PCWSTR method)
function is_null (line 594) | bool is_null(PCWSTR propname) const
function get (line 617) | bool get(PCWSTR propname, _Inout_ VARIANT* value) const
function set (line 632) | void set(PCWSTR propname, _In_ const VARIANT* value) const
function set_default (line 644) | void set_default(PCWSTR propname) const
function set_property (line 656) | void set_property(PCWSTR propname, _In_ const VARIANT* pVariant) const
function WmiInstance (line 665) | WmiInstance execute_method_impl(PCWSTR method, _In_opt_ IWbemClassObject...
function class (line 685) | class WmiEnumerate
function explicit (line 758) | explicit WmiEnumerate(WmiService wbemServices) noexcept : m_wbemServices...
function WmiEnumerate (line 764) | const WmiEnumerate& query(_In_ PCWSTR query)
function WmiEnumerate (line 771) | const WmiEnumerate& query(_In_ PCWSTR query, const wil::com_ptr<IWbemCon...
function iterator (line 788) | iterator end() const noexcept
function iterator (line 803) | iterator cend() const noexcept
function noexcept (line 825) | inline bool WmiEnumerate::iterator::operator!=(const iterator& iter) con...
FILE: src/windows/inc/WmiVariant.h
function namespace (line 19) | namespace wsl::core {
function unaccessArray (line 374) | const auto unaccessArray = wil::scope_exit([&]() noexcept { SafeArrayUna...
function guardArray (line 391) | auto guardArray = wil::scope_exit([&]() noexcept { SafeArrayDestroy(temp...
function WmiReadFromVariant (line 413) | inline bool WmiReadFromVariant(_In_ const VARIANT* variant, _Inout_ std:...
function guardArray (line 438) | auto guardArray = wil::scope_exit([&]() noexcept { SafeArrayDestroy(temp...
function WmiReadFromVariant (line 459) | inline bool WmiReadFromVariant(_In_ const VARIANT* variant, _Inout_ std:...
function guardArray (line 485) | auto guardArray = wil::scope_exit([&]() noexcept { SafeArrayDestroy(temp...
function WmiReadFromVariant (line 507) | inline bool WmiReadFromVariant(_In_ const VARIANT* variant, _Inout_ std:...
function wil (line 530) | inline wil::unique_variant WmiMakeVariant(const std::vector<unsigned cha...
FILE: src/windows/inc/WslCoreConfigInterface.h
type WslConfigEntry (line 21) | enum WslConfigEntry
type NetworkingConfiguration (line 52) | enum NetworkingConfiguration
type MemoryReclaimConfiguration (line 61) | enum MemoryReclaimConfiguration
type WslConfig (line 68) | struct WslConfig
type WslConfigSetting (line 70) | struct WslConfigSetting
type WslConfigSetting (line 93) | struct WslConfigSetting
type WslConfigEntry (line 94) | enum WslConfigEntry
type WslConfigSetting (line 97) | struct WslConfigSetting
FILE: src/windows/inc/WslPluginApi.h
type WSLVersion (line 36) | struct WSLVersion
type WSLUserConfiguration (line 43) | enum WSLUserConfiguration
type WSLVmCreationSettings (line 54) | struct WSLVmCreationSettings
type DWORD (line 59) | typedef DWORD WSLSessionId;
type WSLSessionInformation (line 61) | struct WSLSessionInformation
type WSLDistributionInformation (line 68) | struct WSLDistributionInformation
type WslOfflineDistributionInformation (line 79) | struct WslOfflineDistributionInformation
type HRESULT (line 89) | typedef HRESULT (*WSLPluginAPI_MountFolder)(WSLSessionId Session, LPCWST...
type HRESULT (line 93) | typedef HRESULT (*WSLPluginAPI_ExecuteBinary)(WSLSessionId Session, LPCS...
type HRESULT (line 97) | typedef HRESULT (*WSLPluginAPI_ExecuteBinaryInDistribution)(WSLSessionId...
type HRESULT (line 101) | typedef HRESULT (*WSLPluginAPI_PluginError)(LPCWSTR UserMessage);
type HRESULT (line 107) | typedef HRESULT (*WSLPluginAPI_OnVMStarted)(const struct WSLSessionInfor...
type HRESULT (line 111) | typedef HRESULT (*WSLPluginAPI_OnVMStopping)(const struct WSLSessionInfo...
type HRESULT (line 115) | typedef HRESULT (*WSLPluginAPI_OnDistributionStarted)(const struct WSLSe...
type HRESULT (line 121) | typedef HRESULT (*WSLPluginAPI_OnDistributionStopping)(const struct WSLS...
type HRESULT (line 125) | typedef HRESULT (*WSLPluginAPI_OnDistributionRegistered)(const struct WS...
type WSLPluginHooksV1 (line 127) | struct WSLPluginHooksV1
type WSLPluginAPIV1 (line 137) | struct WSLPluginAPIV1
type HRESULT (line 146) | typedef HRESULT (*WSLPluginAPI_EntryPointV1)(const struct WSLPluginAPIV1...
FILE: src/windows/inc/comservicehelper.h
function namespace (line 17) | namespace Windows { namespace Internal {
function cleanup (line 242) | auto cleanup = wil::scope_exit([&] {
function ServerDescriptor (line 300) | ServerDescriptor m_serverDescriptor{}
function HRESULT (line 316) | HRESULT ConnectCallback() override
function HRESULT (line 321) | HRESULT DisconnectCallback() override
type LastObjectReleaseBehavior (line 328) | enum LastObjectReleaseBehavior
function HRESULT (line 369) | static HRESULT ProcessMain()
function ServiceMainSharedProcess (line 382) | static void ServiceMainSharedProcess()
function HRESULT (line 388) | HRESULT RunServiceMain(_In_ boolean fOwnProcess)
function LPSERVICE_STATUS (line 515) | LPSERVICE_STATUS GetServiceStatusReference()
function StopAsync (line 521) | void StopAsync()
function StopAsync (line 532) | void StopAsync(HRESULT hr)
function DWORD (line 560) | static DWORD WINAPI HandlerExStatic(_In_ DWORD dwControl, _In_ DWORD dwE...
function DWORD (line 566) | DWORD WINAPI HandlerEx(_In_ DWORD dwControl, _In_ DWORD dwEventType, _In...
FILE: src/windows/inc/wdk.h
type KEY_FLAGS_INFORMATION (line 79) | typedef struct _KEY_FLAGS_INFORMATION // TODO: Undocumented.
type EVENT_TYPE (line 88) | typedef enum _EVENT_TYPE
type IO_STATUS_BLOCK (line 94) | typedef IO_STATUS_BLOCK* PIO_STATUS_BLOCK;
type FS_INFORMATION_CLASS (line 98) | typedef enum _FSINFOCLASS
type FILE_FS_DEVICE_INFORMATION (line 105) | typedef struct _FILE_FS_DEVICE_INFORMATION
type REPARSE_DATA_BUFFER (line 111) | typedef struct _REPARSE_DATA_BUFFER
type FILE_ATTRIBUTE_TAG_INFORMATION (line 142) | typedef struct _FILE_ATTRIBUTE_TAG_INFORMATION
type FILE_GET_EA_INFORMATION (line 150) | typedef struct _FILE_GET_EA_INFORMATION
type FILE_FULL_EA_INFORMATION (line 157) | typedef struct _FILE_FULL_EA_INFORMATION
type FILE_ID_BOTH_DIR_INFORMATION (line 166) | typedef struct _FILE_ID_BOTH_DIR_INFORMATION
type HV_X64_HYPERVISOR_HARDWARE_FEATURES (line 328) | typedef struct _HV_X64_HYPERVISOR_HARDWARE_FEATURES
type KEY_INFORMATION_CLASS (line 381) | typedef enum _KEY_INFORMATION_CLASS
type KEY_NAME_INFORMATION (line 396) | typedef struct _KEY_NAME_INFORMATION
FILE: src/windows/inc/wslhost.h
function namespace (line 17) | namespace wslhost {
FILE: src/windows/inc/wslpolicies.h
function namespace (line 19) | namespace wsl::windows::policies {
FILE: src/windows/inc/wslrelay.h
function namespace (line 17) | namespace wslrelay {
FILE: src/windows/libwsl/DllMain.cpp
function EXTERN_C (line 19) | EXTERN_C BOOL STDAPICALLTYPE DllMain(_In_ HINSTANCE Instance, _In_ DWORD...
FILE: src/windows/libwsl/WslCoreConfigInterface.cpp
type WslConfig (line 32) | struct WslConfig
method WslConfig (line 34) | WslConfig() = default;
method WslConfig (line 36) | WslConfig(const wchar_t* wslConfigFilePath) :
function wchar_t (line 46) | const wchar_t* GetWslConfigFilePath()
function WslConfig_t (line 55) | WslConfig_t CreateWslConfig(const wchar_t* wslConfigFilePath)
function FreeWslConfig (line 60) | void FreeWslConfig(WslConfig_t wslConfig)
function WslConfigSetting (line 68) | WslConfigSetting GetWslConfigSetting(WslConfig_t wslConfig, WslConfigEnt...
function SetWslConfigSetting (line 208) | unsigned long SetWslConfigSetting(WslConfig_t wslConfig, const char* key...
function SetWslConfigSetting (line 221) | unsigned long SetWslConfigSetting(WslConfig_t wslConfig, const char* key...
function SetWslConfigSetting (line 235) | unsigned long SetWslConfigSetting(
function SetWslConfigSetting (line 263) | unsigned long SetWslConfigSetting(
function SetWslConfigSetting (line 277) | unsigned long SetWslConfigSetting(WslConfig_t wslConfig, WslConfigSettin...
FILE: src/windows/service/exe/BridgedNetworking.h
function namespace (line 10) | namespace wsl::core {
FILE: src/windows/service/exe/DistributionRegistration.cpp
function T (line 28) | T ApplyTransform(T&& value, T (*transform)(T))
function DistributionRegistration (line 39) | DistributionRegistration DistributionRegistration::Open(HKEY LxssKey, co...
function DistributionRegistration (line 59) | DistributionRegistration DistributionRegistration::Create(
function DistributionRegistration (line 148) | DistributionRegistration DistributionRegistration::OpenOrDefault(HKEY Lx...
function GUID (line 178) | const GUID& DistributionRegistration::Id() const
function DWORD (line 188) | DWORD DistributionRegistration::Read(const DistributionPropertyWithDefau...
function DWORD (line 232) | DWORD
FILE: src/windows/service/exe/DistributionRegistration.h
function namespace (line 17) | namespace wsl::windows::service {
function GUID (line 86) | GUID m_id{}
function DistributionPropertyWithDefault (line 104) | inline DistributionPropertyWithDefault<DWORD> State{L"State", LxssDistri...
FILE: src/windows/service/exe/GnsRpcServer.cpp
function GnsRpcServer (line 58) | GnsRpcServer& GnsRpcServer::operator=(GnsRpcServer&& Other) noexcept
function UUID (line 67) | const UUID& GnsRpcServer::GetServerUuid() const noexcept
FILE: src/windows/service/exe/GnsRpcServer.h
function class (line 10) | class GnsRpcServer
FILE: src/windows/service/exe/GuestTelemetryLogger.cpp
function LPCWSTR (line 39) | LPCWSTR GuestTelemetryLogger::GetPipeName() const
FILE: src/windows/service/exe/GuestTelemetryLogger.h
function class (line 20) | class GuestTelemetryLogger : public std::enable_shared_from_this<GuestTe...
FILE: src/windows/service/exe/IMirroredNetworkManager.h
type class (line 11) | enum class
function class (line 24) | class IMirroredNetworkManager
FILE: src/windows/service/exe/Lifetime.cpp
function IsSameProcess (line 21) | static bool IsSameProcess(_In_ HANDLE process1, _In_ HANDLE process2)
function ULONG64 (line 81) | ULONG64 LifetimeManager::GetRegistrationId()
FILE: src/windows/service/exe/Lifetime.h
function class (line 19) | class LifetimeManager
FILE: src/windows/service/exe/LxssConsoleManager.cpp
function ULONG (line 132) | ULONG ConsoleManager::s_GetConhostServerId(_In_ HANDLE ConsoleHandle)
FILE: src/windows/service/exe/LxssConsoleManager.h
function class (line 20) | class ConsoleManager : public std::enable_shared_from_this<ConsoleManager>
type SessionLeaderMapping (line 54) | struct SessionLeaderMapping
FILE: src/windows/service/exe/LxssCreateProcess.cpp
function CreateLxProcessData (line 18) | CreateLxProcessData LxssCreateProcess::ParseArguments(
FILE: src/windows/service/exe/LxssCreateProcess.h
function class (line 51) | class LxssCreateProcess
type LXSS_DISTRO_CONFIGURATION (line 104) | typedef struct _LXSS_DISTRO_CONFIGURATION
function class (line 120) | class LxssRunningInstance
FILE: src/windows/service/exe/LxssHttpProxy.cpp
function CallbackStatusToString (line 78) | auto CallbackStatusToString(DWORD internetStatus) noexcept
FILE: src/windows/service/exe/LxssHttpProxy.h
function UnsupportedProxyReason (line 73) | enum class UnsupportedProxyReason
type class (line 123) | enum class
function HRESULT (line 153) | static HRESULT s_LoadWinHttpProxyMethods() noexcept;
function WINHTTP_PROXY_CHANGE_REGISTRATION_HANDLE (line 209) | WINHTTP_PROXY_CHANGE_REGISTRATION_HANDLE m_proxyRegistrationHandle{}
function std (line 219) | const std::wstring m_localizedProxyChangeString{}
FILE: src/windows/service/exe/LxssInstance.cpp
function CreateLxProcessIsValidStdHandle (line 150) | bool CreateLxProcessIsValidStdHandle(_In_ PLXSS_HANDLE StdHandle)
function ULONG (line 284) | ULONG LxssInstance::GetClientId() const
function GUID (line 289) | GUID LxssInstance::GetDistributionId() const
function ULONG64 (line 307) | ULONG64 LxssInstance::GetLifetimeManagerId() const
function WSLDistributionInformation (line 437) | const WSLDistributionInformation* LxssInstance::DistributionInformation(...
FILE: src/windows/service/exe/LxssInstance.h
function class (line 32) | class LxssInstance : public LxssRunningInstance
FILE: src/windows/service/exe/LxssIpTables.cpp
function NTSTATUS (line 98) | NTSTATUS
function NTSTATUS (line 232) | NTSTATUS
function unique_mi_instance (line 244) | unique_mi_instance LxssManagementInterface::CloneInstance(_In_ const MI_...
function unique_mi_instance (line 298) | unique_mi_instance LxssManagementInterface::NewInstance(_In_ const std::...
function unique_mi_session (line 319) | unique_mi_session LxssManagementInterface::NewSession()
function unique_mi_instance (line 738) | unique_mi_instance LxssNetworkingNat::GetNatWmiInstance(const unique_mi_...
FILE: src/windows/service/exe/LxssIpTables.h
function class (line 40) | class LxssManagementInterface
function class (line 123) | class LxssIpTables
function class (line 208) | class LxssNetworkingFirewall
function class (line 287) | class LxssNetworkingFirewallPort
function class (line 350) | class LxssNetworkingNat
FILE: src/windows/service/exe/LxssUserCallback.cpp
function VOID (line 68) | VOID LxssUserCallback::QueueRequest()
function VOID (line 92) | VOID LxssUserCallback::ThreadpoolCallback(_Inout_ PTP_CALLBACK_INSTANCE ...
function VOID (line 155) | VOID CALLBACK LxssUserCallback::ThreadpoolCallbackProxy(
FILE: src/windows/service/exe/LxssUserCallback.h
function class (line 21) | class LxssUserCallback
FILE: src/windows/service/exe/LxssUserSession.cpp
function HRESULT (line 681) | HRESULT LxssUserSessionImpl::AttachDisk(_In_ LPCWSTR Disk, _In_ ULONG Fl...
function GUID (line 3098) | GUID LxssUserSessionImpl::_GetDefaultDistro(_In_ HKEY LxssKey)
function LONG (line 3144) | LONG LxssUserSessionImpl::_GetElfExitStatus(_In_ const LXSS_RUN_ELF_CONT...
function LXSS_RUN_ELF_CONTEXT (line 3370) | LXSS_RUN_ELF_CONTEXT LxssUserSessionImpl::_RunElfBinary(
function LXSS_VM_MODE_SETUP_CONTEXT (line 3483) | LXSS_VM_MODE_SETUP_CONTEXT
function HRESULT (line 3616) | HRESULT LxssUserSessionImpl::MountRootNamespaceFolder(_In_ LPCWSTR HostP...
function HRESULT (line 3625) | HRESULT LxssUserSessionImpl::CreateLinuxProcess(_In_opt_ const GUID* Dis...
function CreateLxProcessContext (line 4009) | CreateLxProcessContext LxssUserSessionImpl::s_GetCreateProcessContext(_I...
FILE: src/windows/service/exe/LxssUserSession.h
type LXSS_RUN_ELF_CONTEXT (line 44) | typedef struct _LXSS_RUN_ELF_CONTEXT
type LXSS_VM_MODE_SETUP_CONTEXT (line 50) | typedef struct _LXSS_VM_MODE_SETUP_CONTEXT
function ShutdownBehavior (line 57) | enum class ShutdownBehavior
function class (line 311) | class LxssUserSessionImpl
FILE: src/windows/service/exe/LxssUserSessionFactory.cpp
function ClearSessionsAndBlockNewInstances (line 62) | void ClearSessionsAndBlockNewInstances()
function SetSessionPolicy (line 77) | void SetSessionPolicy(_In_ bool enabled)
function FindSessionByCookie (line 103) | std::shared_ptr<LxssUserSessionImpl> FindSessionByCookie(_In_ DWORD Cookie)
function TerminateSession (line 122) | void TerminateSession(_In_ DWORD sessionId)
function HRESULT (line 160) | HRESULT LxssUserSessionFactory::CreateInstance(_In_ IUnknown* pUnkOuter,...
function FindSessionLockHeld (line 192) | std::shared_ptr<LxssUserSessionImpl> FindSessionLockHeld(PSID User)
function CreateInstanceForCurrentUser (line 211) | std::weak_ptr<LxssUserSessionImpl> CreateInstanceForCurrentUser()
FILE: src/windows/service/exe/LxssUserSessionFactory.h
function class (line 26) | class LxssUserSessionFactory : public Microsoft::WRL::ClassFactory<>
FILE: src/windows/service/exe/MirroredNetworking.h
function namespace (line 17) | namespace wsl::core {
FILE: src/windows/service/exe/PluginManager.h
function namespace (line 22) | namespace wsl::windows::service {
FILE: src/windows/service/exe/ServiceMain.cpp
type WslServiceSecurityPolicy (line 34) | struct WslServiceSecurityPolicy
method LPCWSTR (line 36) | static LPCWSTR GetSDDLText()
class WslService (line 45) | class WslService : public Windows::Internal::Service<WslService, Windows...
method wchar_t (line 48) | static wchar_t* GetName()
function HRESULT (line 206) | HRESULT WslService::ServiceStarted()
FILE: src/windows/service/exe/WslCoreAdviseHandler.h
function namespace (line 21) | namespace wsl::core {
FILE: src/windows/service/exe/WslCoreGuestNetworkService.h
function namespace (line 15) | namespace wsl::core::networking {
FILE: src/windows/service/exe/WslCoreInstance.cpp
function ULONG (line 307) | ULONG WslCoreInstance::GetClientId() const
function GUID (line 319) | GUID WslCoreInstance::GetDistributionId() const
function ULONG64 (line 350) | ULONG64 WslCoreInstance::GetLifetimeManagerId() const
function WSLDistributionInformation (line 458) | const WSLDistributionInformation* WslCoreInstance::DistributionInformati...
FILE: src/windows/service/exe/WslCoreInstance.h
function GUID (line 48) | GUID m_runtimeId{}
function DWORD (line 49) | DWORD m_socketTimeout{}
function ULONG (line 124) | ULONG m_featureFlags{}
function GUID (line 125) | GUID m_instanceId{}
function GUID (line 126) | GUID m_runtimeId{}
function LXSS_DISTRO_CONFIGURATION (line 127) | LXSS_DISTRO_CONFIGURATION m_configuration{}
function ULONG (line 128) | ULONG m_clientId{}
function ULONG (line 129) | ULONG m_defaultUid{}
function ULONG64 (line 133) | ULONG64 m_ntClientLifetimeId{}
function WSLDistributionInformation (line 137) | WSLDistributionInformation m_distributionInfo{}
function DWORD (line 138) | DWORD m_socketTimeout{}
FILE: src/windows/service/exe/WslCoreNetworkEndpoint.h
function namespace (line 11) | namespace wsl::core::networking {
function GUID (line 32) | GUID NetworkId{}
function GUID (line 33) | GUID EndpointId{}
function GUID (line 34) | GUID InterfaceGuid{}
function NET_LUID (line 35) | NET_LUID InterfaceLuid{}
FILE: src/windows/service/exe/WslCoreTcpIpStateTracking.h
function namespace (line 7) | namespace wsl::core::networking {
type IpStateTracking (line 205) | struct IpStateTracking
function DnsInfo (line 215) | DnsInfo DnsInfo{}
function ResetState (line 268) | void ResetState() noexcept
function SeedInitialState (line 282) | void SeedInitialState(const NetworkSettings& settings) noexcept
FILE: src/windows/service/exe/WslCoreVm.cpp
function INT64 (line 67) | INT64
function ULONG (line 968) | ULONG WslCoreVm::AttachDisk(_In_ PCWSTR Disk, _In_ DiskType Type, _In_ s...
function ULONG (line 974) | ULONG WslCoreVm::AttachDiskLockHeld(
function GUID (line 1775) | GUID WslCoreVm::GetRuntimeId() const
function ULONG (line 2047) | ULONG
function ULONG (line 2308) | ULONG WslCoreVm::ReserveLun(_In_ std::optional<ULONG> Lun)
FILE: src/windows/service/exe/WslCoreVm.h
type class (line 60) | enum class
type DiskMountResult (line 85) | struct DiskMountResult
type MountFlags (line 107) | enum MountFlags
type DiskStateFlags (line 128) | enum DiskStateFlags
type AttachedDisk (line 139) | struct AttachedDisk
type Mount (line 149) | struct Mount
type DiskState (line 156) | struct DiskState
type VirtioFsShare (line 163) | struct VirtioFsShare
FILE: src/windows/service/exe/WslMirroredNetworking.cpp
function HnsModifyRequestTypeToString (line 34) | inline const auto HnsModifyRequestTypeToString(const hns::ModifyRequestT...
function HRESULT (line 745) | HRESULT wsl::core::networking::WslMirroredNetworkManager::AddNetwork(con...
function HRESULT (line 790) | HRESULT wsl::core::networking::WslMirroredNetworkManager::SendAddressReq...
function HRESULT (line 2263) | HRESULT wsl::core::networking::WslMirroredNetworkManager::WaitForMirrore...
function _Check_return_ (line 2270) | _Check_return_ bool wsl::core::networking::WslMirroredNetworkManager::Do...
FILE: src/windows/service/exe/WslMirroredNetworking.h
function HnsStatus (line 62) | HnsStatus Stop() noexcept override;
FILE: src/windows/wsl/main.cpp
function wmain (line 17) | int __cdecl wmain()
FILE: src/windows/wslg/main.cpp
function wWinMain (line 17) | int WINAPI wWinMain(HINSTANCE, HINSTANCE, PWSTR, int)
FILE: src/windows/wslhost/main.cpp
function AddComRef (line 31) | void AddComRef()
function ReleaseComRef (line 36) | void ReleaseComRef()
function ShellExec (line 44) | void ShellExec(_In_ LPCWSTR operation, _In_ LPCWSTR file, _In_ LPCWSTR a...
function LaunchWsl (line 49) | void LaunchWsl(_In_ LPCWSTR args)
class DECLSPEC_UUID (line 57) | class DECLSPEC_UUID
class NotificationActivatorFactory (line 132) | class NotificationActivatorFactory : public winrt::implements<Notificati...
method STDMETHODIMP (line 135) | STDMETHODIMP CreateInstance(_In_ IUnknown* outer, REFIID iid, _COM_Out...
function wWinMain (line 160) | int WINAPI wWinMain(HINSTANCE instance, HINSTANCE, PWSTR, int)
FILE: src/windows/wslinstall/DllMain.cpp
function TrustPackageCertificate (line 54) | void TrustPackageCertificate(LPCWSTR Path)
function ThrowIfOperationError (line 78) | void ThrowIfOperationError(
function GetMsiProperty (line 92) | std::wstring GetMsiProperty(MSIHANDLE install, LPCWSTR name)
function GetInstallTarget (line 108) | std::wstring GetInstallTarget(MSIHANDLE install)
function DisplayError (line 113) | void DisplayError(MSIHANDLE install, LPCWSTR message)
function DeleteRegistryKeyIfVolatile (line 121) | void DeleteRegistryKeyIfVolatile(LPCWSTR Parent, LPCWSTR Key)
function IsWindowsServerCore (line 147) | bool IsWindowsServerCore()
function IsWindowsServerCoreWithMsiSupport (line 183) | bool IsWindowsServerCoreWithMsiSupport()
function DoesBuildSupportDirectMsiExecution (line 189) | bool DoesBuildSupportDirectMsiExecution()
function GrantDeletePermissionToSystem (line 221) | void GrantDeletePermissionToSystem(SC_HANDLE Service)
function RemoveRegistryKeyProtectionImpl (line 302) | bool RemoveRegistryKeyProtectionImpl(LPCWSTR Path)
function UINT (line 367) | UINT __stdcall RemoveRegistryKeyProtections(MSIHANDLE install)
function CleanExplorerShortcutFlags (line 400) | bool CleanExplorerShortcutFlags(LPCWSTR Sid)
function UINT (line 429) | UINT __stdcall CleanExplorerState(MSIHANDLE install)
function UINT (line 463) | UINT __stdcall CleanMsixState(MSIHANDLE install)
function UINT (line 527) | UINT __stdcall DeprovisionMsix(MSIHANDLE install)
function UINT (line 550) | UINT __stdcall RemoveMsixAsSystem(MSIHANDLE install)
function UINT (line 579) | UINT __stdcall RemoveMsixAsUser(MSIHANDLE install)
function ExtractMsix (line 607) | wsl::windows::common::filesystem::TempFile ExtractMsix(MSIHANDLE install)
function UINT (line 648) | UINT __stdcall InstallMsixAsUser(MSIHANDLE install)
function UINT (line 686) | UINT __stdcall InstallMsix(MSIHANDLE install)
function UINT (line 792) | UINT __stdcall WslFinalizeInstallation(MSIHANDLE install)
function UINT (line 803) | UINT __stdcall WslValidateInstallation(MSIHANDLE install)
function RegisterLspCategoriesImpl (line 825) | void RegisterLspCategoriesImpl(DWORD flags)
function UINT (line 846) | UINT __stdcall RegisterLspCategories(MSIHANDLE install)
function UINT (line 864) | UINT __stdcall UnregisterLspCategories(MSIHANDLE install)
function GetWslSettingsInstalledExePath (line 877) | std::wstring GetWslSettingsInstalledExePath(MSIHANDLE install)
function ComputeAppId (line 887) | std::wstring ComputeAppId(const std::wstring& seed)
function ComputeProgId (line 910) | std::wstring ComputeProgId(const std::wstring& appId)
FILE: src/windows/wslinstaller/exe/ServiceMain.cpp
type WslInstallSecurityPolicy (line 26) | struct WslInstallSecurityPolicy
method LPCWSTR (line 28) | static LPCWSTR GetSDDLText()
class WslInstallerService (line 37) | class WslInstallerService
method wchar_t (line 41) | static wchar_t* GetName()
function HRESULT (line 68) | HRESULT WslInstallerService::OnServiceStarting()
function Stop (line 79) | void Stop()
function HRESULT (line 91) | HRESULT WslInstallerService::ServiceStarted()
function wmain (line 119) | int __cdecl wmain()
FILE: src/windows/wslinstaller/exe/WslInstaller.cpp
function GetMsiPackagePath (line 21) | std::wstring GetMsiPackagePath()
function GetUpgradeLogFileLocation (line 34) | std::optional<std::wstring> GetUpgradeLogFileLocation()
function InstallMsipackageImpl (line 53) | std::pair<UINT, std::wstring> InstallMsipackageImpl()
function DWORD (line 87) | DWORD WINAPI InstallMsiPackage(LPVOID Context)
function IsUpdateNeeded (line 106) | std::pair<bool, std::wstring> IsUpdateNeeded()
function LaunchInstall (line 131) | std::shared_ptr<InstallContext> LaunchInstall()
FILE: src/windows/wslinstaller/exe/WslInstaller.h
type InstallContext (line 25) | struct InstallContext
function UINT (line 29) | UINT ExitCode{}
FILE: src/windows/wslinstaller/exe/WslInstallerFactory.cpp
function ClearSessions (line 25) | void ClearSessions()
function HRESULT (line 31) | HRESULT WslInstallerFactory::CreateInstance(_In_ IUnknown* pUnkOuter, _I...
FILE: src/windows/wslinstaller/exe/WslInstallerFactory.h
function class (line 20) | class WslInstallerFactory : public Microsoft::WRL::ClassFactory<>
FILE: src/windows/wslrelay/localhost.cpp
type in6_addr_linux (line 27) | struct in6_addr_linux
function GetPortListener (line 43) | static int GetPortListener(_In_ wsl::shared::SocketChannel& Channel)
function WindowsAddressFamily (line 49) | static int WindowsAddressFamily(int LinuxAddressFamily)
function BindsLocalhost (line 64) | bool BindsLocalhost(int Af, uint32_t const* Address)
function BindRelayListener (line 238) | static wil::unique_socket BindRelayListener(ADDRESS_FAMILY const Family,...
FILE: src/windows/wslrelay/localhost.h
type LX_PORT_LISTENER_THREAD_CONTEXT (line 23) | typedef struct _LX_PORT_LISTENER_THREAD_CONTEXT
type ThreadContext (line 34) | typedef struct _LX_PORT_LISTENER_CONTEXT
function namespace (line 47) | namespace wsl::windows::wslrelay::localhost {
FILE: src/windows/wslrelay/main.cpp
function wWinMain (line 22) | int WINAPI wWinMain(HINSTANCE, HINSTANCE, PWSTR, int)
FILE: src/windows/wslsettings/Activation/ActivationHandler.cs
class ActivationHandler (line 10) | public abstract class ActivationHandler<T> : IActivationHandler
method ActivationHandler (line 15) | public ActivationHandler(INavigationService navigationService)
method CanHandleInternal (line 21) | protected virtual bool CanHandleInternal(T args) => true;
method HandleInternalAsync (line 24) | protected abstract Task HandleInternalAsync(T args);
method Navigate (line 26) | protected void Navigate(IWindowService.WindowId windowId, string pageK...
method CanHandle (line 35) | public bool CanHandle(object args) => args is T && CanHandleInternal((...
method HandleAsync (line 37) | public async Task HandleAsync(object args) => await HandleInternalAsyn...
FILE: src/windows/wslsettings/Activation/DefaultActivationHandler.cs
class DefaultActivationHandler (line 9) | public class DefaultActivationHandler : ActivationHandler<LaunchActivate...
method DefaultActivationHandler (line 11) | public DefaultActivationHandler(INavigationService navigationService) ...
method CanHandleInternal (line 15) | protected override bool CanHandleInternal(LaunchActivatedEventArgs args)
method HandleInternalAsync (line 21) | protected async override Task HandleInternalAsync(LaunchActivatedEvent...
FILE: src/windows/wslsettings/Activation/IActivationHandler.cs
type IActivationHandler (line 5) | public interface IActivationHandler
method CanHandle (line 7) | bool CanHandle(object args);
method HandleAsync (line 9) | Task HandleAsync(object args);
FILE: src/windows/wslsettings/Activation/ProtocolActivationHandler.cs
class ProtocolActivationHandler (line 12) | public class ProtocolActivationHandler : ActivationHandler<LaunchActivat...
method ProtocolActivationHandler (line 14) | public ProtocolActivationHandler(INavigationService navigationService)...
method CanHandleInternal (line 18) | protected override bool CanHandleInternal(LaunchActivatedEventArgs args)
method ResolveWindowId (line 25) | private static IWindowService.WindowId ResolveWindowId(Uri uri)
method ResolvePageKey (line 44) | private static string ResolvePageKey(Uri uri, IWindowService.WindowId ...
method HandleInternalAsync (line 119) | protected async override Task HandleInternalAsync(LaunchActivatedEvent...
FILE: src/windows/wslsettings/App.xaml.cs
class App (line 18) | public partial class App : Application
method GetService (line 30) | public static T GetService<T>()
method App (line 47) | public App()
method App_UnhandledException (line 114) | private void App_UnhandledException(object sender, Microsoft.UI.Xaml.U...
method OnLaunched (line 120) | protected async override void OnLaunched(LaunchActivatedEventArgs args)
FILE: src/windows/wslsettings/Behaviors/NavigationViewHeaderBehavior.cs
class NavigationViewHeaderBehavior (line 12) | public class NavigationViewHeaderBehavior : Behavior<NavigationView>
method GetHeaderMode (line 32) | public static NavigationViewHeaderMode GetHeaderMode(Page item) => (Na...
method SetHeaderMode (line 34) | public static void SetHeaderMode(Page item, NavigationViewHeaderMode v...
method GetHeaderContext (line 39) | public static object GetHeaderContext(Page item) => item.GetValue(Head...
method SetHeaderContext (line 41) | public static void SetHeaderContext(Page item, object value) => item.S...
method GetHeaderTemplate (line 46) | public static DataTemplate GetHeaderTemplate(Page item) => (DataTempla...
method SetHeaderTemplate (line 48) | public static void SetHeaderTemplate(Page item, DataTemplate value) =>...
method OnAttached (line 53) | protected override void OnAttached()
method OnDetaching (line 63) | protected override void OnDetaching()
method OnNavigated (line 71) | private void OnNavigated(object sender, NavigationEventArgs e)
method UpdateHeader (line 82) | private void UpdateHeader()
method UpdateHeaderTemplate (line 116) | private void UpdateHeaderTemplate()
FILE: src/windows/wslsettings/Behaviors/NavigationViewHeaderMode.cs
type NavigationViewHeaderMode (line 5) | public enum NavigationViewHeaderMode
FILE: src/windows/wslsettings/Constants.cs
class Constants (line 7) | public class Constants
FILE: src/windows/wslsettings/Contracts/Services/IActivationService.cs
type IActivationService (line 5) | public interface IActivationService
method ActivateAsync (line 7) | Task ActivateAsync(object activationArgs);
FILE: src/windows/wslsettings/Contracts/Services/INavigationService.cs
type INavigationService (line 8) | public interface INavigationService
method NavigateTo (line 22) | bool NavigateTo(string pageKey, object? parameter = null, bool clearNa...
method GoBack (line 24) | bool GoBack();
FILE: src/windows/wslsettings/Contracts/Services/INavigationViewService.cs
type INavigationViewService (line 7) | public interface INavigationViewService
method Initialize (line 19) | void Initialize(NavigationView navigationView);
method UnregisterEvents (line 21) | void UnregisterEvents();
method GetSelectedItem (line 23) | NavigationViewItem? GetSelectedItem(Type pageType);
FILE: src/windows/wslsettings/Contracts/Services/IPageService.cs
type IPageService (line 5) | public interface IPageService
method GetPageType (line 7) | Type GetPageType(string key);
FILE: src/windows/wslsettings/Contracts/Services/IWindowService.cs
type IWindowService (line 5) | public interface IWindowService
type WindowId (line 7) | public enum WindowId
method CreateOrGetWindow (line 13) | WindowEx CreateOrGetWindow(WindowId windowId);
FILE: src/windows/wslsettings/Contracts/Services/IWslConfigService.cs
type IWslConfigService (line 5) | public interface IWslConfigService
method GetWslConfigSetting (line 7) | IWslConfigSetting GetWslConfigSetting(WslConfigEntry wslConfigEntry, b...
method SetWslConfigSetting (line 8) | uint SetWslConfigSetting(IWslConfigSetting setting);
type IWslConfigSetting (line 13) | public interface IWslConfigSetting
method SetValue (line 22) | uint SetValue(object? value);
method Equals (line 23) | bool Equals(object? obj);
FILE: src/windows/wslsettings/Contracts/ViewModels/INavigationAware.cs
type INavigationAware (line 5) | public interface INavigationAware
method OnNavigatedTo (line 7) | void OnNavigatedTo(object parameter);
method OnNavigatedFrom (line 9) | void OnNavigatedFrom();
FILE: src/windows/wslsettings/Controls/HyperlinkTextBlock.xaml.cs
class HyperlinkTextBlock (line 16) | public sealed partial class HyperlinkTextBlock : UserControl
method HyperlinkTextBlock (line 61) | public HyperlinkTextBlock()
FILE: src/windows/wslsettings/Controls/OOBEContent.xaml.cs
class OOBEContent (line 9) | public sealed partial class OOBEContent : UserControl
method OOBEContent (line 17) | public OOBEContent()
method UpdateHeroImageHeight (line 31) | private void UpdateHeroImageHeight()
method OnTextScaleFactorChanged (line 40) | private void OnTextScaleFactorChanged(UISettings sender, object args)
FILE: src/windows/wslsettings/Converters/BooleanToVisibilityConverter.cs
class BooleanToVisibilityConverter (line 8) | public sealed class BooleanToVisibilityConverter : IValueConverter
method Convert (line 10) | public object Convert(object value, Type targetType, object parameter,...
method ConvertBack (line 15) | public object ConvertBack(object value, Type targetType, object parame...
FILE: src/windows/wslsettings/Converters/MegabyteNumberConverter.cs
class MegabyteNumberConverter (line 5) | public sealed class MegabyteNumberConverter : Microsoft.UI.Xaml.Data.IVa...
method Convert (line 7) | public object? Convert(object value, Type targetType, object parameter...
method ConvertBack (line 17) | public object? ConvertBack(object value, Type targetType, object param...
FILE: src/windows/wslsettings/Converters/MegabyteStringConverter.cs
class MegabyteStringConverter (line 5) | public sealed class MegabyteStringConverter : Microsoft.UI.Xaml.Data.IVa...
method Convert (line 7) | public object? Convert(object value, Type targetType, object parameter...
method ConvertBack (line 17) | public object ConvertBack(object value, Type targetType, object parame...
FILE: src/windows/wslsettings/Converters/MillisecondsStringConverter.cs
class MillisecondsStringConverter (line 5) | public sealed class MillisecondsStringConverter : Microsoft.UI.Xaml.Data...
method Convert (line 7) | public object? Convert(object value, Type targetType, object parameter...
method ConvertBack (line 17) | public object ConvertBack(object value, Type targetType, object parame...
FILE: src/windows/wslsettings/Helpers/FrameExtensions.cs
class FrameExtensions (line 7) | public static class FrameExtensions
method GetPageViewModel (line 9) | public static object? GetPageViewModel(this Frame frame) => frame?.Con...
FILE: src/windows/wslsettings/Helpers/NavigationHelper.cs
class NavigationHelper (line 15) | public class NavigationHelper
method GetNavigateTo (line 17) | public static string GetNavigateTo(NavigationViewItem item) => (string...
method SetNavigateTo (line 19) | public static void SetNavigateTo(NavigationViewItem item, string value...
FILE: src/windows/wslsettings/Helpers/ResourceExtensions.cs
class ResourceExtensions (line 7) | public static class ResourceExtensions
method GetLocalized (line 11) | public static string GetLocalized(this string resourceKey) => _resourc...
FILE: src/windows/wslsettings/Helpers/RuntimeHelper.cs
class RuntimeHelper (line 15) | public class RuntimeHelper
method GetCurrentPackageFullName (line 17) | [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = t...
method PickSingleFileAsync (line 20) | public static Windows.Foundation.IAsyncOperation<Windows.Storage.Stora...
method TryMoveFocusPreviousControl (line 42) | public static void TryMoveFocusPreviousControl(Button? button)
method SetupSettingsExpanderFocusManagement (line 53) | public static void SetupSettingsExpanderFocusManagement(Microsoft.UI.X...
method SetupExpanderFocusManagementByName (line 74) | public static void SetupExpanderFocusManagementByName(Microsoft.UI.Xam...
FILE: src/windows/wslsettings/Helpers/TitleBarHelper.cs
class TitleBarHelper (line 14) | internal class TitleBarHelper
method GetActiveWindow (line 20) | [DllImport("user32.dll")]
method SendMessage (line 23) | [DllImport("user32.dll", CharSet = CharSet.Auto)]
method UpdateTitleBar (line 26) | public static void UpdateTitleBar(Window window, ElementTheme theme)
method ApplySystemThemeToCaptionButtons (line 87) | public static void ApplySystemThemeToCaptionButtons(Window window)
FILE: src/windows/wslsettings/LibWsl.cs
type WslConfigEntry (line 18) | public enum WslConfigEntry
type NetworkingConfiguration (line 49) | public enum NetworkingConfiguration
type MemoryReclaimMode (line 58) | public enum MemoryReclaimMode
class WslConfig (line 65) | public unsafe partial class WslConfig
type __Internal (line 67) | public partial struct __Internal
method __RecordNativeToManagedMapping (line 76) | internal static void __RecordNativeToManagedMapping(IntPtr native, glo...
method __TryGetNativeToManagedMapping (line 81) | internal static bool __TryGetNativeToManagedMapping(IntPtr native, out...
method __CreateInstance (line 89) | internal static WslConfig __CreateInstance(__IntPtr native, bool skipV...
method __GetOrCreateInstance (line 96) | internal static WslConfig __GetOrCreateInstance(__IntPtr native, bool ...
method __CreateInstance (line 108) | internal static WslConfig __CreateInstance(__Internal native, bool ski...
method __CopyValue (line 113) | private static void* __CopyValue(__Internal native)
method WslConfig (line 120) | private WslConfig(__Internal native, bool skipVTables = false)
method WslConfig (line 127) | protected WslConfig(void* native, bool skipVTables = false)
class WslConfigSetting (line 135) | public unsafe partial class WslConfigSetting : IDisposable
type __Internal (line 137) | [StructLayout(LayoutKind.Explicit, Size = 16)]
method __RecordNativeToManagedMapping (line 167) | internal static void __RecordNativeToManagedMapping(IntPtr native, glo...
method __TryGetNativeToManagedMapping (line 172) | internal static bool __TryGetNativeToManagedMapping(IntPtr native, out...
method __CreateInstance (line 181) | internal static WslConfigSetting __CreateInstance(__IntPtr native, boo...
method __GetOrCreateInstance (line 188) | internal static WslConfigSetting __GetOrCreateInstance(__IntPtr native...
method __CreateInstance (line 200) | internal static WslConfigSetting __CreateInstance(__Internal native, b...
method __CopyValue (line 205) | private static void* __CopyValue(__Internal native)
method WslConfigSetting (line 212) | private WslConfigSetting(__Internal native, bool skipVTables = false)
method WslConfigSetting (line 220) | protected WslConfigSetting(void* native, bool skipVTables = false)
method Dispose (line 227) | public void Dispose()
method DisposePartial (line 232) | partial void DisposePartial(bool disposing);
method Dispose (line 234) | internal protected virtual void Dispose(bool disposing, bool callNativ...
type __Internal (line 343) | public partial struct __Internal
method GetWslConfigFilePath (line 345) | [SuppressUnmanagedCodeSecurity, DllImport(@"..\libwsl.dll", EntryPoint...
method CreateWslConfig (line 348) | [SuppressUnmanagedCodeSecurity, DllImport(@"..\libwsl.dll", EntryPoint...
method FreeWslConfig (line 351) | [SuppressUnmanagedCodeSecurity, DllImport(@"..\libwsl.dll", EntryPoint...
method GetWslConfigSetting (line 354) | [SuppressUnmanagedCodeSecurity, DllImport(@"..\libwsl.dll", EntryPoint...
method SetWslConfigSetting (line 357) | [SuppressUnmanagedCodeSecurity, DllImport(@"..\libwsl.dll", EntryPoint...
method GetWslConfigFilePath (line 361) | public static string GetWslConfigFilePath()
method CreateWslConfig (line 367) | public static global::LibWsl.WslConfig CreateWslConfig(string wslConfigF...
method FreeWslConfig (line 376) | public static void FreeWslConfig(global::LibWsl.WslConfig wslConfig)
method GetWslConfigSetting (line 382) | public static global::LibWsl.WslConfigSetting GetWslConfigSetting(global...
FILE: src/windows/wslsettings/Services/ActivationService.cs
class ActivationService (line 9) | public class ActivationService : IActivationService
method ActivationService (line 14) | public ActivationService(ActivationHandler<LaunchActivatedEventArgs> d...
method ActivateAsync (line 20) | public async Task ActivateAsync(object activationArgs)
method HandleActivationAsync (line 32) | private async Task HandleActivationAsync(object activationArgs)
method InitializeAsync (line 47) | private async Task InitializeAsync()
method StartupAsync (line 52) | private async Task StartupAsync()
FILE: src/windows/wslsettings/Services/NavigationService.cs
class NavigationService (line 13) | public class NavigationService : INavigationService
method NavigationService (line 39) | public NavigationService(IPageService pageService)
method RegisterFrameEvents (line 44) | private void RegisterFrameEvents()
method UnregisterFrameEvents (line 52) | private void UnregisterFrameEvents()
method GoBack (line 60) | public bool GoBack()
method NavigateTo (line 77) | public bool NavigateTo(string pageKey, object? parameter = null, bool ...
method OnNavigated (line 101) | private void OnNavigated(object sender, NavigationEventArgs e)
FILE: src/windows/wslsettings/Services/NavigationViewService.cs
class NavigationViewService (line 9) | public class NavigationViewService : INavigationViewService
method NavigationViewService (line 21) | public NavigationViewService(INavigationService navigationService, IPa...
method Initialize (line 27) | [MemberNotNull(nameof(_navigationView))]
method UnregisterEvents (line 35) | public void UnregisterEvents()
method GetSelectedItem (line 44) | public NavigationViewItem? GetSelectedItem(Type pageType)
method OnBackRequested (line 54) | private void OnBackRequested(NavigationView sender, NavigationViewBack...
method OnItemInvoked (line 56) | private void OnItemInvoked(NavigationView sender, NavigationViewItemIn...
method GetSelectedItem (line 73) | private NavigationViewItem? GetSelectedItem(IEnumerable<object> menuIt...
method IsMenuItemForPageType (line 92) | private bool IsMenuItemForPageType(NavigationViewItem menuItem, Type s...
FILE: src/windows/wslsettings/Services/PageService.cs
class PageService (line 13) | public class PageService : IPageService
method PageService (line 17) | public PageService()
method GetPageType (line 37) | public Type GetPageType(string key)
method Configure (line 51) | private void Configure<VM, V>()
FILE: src/windows/wslsettings/Services/WindowService.cs
class WindowService (line 7) | public class WindowService : IWindowService
method WindowService (line 9) | public WindowService()
method CreateOrGetWindow (line 13) | public WindowEx CreateOrGetWindow(IWindowService.WindowId windowId)
FILE: src/windows/wslsettings/Services/WslConfigService.cs
class WslConfigService (line 8) | public class WslConfigService : IWslConfigService
method WslConfigService (line 15) | public WslConfigService()
method GetWslConfigSetting (line 38) | public IWslConfigSetting GetWslConfigSetting(WslConfigEntry wslConfigE...
method SetWslConfigSetting (line 49) | public uint SetWslConfigSetting(IWslConfigSetting wslConfigSetting)
method OnWslConfigFileChanged (line 81) | private void OnWslConfigFileChanged(object sender, FileSystemEventArgs e)
class WslConfigSettingManaged (line 95) | public partial class WslConfigSettingManaged : IWslConfigSetting
method WslConfigSettingManaged (line 97) | public WslConfigSettingManaged(WslConfigSetting wslConfigSetting)
method SetValue (line 117) | public uint SetValue(object? value)
method Equals (line 156) | public override bool Equals(object? value)
method GetHashCode (line 201) | public override int GetHashCode()
FILE: src/windows/wslsettings/ViewModels/OOBE/DistroManagementViewModel.cs
class DistroManagementViewModel (line 7) | public partial class DistroManagementViewModel : ObservableRecipient
method DistroManagementViewModel (line 9) | public DistroManagementViewModel()
FILE: src/windows/wslsettings/ViewModels/OOBE/DockerDesktopIntegrationViewModel.cs
class DockerDesktopIntegrationViewModel (line 7) | public partial class DockerDesktopIntegrationViewModel : ObservableRecip...
method DockerDesktopIntegrationViewModel (line 9) | public DockerDesktopIntegrationViewModel()
FILE: src/windows/wslsettings/ViewModels/OOBE/GPUAccelerationViewModel.cs
class GPUAccelerationViewModel (line 7) | public partial class GPUAccelerationViewModel : ObservableRecipient
method GPUAccelerationViewModel (line 9) | public GPUAccelerationViewModel()
FILE: src/windows/wslsettings/ViewModels/OOBE/GUIAppsViewModel.cs
class GUIAppsViewModel (line 7) | public partial class GUIAppsViewModel : ObservableRecipient
method GUIAppsViewModel (line 9) | public GUIAppsViewModel()
FILE: src/windows/wslsettings/ViewModels/OOBE/GeneralViewModel.cs
class GeneralViewModel (line 7) | public partial class GeneralViewModel : ObservableRecipient
method GeneralViewModel (line 9) | public GeneralViewModel()
FILE: src/windows/wslsettings/ViewModels/OOBE/NetworkingIntegrationViewModel.cs
class NetworkingIntegrationViewModel (line 7) | public partial class NetworkingIntegrationViewModel : ObservableRecipient
method NetworkingIntegrationViewModel (line 9) | public NetworkingIntegrationViewModel()
FILE: src/windows/wslsettings/ViewModels/OOBE/VSCodeIntegrationViewModel.cs
class VSCodeIntegrationViewModel (line 7) | public partial class VSCodeIntegrationViewModel : ObservableRecipient
method VSCodeIntegrationViewModel (line 9) | public VSCodeIntegrationViewModel()
FILE: src/windows/wslsettings/ViewModels/OOBE/VSIntegrationViewModel.cs
class VSIntegrationViewModel (line 7) | public partial class VSIntegrationViewModel : ObservableRecipient
method VSIntegrationViewModel (line 9) | public VSIntegrationViewModel()
FILE: src/windows/wslsettings/ViewModels/OOBE/WelcomeToUbuntuViewModel.cs
class WelcomeToUbuntuViewModel (line 7) | public partial class WelcomeToUbuntuViewModel : ObservableRecipient
method WelcomeToUbuntuViewModel (line 9) | public WelcomeToUbuntuViewModel()
FILE: src/windows/wslsettings/ViewModels/OOBE/WorkingAcrossFileSystemsViewModel.cs
class WorkingAcrossFileSystemsViewModel (line 7) | public partial class WorkingAcrossFileSystemsViewModel : ObservableRecip...
method WorkingAcrossFileSystemsViewModel (line 9) | public WorkingAcrossFileSystemsViewModel()
FILE: src/windows/wslsettings/ViewModels/Settings/AboutViewModel.cs
class AboutViewModel (line 8) | public partial class AboutViewModel : ObservableRecipient
method AboutViewModel (line 10) | public AboutViewModel()
FILE: src/windows/wslsettings/ViewModels/Settings/DeveloperViewModel.cs
class DeveloperViewModel (line 7) | public partial class DeveloperViewModel : WslConfigSettingViewModel
method DeveloperViewModel (line 15) | public DeveloperViewModel()
method InitializeConfigSettings (line 20) | override protected void InitializeConfigSettings()
FILE: src/windows/wslsettings/ViewModels/Settings/FileSystemViewModel.cs
class FileSystemViewModel (line 10) | public partial class FileSystemViewModel : WslConfigSettingViewModel
method FileSystemViewModel (line 16) | public FileSystemViewModel()
method InitializeConfigSettings (line 23) | override protected void InitializeConfigSettings()
method SetDefaultVHDSize_ResetEnabled (line 53) | public void SetDefaultVHDSize_ResetEnabled(string? value)
method DefaultVHDSize_ResetExecuted (line 71) | private void DefaultVHDSize_ResetExecuted(string? param)
FILE: src/windows/wslsettings/ViewModels/Settings/MemAndProcViewModel.cs
class MemAndProcViewModel (line 10) | public partial class MemAndProcViewModel : WslConfigSettingViewModel
method MemAndProcViewModel (line 23) | public MemAndProcViewModel()
method InitializeConfigSettings (line 32) | protected override void InitializeConfigSettings()
method SetProcCount_ResetEnabled (line 67) | public void SetProcCount_ResetEnabled(string? value)
method ProcCount_ResetExecuted (line 85) | private void ProcCount_ResetExecuted(string? param)
method SetMemorySize_ResetEnabled (line 114) | public void SetMemorySize_ResetEnabled(string? value)
method MemorySize_ResetExecuted (line 132) | private void MemorySize_ResetExecuted(string? param)
method SetSwapSize_ResetEnabled (line 161) | public void SetSwapSize_ResetEnabled(string? value)
method SwapSize_ResetExecuted (line 179) | private void SwapSize_ResetExecuted(string? param)
FILE: src/windows/wslsettings/ViewModels/Settings/NetworkingViewModel.cs
class NetworkingViewModel (line 12) | public partial class NetworkingViewModel : WslConfigSettingViewModel
method NetworkingViewModel (line 30) | public NetworkingViewModel()
method InitializeConfigSettings (line 46) | protected override void InitializeConfigSettings()
method IgnoredPorts_ResetExecuted (line 104) | private void IgnoredPorts_ResetExecuted(string? param)
method SetInitialAutoProxyTimeout_ResetEnabled (line 151) | public void SetInitialAutoProxyTimeout_ResetEnabled(string? value)
method InitialAutoProxyTimeout_ResetExecuted (line 169) | private void InitialAutoProxyTimeout_ResetExecuted(string? param)
FILE: src/windows/wslsettings/ViewModels/Settings/OptionalFeaturesViewModel.cs
class OptionalFeaturesViewModel (line 10) | public partial class OptionalFeaturesViewModel : WslConfigSettingViewModel
method OptionalFeaturesViewModel (line 20) | public OptionalFeaturesViewModel()
method InitializeConfigSettings (line 27) | protected override void InitializeConfigSettings()
method SetVMIdleTimeout_ResetEnabled (line 97) | public void SetVMIdleTimeout_ResetEnabled(string? value)
method VMIdleTimeout_ResetExecuted (line 117) | private void VMIdleTimeout_ResetExecuted(string? param)
FILE: src/windows/wslsettings/ViewModels/Settings/WslConfigSettingViewModel.cs
class WslConfigSettingViewModel (line 11) | abstract public partial class WslConfigSettingViewModel : ObservableReci...
method WslConfigSettingViewModel (line 15) | protected WslConfigSettingViewModel()
method OnConfigChanged (line 20) | public void OnConfigChanged()
method InitializeConfigSettings (line 29) | abstract protected void InitializeConfigSettings();
method ValidateInput (line 31) | protected bool ValidateInput(string? newValue, Regex regex, [CallerMem...
method Set (line 43) | protected void Set<T>(ref IWslConfigSetting wslConfigSetting, T newVal...
FILE: src/windows/wslsettings/ViewModels/ShellViewModel.cs
class ShellViewModel (line 9) | public partial class ShellViewModel : ObservableRecipient
method ShellViewModel (line 36) | public ShellViewModel(INavigationService navigationService, INavigatio...
method OnNavigated (line 43) | private void OnNavigated(object sender, NavigationEventArgs e)
FILE: src/windows/wslsettings/Views/OOBE/DistroManagementPage.xaml.cs
class DistroManagementPage (line 7) | public sealed partial class DistroManagementPage : Page
method DistroManagementPage (line 14) | public DistroManagementPage()
FILE: src/windows/wslsettings/Views/OOBE/DockerDesktopIntegrationPage.xaml.cs
class DockerDesktopIntegrationPage (line 7) | public sealed partial class DockerDesktopIntegrationPage : Page
method DockerDesktopIntegrationPage (line 14) | public DockerDesktopIntegrationPage()
FILE: src/windows/wslsettings/Views/OOBE/GPUAccelerationPage.xaml.cs
class GPUAccelerationPage (line 7) | public sealed partial class GPUAccelerationPage : Page
method GPUAccelerationPage (line 14) | public GPUAccelerationPage()
FILE: src/windows/wslsettings/Views/OOBE/GUIAppsPage.xaml.cs
class GUIAppsPage (line 7) | public sealed partial class GUIAppsPage : Page
method GUIAppsPage (line 14) | public GUIAppsPage()
FILE: src/windows/wslsettings/Views/OOBE/GeneralPage.xaml.cs
class GeneralPage (line 7) | public sealed partial class GeneralPage : Page
method GeneralPage (line 14) | public GeneralPage()
FILE: src/windows/wslsettings/Views/OOBE/NetworkingIntegrationPage.xaml.cs
class NetworkingIntegrationPage (line 7) | public sealed partial class NetworkingIntegrationPage : Page
method NetworkingIntegrationPage (line 14) | public NetworkingIntegrationPage()
FILE: src/windows/wslsettings/Views/OOBE/ShellPage.xaml.cs
class ShellPage (line 14) | public sealed partial class ShellPage : Page
method RegisterNavigationService (line 18) | private void RegisterNavigationService()
method ShellPage (line 30) | public ShellPage(ShellViewModel viewModel)
method OnLoaded (line 46) | private void OnLoaded(object sender, RoutedEventArgs e)
method OOBEWindow_Activated (line 54) | private void OOBEWindow_Activated(object sender, WindowActivatedEventA...
method NavigationViewControl_DisplayModeChanged (line 64) | private void NavigationViewControl_DisplayModeChanged(NavigationView s...
method PaneToggleBtn_Click (line 80) | private void PaneToggleBtn_Click(object sender, RoutedEventArgs e)
method NavigationViewControl_ItemInvoked (line 85) | private async void NavigationViewControl_ItemInvoked(NavigationView se...
method BuildKeyboardAccelerator (line 103) | private static KeyboardAccelerator BuildKeyboardAccelerator(VirtualKey...
method OnKeyboardAcceleratorInvoked (line 117) | private static void OnKeyboardAcceleratorInvoked(KeyboardAccelerator s...
FILE: src/windows/wslsettings/Views/OOBE/VSCodeIntegrationPage.xaml.cs
class VSCodeIntegrationPage (line 7) | public sealed partial class VSCodeIntegrationPage : Page
method VSCodeIntegrationPage (line 14) | public VSCodeIntegrationPage()
FILE: src/windows/wslsettings/Views/OOBE/VSIntegrationPage.xaml.cs
class VSIntegrationPage (line 7) | public sealed partial class VSIntegrationPage : Page
method VSIntegrationPage (line 14) | public VSIntegrationPage()
FILE: src/windows/wslsettings/Views/OOBE/WorkingAcrossFileSystemsPage.xaml.cs
class WorkingAcrossFileSystemsPage (line 7) | public sealed partial class WorkingAcrossFileSystemsPage : Page
method WorkingAcrossFileSystemsPage (line 14) | public WorkingAcrossFileSystemsPage()
FILE: src/windows/wslsettings/Views/Settings/AboutPage.xaml.cs
class AboutPage (line 8) | public sealed partial class AboutPage : Page
method AboutPage (line 15) | public AboutPage()
FILE: src/windows/wslsettings/Views/Settings/DeveloperPage.xaml.cs
class DeveloperPage (line 12) | public sealed partial class DeveloperPage : Page
method DeveloperPage (line 19) | public DeveloperPage()
method OnPageLoaded (line 34) | private void OnPageLoaded(object sender, Microsoft.UI.Xaml.RoutedEvent...
method OnNavigatedFrom (line 42) | override protected void OnNavigatedFrom(NavigationEventArgs e)
method CustomKernelPath_Click (line 47) | public async void CustomKernelPath_Click(object sender, RoutedEventArg...
method CustomKernelModulesPath_Click (line 57) | public async void CustomKernelModulesPath_Click(object sender, RoutedE...
method CustomSystemDistroPath_Click (line 67) | public async void CustomSystemDistroPath_Click(object sender, RoutedEv...
FILE: src/windows/wslsettings/Views/Settings/FileSystemPage.xaml.cs
class FileSystemPage (line 14) | public sealed partial class FileSystemPage : Page
method FileSystemPage (line 21) | public FileSystemPage()
method OnNavigatedFrom (line 36) | override protected void OnNavigatedFrom(NavigationEventArgs e)
method Settings_ResetButton_Click (line 41) | private void Settings_ResetButton_Click(object sender, Microsoft.UI.Xa...
method DefaultVHDSizeTextBox_TextChanged (line 51) | private void DefaultVHDSizeTextBox_TextChanged(object sender, TextChan...
method OnPageLoaded (line 62) | private void OnPageLoaded(object sender, Microsoft.UI.Xaml.RoutedEvent...
FILE: src/windows/wslsettings/Views/Settings/MemAndProcPage.xaml.cs
class MemAndProcPage (line 12) | public sealed partial class MemAndProcPage : Page
method MemAndProcPage (line 19) | public MemAndProcPage()
method OnPageLoaded (line 34) | private void OnPageLoaded(object sender, Microsoft.UI.Xaml.RoutedEvent...
method OnNavigatedFrom (line 43) | override protected void OnNavigatedFrom(NavigationEventArgs e)
method Settings_ResetButton_Click (line 48) | private void Settings_ResetButton_Click(object sender, Microsoft.UI.Xa...
method SwapFilePath_Click (line 58) | public async void SwapFilePath_Click(object sender, RoutedEventArgs e)
method ProcCountTextBox_TextChanged (line 68) | private void ProcCountTextBox_TextChanged(object sender, TextChangedEv...
method MemorySizeTextBox_TextChanged (line 79) | private void MemorySizeTextBox_TextChanged(object sender, TextChangedE...
method SwapSizeTextBox_TextChanged (line 90) | private void SwapSizeTextBox_TextChanged(object sender, TextChangedEve...
FILE: src/windows/wslsettings/Views/Settings/NetworkingPage.xaml.cs
class NetworkingPage (line 12) | public sealed partial class NetworkingPage : Page
method NetworkingPage (line 19) | public NetworkingPage()
method OnPageLoaded (line 34) | private void OnPageLoaded(object sender, Microsoft.UI.Xaml.RoutedEvent...
method OnNavigatedFrom (line 41) | override protected void OnNavigatedFrom(NavigationEventArgs e)
method Settings_ResetButton_Click (line 46) | private void Settings_ResetButton_Click(object sender, Microsoft.UI.Xa...
method InitialAutoProxyTimeoutTextBox_TextChanged (line 56) | private void InitialAutoProxyTimeoutTextBox_TextChanged(object sender,...
FILE: src/windows/wslsettings/Views/Settings/OptionalFeaturesPage.xaml.cs
class OptionalFeaturesPage (line 12) | public sealed partial class OptionalFeaturesPage : Page
method OptionalFeaturesPage (line 19) | public OptionalFeaturesPage()
method OnPageLoaded (line 34) | private void OnPageLoaded(object sender, Microsoft.UI.Xaml.RoutedEvent...
method OnNavigatedFrom (line 40) | override protected void OnNavigatedFrom(NavigationEventArgs e)
method Settings_ResetButton_Click (line 45) | private void Settings_ResetButton_Click(object sender, Microsoft.UI.Xa...
method VMIdleTimeoutTextBox_TextChanged (line 55) | private void VMIdleTimeoutTextBox_TextChanged(object sender, TextChang...
FILE: src/windows/wslsettings/Views/Settings/ShellPage.xaml.cs
class ShellPage (line 17) | public sealed partial class ShellPage : Page
method RegisterNavigationService (line 21) | private void RegisterNavigationService()
method ShellPage (line 33) | public ShellPage(ShellViewModel viewModel)
method OnLoaded (line 50) | private void OnLoaded(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
method MainWindow_Activated (line 58) | private void MainWindow_Activated(object sender, WindowActivatedEventA...
method NavigationViewControl_DisplayModeChanged (line 68) | private void NavigationViewControl_DisplayModeChanged(NavigationView s...
method PaneToggleBtn_Click (line 84) | private void PaneToggleBtn_Click(object sender, RoutedEventArgs e)
method NavigationViewControl_ItemInvoked (line 89) | private async void NavigationViewControl_ItemInvoked(NavigationView se...
method BuildKeyboardAccelerator (line 111) | private static KeyboardAccelerator BuildKeyboardAccelerator(VirtualKey...
method OnKeyboardAcceleratorInvoked (line 125) | private static void OnKeyboardAcceleratorInvoked(KeyboardAccelerator s...
method NavigationFrame_LostFocus (line 134) | private void NavigationFrame_LostFocus(object sender, RoutedEventArgs e)
FILE: src/windows/wslsettings/Windows/MainWindow.xaml.cs
class MainWindow (line 8) | public sealed partial class MainWindow : WindowEx
method MainWindow (line 14) | public MainWindow()
method Settings_ColorValuesChanged (line 28) | private void Settings_ColorValuesChanged(UISettings sender, object args)
method CloseHiddenWindow (line 37) | public void CloseHiddenWindow()
method Window_Closed (line 45) | private void Window_Closed(object sender, WindowEventArgs args)
FILE: src/windows/wslsettings/Windows/OOBEWindow.xaml.cs
class OOBEWindow (line 19) | public sealed partial class OOBEWindow : WindowEx, IDisposable
method GetDpiForWindow (line 21) | [DllImport("User32.dll")]
method OOBEWindow (line 34) | public OOBEWindow()
method Settings_ColorValuesChanged (line 72) | private void Settings_ColorValuesChanged(UISettings sender, object args)
method Settings_TextScaleFactorChanged (line 82) | private void Settings_TextScaleFactorChanged(UISettings sender, object...
method Window_SizeChanged (line 91) | private void Window_SizeChanged(object sender, WindowSizeChangedEventA...
method Window_Closed (line 102) | private void Window_Closed(object sender, WindowEventArgs args)
method ResizeWindow (line 109) | private void ResizeWindow()
method Dispose (line 126) | private void Dispose(bool disposing)
method Dispose (line 143) | public void Dispose()
method OnWindowActivated (line 150) | private void OnWindowActivated(object sender, WindowActivatedEventArgs...
method OnCloseKeyboardAcceleratorInvoked (line 165) | private void OnCloseKeyboardAcceleratorInvoked(KeyboardAccelerator sen...
FILE: test/linux/unit_tests/auxv.c
function AuxvTestEntry (line 69) | int AuxvTestEntry(int Argc, char* Argv[])
function AuxvGetAuxv (line 130) | int AuxvGetAuxv(PLXT_ARGS Args)
function AuxvGetAuxvChild (line 228) | int AuxvGetAuxvChild(void)
function AuxvAtExecfnCompile (line 271) | int AuxvAtExecfnCompile(char* Filename)
function AuxvAtExecfn (line 343) | int AuxvAtExecfn(PLXT_ARGS Args)
FILE: test/linux/unit_tests/binfmt.c
type LXT_BINFMT_REGISTRATION (line 206) | typedef struct _LXT_BINFMT_REGISTRATION
function BinFmtTestEntry (line 279) | int BinFmtTestEntry(int Argc, char* Argv[])
function BimFmtCleanup (line 325) | void BimFmtCleanup(void)
function BinFmtExtension (line 353) | int BinFmtExtension(PLXT_ARGS Args)
function BinFmtInvalidParam (line 535) | int BinFmtInvalidParam(PLXT_ARGS Args)
function BinFmtOffset (line 577) | int BinFmtOffset(PLXT_ARGS Args)
function BinFmtOptions (line 692) | int BinFmtOptions(PLXT_ARGS Args)
function BinFmtRoot (line 1026) | int BinFmtRoot(PLXT_ARGS Args)
function BinFmtRegister (line 1055) | int BinFmtRegister(PLXT_ARGS Args)
function BinFmtStatus (line 1177) | int BinFmtStatus(PLXT_ARGS Args)
function BinFmtInterpreterEntry (line 1293) | int BinFmtInterpreterEntry(PLXT_ARGS Args)
FILE: test/linux/unit_tests/brk.c
function BrkTestEntry (line 32) | int BrkTestEntry(int Argc, char* Argv[])
FILE: test/linux/unit_tests/cgroup.c
function CgroupTestEntry (line 101) | int CgroupTestEntry(int Argc, char* Argv[])
function CgroupTestBasicMount (line 144) | int CgroupTestBasicMount(PLXT_ARGS Args)
function CgroupTestMkdir (line 212) | int CgroupTestMkdir(PLXT_ARGS Args)
function CgroupTestThreads (line 319) | int CgroupTestThreads(PLXT_ARGS Args)
type CGROUP_TEST_PROCFS_ENTRY (line 390) | typedef struct _CGROUP_TEST_PROCFS_ENTRY
type CGROUP_TEST_PROCFS (line 398) | typedef struct _CGROUP_TEST_PROCFS
function CgroupTestReadProcfs (line 404) | int CgroupTestReadProcfs(PCGROUP_TEST_PROCFS Data)
type CGROUP_TEST_PROCFS_PID_ENTRY (line 465) | typedef struct _CGROUP_TEST_PROCFS_PID_ENTRY
type CGROUP_TEST_PROCFS_PID (line 472) | typedef struct _CGROUP_TEST_PROCFS_PID
function CgroupTestReadProcfsPid (line 478) | int CgroupTestReadProcfsPid(PCGROUP_TEST_PROCFS_PID Data)
function CgroupTestProcfs (line 531) | int CgroupTestProcfs(PLXT_ARGS Args)
function CgroupTestGetProcsFileIds (line 622) | int CgroupTestGetProcsFileIds(char* CgroupPath, pid_t* IdArray[], int* I...
function CgroupTestProcsFile (line 709) | int CgroupTestProcsFile(PLXT_ARGS Args)
function CgroupTestMountReuse (line 873) | int CgroupTestMountReuse(PLXT_ARGS Args)
function CgroupTestDevices (line 994) | int CgroupTestDevices(PLXT_ARGS Args)
FILE: test/linux/unit_tests/common.c
function LxtSocketEpoll (line 22) | int LxtSocketEpoll(int Descriptor, int Event, int Timeout)
type cmsghdr (line 173) | struct cmsghdr
type msghdr (line 173) | struct msghdr
type cmsghdr (line 173) | struct cmsghdr
type cmsghdr (line 202) | struct cmsghdr
type cmsghdr (line 219) | struct cmsghdr
function SocketGetSetBooleanSocketOption (line 271) | int SocketGetSetBooleanSocketOption(int Socket, int OptionLevel, int Opt...
function SocketStreamClientMsgWaitAll (line 511) | int SocketStreamClientMsgWaitAll(int ConnectedSocket)
function SocketStreamServerMsgWaitAll (line 574) | int SocketStreamServerMsgWaitAll(int AcceptedSocket)
FILE: test/linux/unit_tests/common.h
type cmsghdr (line 131) | struct cmsghdr
type msghdr (line 131) | struct msghdr
type cmsghdr (line 131) | struct cmsghdr
FILE: test/linux/unit_tests/dev_pt.c
type StressThreadArg (line 51) | typedef struct _StressThreadArg
function DevPtTestEntry (line 276) | int DevPtTestEntry(int Argc, char* Argv[])
function PtBasic (line 364) | int PtBasic(PLXT_ARGS Args)
function PtBasic2 (line 451) | int PtBasic2(PLXT_ARGS Args)
function PtBasic3 (line 536) | int PtBasic3(PLXT_ARGS Args)
function PtBasic4 (line 687) | int PtBasic4(PLXT_ARGS Args)
function PtBasic5 (line 765) | int PtBasic5(PLXT_ARGS Args)
function PtSessionNoTerminal (line 836) | int PtSessionNoTerminal(PLXT_ARGS Args)
function PtSessionBasic (line 928) | int PtSessionBasic(PLXT_ARGS Args)
function PtDisassociateTty (line 1015) | int PtDisassociateTty(PLXT_ARGS Args)
function PtGlibcForkPtyBasic (line 1196) | int PtGlibcForkPtyBasic(PLXT_ARGS Args)
function PtCheck1 (line 1320) | int PtCheck1(PLXT_ARGS Args)
function PtCheck2 (line 1472) | int PtCheck2(PLXT_ARGS Args)
function PtCheck3 (line 1603) | int PtCheck3(PLXT_ARGS Args)
function PtCheck4 (line 1703) | int PtCheck4(PLXT_ARGS Args)
function PtControlCharCheck (line 1850) | int PtControlCharCheck(PLXT_ARGS Args)
function PtControlCharCheck2 (line 1950) | int PtControlCharCheck2(PLXT_ARGS Args)
function PtControlCharCheck3 (line 2052) | int PtControlCharCheck3(PLXT_ARGS Args)
function PtControlCharCheck4 (line 2155) | int PtControlCharCheck4(PLXT_ARGS Args)
function PtControlCharCheck5 (line 2258) | int PtControlCharCheck5(PLXT_ARGS Args)
function PtControlCharCheck6 (line 2335) | int PtControlCharCheck6(PLXT_ARGS Args)
function PtEmbeddedNullReadWrite (line 2415) | int PtEmbeddedNullReadWrite(PLXT_ARGS Args)
function PtEraseCheck (line 2521) | int PtEraseCheck(PLXT_ARGS Args)
function PtEraseCheck2 (line 2682) | int PtEraseCheck2(PLXT_ARGS Args)
function PtEraseCheck3 (line 2769) | int PtEraseCheck3(PLXT_ARGS Args)
function PtEraseCheck4 (line 2856) | int PtEraseCheck4(PLXT_ARGS Args)
function PtLateOpen1 (line 3016) | int PtLateOpen1(PLXT_ARGS Args)
function PtLateOpen2 (line 3092) | int PtLateOpen2(PLXT_ARGS Args)
function PtLineDiscipline (line 3162) | int PtLineDiscipline(PLXT_ARGS Args)
function PtLineBreakCheck (line 3241) | int PtLineBreakCheck(PLXT_ARGS Args)
function PtLineBreakCheck2 (line 3332) | int PtLineBreakCheck2(PLXT_ARGS Args)
function PtLineBreakCheck3 (line 3425) | int PtLineBreakCheck3(PLXT_ARGS Args)
function PtLineBreakCheck4 (line 3518) | int PtLineBreakCheck4(PLXT_ARGS Args)
function PtLineBreakCheck5 (line 3625) | int PtLineBreakCheck5(PLXT_ARGS Args)
function PtLineBreakCheck6 (line 3736) | int PtLineBreakCheck6(PLXT_ARGS Args)
function PtLineBreakCheck7 (line 3835) | int PtLineBreakCheck7(PLXT_ARGS Args)
function PtLineBreakCheck8 (line 3951) | int PtLineBreakCheck8(PLXT_ARGS Args)
function PtLineBreakCheck9 (line 4052) | int PtLineBreakCheck9(PLXT_ARGS Args)
function PtLineBreakCheck10 (line 4161) | int PtLineBreakCheck10(PLXT_ARGS Args)
function PtMasterFillBuffer (line 4268) | int PtMasterFillBuffer(PLXT_ARGS Args)
function PtMasterHangup1 (line 4598) | int PtMasterHangup1(PLXT_ARGS Args)
function PtMasterHangup2 (line 4695) | int PtMasterHangup2(PLXT_ARGS Args)
function PtMasterHangup3 (line 4834) | int PtMasterHangup3(PLXT_ARGS Args)
function PtMasterHangup4 (line 4923) | int PtMasterHangup4(PLXT_ARGS Args)
function PtMoreThanOne (line 5011) | int PtMoreThanOne(PLXT_ARGS Args)
function PtMultiMessageReadWrite (line 5132) | int PtMultiMessageReadWrite(PLXT_ARGS Args)
function PtReadNoSub1 (line 5356) | int PtReadNoSub1(PLXT_ARGS Args)
function PtReadNoSub2 (line 5423) | int PtReadNoSub2(PLXT_ARGS Args)
function PtReadNoSub3 (line 5492) | int PtReadNoSub3(PLXT_ARGS Args)
function PtStressIo (line 5601) | int PtStressIo(PLXT_ARGS Args)
function PtUTF8Basic (line 5746) | int PtUTF8Basic(PLXT_ARGS Args)
function PtUTF8Basic2 (line 5854) | int PtUTF8Basic2(PLXT_ARGS Args)
function PtUTF8Basic3 (line 5980) | int PtUTF8Basic3(PLXT_ARGS Args)
function PtUTF8Basic4 (line 6127) | int PtUTF8Basic4(PLXT_ARGS Args)
function PtUTF8Basic5 (line 6264) | int PtUTF8Basic5(PLXT_ARGS Args)
function PtUTF8Basic6 (line 6409) | int PtUTF8Basic6(PLXT_ARGS Args)
function PtUTF8Basic7 (line 6561) | int PtUTF8Basic7(PLXT_ARGS Args)
function PtUTF8Basic8 (line 6720) | int PtUTF8Basic8(PLXT_ARGS Args)
function PtUTF8Malformed (line 6884) | int PtUTF8Malformed(PLXT_ARGS Args)
function PtUTF8Malformed2 (line 7051) | int PtUTF8Malformed2(PLXT_ARGS Args)
function PtUTF8Malformed3 (line 7218) | int PtUTF8Malformed3(PLXT_ARGS Args)
function PtUTF8Malformed4 (line 7388) | int PtUTF8Malformed4(PLXT_ARGS Args)
function PtWriteNoSub1 (line 7555) | int PtWriteNoSub1(PLXT_ARGS Args)
function PtWriteNoSub2 (line 7622) | int PtWriteNoSub2(PLXT_ARGS Args)
function PtWriteToSubReadFromMaster1 (line 7699) | int PtWriteToSubReadFromMaster1(PLXT_ARGS Args)
function PtWindowSizeCheck (line 7835) | int PtWindowSizeCheck(PLXT_ARGS Args)
function TestFun (line 7933) | void TestFun(void)
FILE: test/linux/unit_tests/dev_pt_2.c
type PT_THREAD_PARAMETERS (line 29) | typedef struct _PT_THREAD_PARAMETERS
function DevPtTwoTestEntry (line 187) | int DevPtTwoTestEntry(int Argc, char* Argv[])
function PtBackgroundBasic (line 222) | int PtBackgroundBasic(PLXT_ARGS Args)
function PtBackgroundBlockedSignals (line 316) | int PtBackgroundBlockedSignals(PLXT_ARGS Args)
function PtBackgroundSwitchToForeground (line 381) | int PtBackgroundSwitchToForeground(PLXT_ARGS Args)
function PtBackgroundSwitchToForegroundWorker (line 416) | int PtBackgroundSwitchToForegroundWorker(bool UseMasterEndpoint)
function PtBackgroundDisassociateTty1 (line 507) | int PtBackgroundDisassociateTty1(PLXT_ARGS Args)
function PtBackgroundDisassociateTty2 (line 636) | int PtBackgroundDisassociateTty2(PLXT_ARGS Args)
function PtBackgroundDisassociateTty3 (line 788) | int PtBackgroundDisassociateTty3(PLXT_ARGS Args)
function PtBackgroundDisassociateTty4 (line 1015) | int PtBackgroundDisassociateTty4(PLXT_ARGS Args)
function PtBackgroundDisassociateTty5 (line 1246) | int PtBackgroundDisassociateTty5(PLXT_ARGS Args)
function PtBackgroundDisassociateTty6 (line 1489) | int PtBackgroundDisassociateTty6(PLXT_ARGS Args)
function PtBufferTerminalFill (line 1741) | int PtBufferTerminalFill(PLXT_ARGS Args)
function PtControllingTerminalForeground (line 1874) | int PtControllingTerminalForeground(PLXT_ARGS Args)
function PtControllingTerminalForeground2 (line 2071) | int PtControllingTerminalForeground2(PLXT_ARGS Args)
function PtControllingTerminalForeground3 (line 2274) | int PtControllingTerminalForeground3(PLXT_ARGS Args)
function PtControllingTerminalForeground4 (line 2485) | int PtControllingTerminalForeground4(PLXT_ARGS Args)
function PtControllingTerminalForeground5 (line 2693) | int PtControllingTerminalForeground5(PLXT_ARGS Args)
function PtControllingTerminalForeground6 (line 2906) | int PtControllingTerminalForeground6(PLXT_ARGS Args)
function PtControllingTerminalForeground7 (line 3129) | int PtControllingTerminalForeground7(PLXT_ARGS Args)
function PtMountBasic (line 3349) | int PtMountBasic(PLXT_ARGS Args)
function PtPacketBasic1 (line 3503) | int PtPacketBasic1(PLXT_ARGS Args)
function PtPacketBasic2 (line 3604) | int PtPacketBasic2(PLXT_ARGS Args)
function PtPacketBasic3 (line 3687) | int PtPacketBasic3(PLXT_ARGS Args)
function PtPacketBasic4 (line 3811) | int PtPacketBasic4(PLXT_ARGS Args)
function PtPacketToggleMode1 (line 3914) | int PtPacketToggleMode1(PLXT_ARGS Args)
function PtPacketToggleMode2 (line 4010) | int PtPacketToggleMode2(PLXT_ARGS Args)
function PtPacketToggleMode3 (line 4107) | int PtPacketToggleMode3(PLXT_ARGS Args)
function PtPacketToggleMode4 (line 4264) | int PtPacketToggleMode4(PLXT_ARGS Args)
function PtPacketToggleMode5 (line 4356) | int PtPacketToggleMode5(PLXT_ARGS Args)
function PtPacketToggleMode6 (line 4459) | int PtPacketToggleMode6(PLXT_ARGS Args)
function PtPacketToggleMode7 (line 4565) | int PtPacketToggleMode7(PLXT_ARGS Args)
function PtPacketFlushRead1 (line 4668) | int PtPacketFlushRead1(PLXT_ARGS Args)
function PtPacketFlushRead2 (line 4763) | int PtPacketFlushRead2(PLXT_ARGS Args)
function PtPacketFlushRead3 (line 4881) | int PtPacketFlushRead3(PLXT_ARGS Args)
function PtPacketFlushWrite1 (line 4972) | int PtPacketFlushWrite1(PLXT_ARGS Args)
function PtPacketFlushWrite2 (line 5067) | int PtPacketFlushWrite2(PLXT_ARGS Args)
function PtPacketFlushReadWrite1 (line 5184) | int PtPacketFlushReadWrite1(PLXT_ARGS Args)
function PtPacketFlushReadWrite2 (line 5280) | int PtPacketFlushReadWrite2(PLXT_ARGS Args)
function PtPacketFlushReadWrite3 (line 5398) | int PtPacketFlushReadWrite3(PLXT_ARGS Args)
function PtPacketFlushReadWrite4 (line 5515) | int PtPacketFlushReadWrite4(PLXT_ARGS Args)
function PtPacketFlushReadWrite5 (line 5641) | int PtPacketFlushReadWrite5(PLXT_ARGS Args)
function PtPacketHangup (line 5764) | int PtPacketHangup(PLXT_ARGS Args)
function PtPacketControlCharCheck1 (line 5861) | int PtPacketControlCharCheck1(PLXT_ARGS Args)
function PtPacketControlCharCheck2 (line 5990) | int PtPacketControlCharCheck2(PLXT_ARGS Args)
function PtPacketControlCharCheck3 (line 6180) | int PtPacketControlCharCheck3(PLXT_ARGS Args)
function PtPacketToggleWithControlByte (line 6398) | int PtPacketToggleWithControlByte(PLXT_ARGS Args)
function PtSessionBasicMaster (line 6557) | int PtSessionBasicMaster(PLXT_ARGS Args)
function PtSuspendOutput1 (line 6715) | int PtSuspendOutput1(PLXT_ARGS Args)
function PtSuspendOutput2 (line 6856) | int PtSuspendOutput2(PLXT_ARGS Args)
function PtSuspendOutput3 (line 7020) | int PtSuspendOutput3(PLXT_ARGS Args)
function PtSuspendOutput4 (line 7171) | int PtSuspendOutput4(PLXT_ARGS Args)
function PtSuspendOutput5 (line 7326) | int PtSuspendOutput5(PLXT_ARGS Args)
function PtSuspendOutput6 (line 7496) | int PtSuspendOutput6(PLXT_ARGS Args)
function PtSuspendOutput7 (line 7662) | int PtSuspendOutput7(PLXT_ARGS Args)
function PtSuspendOutput8 (line 7825) | int PtSuspendOutput8(PLXT_ARGS Args)
function PtSuspendOutput9 (line 7973) | int PtSuspendOutput9(PLXT_ARGS Args)
function PtSuspendOutput10 (line 8088) | int PtSuspendOutput10(PLXT_ARGS Args)
function PtSuspendOutput11 (line 8184) | int PtSuspendOutput11(PLXT_ARGS Args)
function PtSuspendOutput12 (line 8373) | int PtSuspendOutput12(PLXT_ARGS Args)
function PtSuspendOutput13 (line 8543) | int PtSuspendOutput13(PLXT_ARGS Args)
function PtSuspendOutput14 (line 8689) | int PtSuspendOutput14(PLXT_ARGS Args)
function PtSuspendOutput15 (line 8923) | int PtSuspendOutput15(PLXT_ARGS Args)
function PtSuspendOutput16 (line 9180) | int PtSuspendOutput16(PLXT_ARGS Args)
FILE: test/linux/unit_tests/dev_pt_common.c
function DumpBuffer (line 20) | void DumpBuffer(const char Data[], size_t DataSize)
function GetPtSerialNumFromDeviceString (line 69) | int GetPtSerialNumFromDeviceString(const char PtsNameString[])
function GetRandomMessage (line 111) | int GetRandomMessage(char Message[], size_t MessageSize, bool CompleteMe...
function OpenMasterSubordinate (line 167) | int OpenMasterSubordinate(int* PtmFd, int* PtsFd, char* PtsDevName, int*...
function pid_t (line 250) | pid_t ForkPty(int* PtmFdOut, int* PtsFdOut)
function ForkPtyBackground (line 277) | int ForkPtyBackground(int* PtmFdOut, int* PtsFdOut, pid_t* ForegroundIdOut)
function pid_t (line 361) | pid_t ForkPtyCommon(int* PtmFdOut, int* PtsFdOut, bool UseMasterEndpoint)
function pid_t (line 450) | pid_t ForkPtyMaster(int* PtmFdOut, int* PtsFdOut)
function RawInit (line 477) | int RawInit(int Fd)
function SimpleReadWriteCheck (line 529) | int SimpleReadWriteCheck(int PtmFd, int PtsFd)
function SimpleReadWriteCheckEx (line 561) | int SimpleReadWriteCheckEx(int PtmFd, int PtsFd, SIMPLE_READ_WRITE_MODE ...
function TerminalSettingsGet (line 799) | int TerminalSettingsGet(int Fd, cc_t* ControlArrayOut, tcflag_t* Control...
function TerminalSettingsGetControlArray (line 873) | int TerminalSettingsGetControlArray(int Fd, cc_t* ControlArrayOut)
function TerminalSettingsGetControlFlags (line 899) | int TerminalSettingsGetControlFlags(int Fd, tcflag_t* ControlFlagsOut)
function TerminalSettingsGetInputFlags (line 924) | int TerminalSettingsGetInputFlags(int Fd, tcflag_t* InputFlagsOut)
function TerminalSettingsGetLocalFlags (line 949) | int TerminalSettingsGetLocalFlags(int Fd, tcflag_t* LocalFlagsOut)
function TerminalSettingsGetOutputFlags (line 974) | int TerminalSettingsGetOutputFlags(int Fd, tcflag_t* OutputFlagsOut)
function TerminalSettingsSet (line 999) | int TerminalSettingsSet(int Fd, cc_t* ControlArray, tcflag_t ControlFlag...
function TerminalSettingsSetControlArray (line 1041) | int TerminalSettingsSetControlArray(int Fd, cc_t* ControlArray)
function TerminalSettingsSetControlFlags (line 1078) | int TerminalSettingsSetControlFlags(int Fd, tcflag_t ControlFlags)
function TerminalSettingsSetInputFlags (line 1115) | int TerminalSettingsSetInputFlags(int Fd, tcflag_t InputFlags)
function TerminalSettingsSetLocalFlags (line 1152) | int TerminalSettingsSetLocalFlags(int Fd, tcflag_t LocalFlags)
function TerminalSettingsSetOutputFlags (line 1189) | int TerminalSettingsSetOutputFlags(int Fd, tcflag_t OutputFlags)
function WriteReadFdCommon (line 1226) | int WriteReadFdCommon(int WriteFd, size_t WriteSizes[], size_t NumWriteS...
FILE: test/linux/unit_tests/dev_pt_common.h
type SIMPLE_READ_WRITE_MODE (line 85) | typedef enum _SIMPLE_READ_WRITE_MODE
FILE: test/linux/unit_tests/drvfs.c
function DrvfsTestEntry (line 391) | int DrvfsTestEntry(int Argc, char* Argv[])
function DrvFsCheckMode (line 415) | int DrvFsCheckMode(const char* Filename, mode_t ExpectedMode)
function DrvFsCheckStat (line 448) | int DrvFsCheckStat(const char* Filename, uid_t ExpectedUid, gid_t Expect...
function DrvFsParseArgs (line 490) | int DrvFsParseArgs(int Argc, char* Argv[], LXT_ARGS* Args)
function DrvFsTestAccess (line 636) | int DrvFsTestAccess(PLXT_ARGS Args)
function DrvFsTestBadMetadata (line 880) | int DrvFsTestBadMetadata(PLXT_ARGS Args)
function DrvFsTestBasic (line 953) | int DrvFsTestBasic(PLXT_ARGS Args)
function DrvFsTestBlockCount (line 1128) | int DrvFsTestBlockCount(PLXT_ARGS Args)
function DrvFsTestCaseSensitivity (line 1223) | int DrvFsTestCaseSensitivity(PLXT_ARGS Args)
function DrvFsTestCaseSensitivityRoot (line 1287) | int DrvFsTestCaseSensitivityRoot(PLXT_ARGS Args)
function DrvFsTestDeleteCurrentWorkingDirectory (line 1374) | int DrvFsTestDeleteCurrentWorkingDirectory(PLXT_ARGS Args)
function DrvFsTestDeleteLoop (line 1403) | int DrvFsTestDeleteLoop(PLXT_ARGS Args)
function DrvFsTestDeleteOpenFile (line 1431) | int DrvFsTestDeleteOpenFile(PLXT_ARGS Args)
function DrvFsTestEscapedNames (line 1459) | int DrvFsTestEscapedNames(PLXT_ARGS Args)
function DrvFsTestExecve (line 1582) | int DrvFsTestExecve(PLXT_ARGS Args)
function DrvFsTestFatCaseInsensitive (line 1652) | int DrvFsTestFatCaseInsensitive(PLXT_ARGS Args)
function DrvFsTestFatJunction (line 1771) | int DrvFsTestFatJunction(PLXT_ARGS Args)
function DrvFsTestFatUnsupported (line 1822) | int DrvFsTestFatUnsupported(PLXT_ARGS Args)
function DrvFsTestFatUtimensat (line 1845) | int DrvFsTestFatUtimensat(PLXT_ARGS Args)
function DrvFsTestFatWslPath (line 1868) | int DrvFsTestFatWslPath(PLXT_ARGS Args)
function DrvFsTestFstat (line 1909) | int DrvFsTestFstat(PLXT_ARGS Args)
function DrvFsTestStatx (line 2021) | int DrvFsTestStatx(PLXT_ARGS Args)
function DrvFsTestGetDents64Alignment (line 2195) | int DrvFsTestGetDents64Alignment(PLXT_ARGS Args)
function DrvFsTestGetDentsAlignment (line 2224) | int DrvFsTestGetDentsAlignment(PLXT_ARGS Args)
function DrvFsTestHardLinks (line 2253) | int DrvFsTestHardLinks(PLXT_ARGS Args)
function DrvFsTestHiddenLxFsDirs (line 2294) | int DrvFsTestHiddenLxFsDirs(PLXT_ARGS Args)
function DrvFsTestHiddenLxFsDirsHelper (line 2382) | int DrvFsTestHiddenLxFsDirsHelper(const char* Child, BOOLEAN DirectChild)
function DrvFsTestInotifyBasic (line 2458) | int DrvFsTestInotifyBasic(PLXT_ARGS Args)
function DrvFsTestInotifyEpoll (line 2482) | int DrvFsTestInotifyEpoll(PLXT_ARGS Args)
function DrvFsTestInotifyPosixUnlinkRename (line 2499) | int DrvFsTestInotifyPosixUnlinkRename(PLXT_ARGS Args)
function DrvFsTestInotifyStressUnlinkRename (line 2506) | int DrvFsTestInotifyStressUnlinkRename(PLXT_ARGS Args)
function DrvFsTestInotifyUnmountBind (line 2667) | int DrvFsTestInotifyUnmountBind(PLXT_ARGS Args)
function DrvFsTestLookupPath (line 2674) | int DrvFsTestLookupPath(PLXT_ARGS Args)
function DrvFsTestMetadata (line 2792) | int DrvFsTestMetadata(PLXT_ARGS Args)
function DrvFsTestReFsWslPath (line 2984) | int DrvFsTestReFsWslPath(PLXT_ARGS Args)
function DrvFsTestRename (line 3025) | int DrvFsTestRename(PLXT_ARGS Args)
function DrvFsTestRenameAt (line 3228) | int DrvFsTestRenameAt(PLXT_ARGS Args)
function DrvFsTestRenameDir (line 3295) | int DrvFsTestRenameDir(PLXT_ARGS Args)
function DrvFsTestReopenUnlinked (line 3323) | int DrvFsTestReopenUnlinked(PLXT_ARGS Args)
function DrvFsTestReparse (line 3398) | int DrvFsTestReparse(PLXT_ARGS Args)
function DrvFsTestSeek (line 3684) | int DrvFsTestSeek(PLXT_ARGS Args)
function DrvFsTestSeekHelper (line 3770) | int DrvFsTestSeekHelper(int Fd, off_t Offset, int Whence, off_t Expected...
function DrvFsTestDirSeek (line 3812) | int DrvFsTestDirSeek(PLXT_ARGS Args)
function DrvFsTestSetup (line 3839) | int DrvFsTestSetup(PLXT_ARGS Args, int TestMode)
function DrvFsTestSmbUtimensat (line 3993) | int DrvFsTestSmbUtimensat(PLXT_ARGS Args)
function DrvFsTestSmbUnsupported (line 4016) | int DrvFsTestSmbUnsupported(PLXT_ARGS Args)
function DrvFsTestSmbWslPath (line 4039) | int DrvFsTestSmbWslPath(PLXT_ARGS Args)
function DrvFsTestSymlink (line 4079) | int DrvFsTestSymlink(PLXT_ARGS Args)
function DrvFsTestSymlinkHelper (line 4223) | int DrvFsTestSymlinkHelper(char* Target, char* Path)
function DrvFsTestUnsupportedCommon (line 4259) | int DrvFsTestUnsupportedCommon(int TestMode)
function DrvFsTestUtimensat (line 4307) | int DrvFsTestUtimensat(PLXT_ARGS Args)
function DrvFsTestUtimensatCommon (line 4330) | int DrvFsTestUtimensatCommon(int Flags)
function DrvFsTestWritev (line 4361) | int DrvFsTestWritev(PLXT_ARGS Args)
FILE: test/linux/unit_tests/dup.c
function DupTestEntry (line 46) | int DupTestEntry(int Argc, char* Argv[])
function Dup0 (line 79) | int Dup0(PLXT_ARGS Args)
function Dup1 (line 141) | int Dup1(PLXT_ARGS Args)
function Dup2 (line 261) | int Dup2(PLXT_ARGS Args)
FILE: test/linux/unit_tests/epoll.c
type EPOLL_DUP2_CONTEXT (line 39) | typedef struct _EPOLL_DUP2_CONTEXT
function EpollTestEntry (line 91) | int EpollTestEntry(int Argc, char* Argv[])
function EpollBasic (line 115) | int EpollBasic(PLXT_ARGS Args)
function EpollBasicVariation (line 148) | int EpollBasicVariation(unsigned short ReadFlags, unsigned short WriteFl...
function EpollCreateClientSocket (line 246) | int EpollCreateClientSocket(void)
function EpollCreateClientUnixSocket (line 301) | int EpollCreateClientUnixSocket(int SocketType)
function EpollCreateListenSocket (line 355) | int EpollCreateListenSocket(void)
function EpollCreateListenUnixSocket (line 423) | int EpollCreateListenUnixSocket(int SocketType)
function EpollHandleClientAccept (line 489) | int EpollHandleClientAccept(int Socket)
function EpollSocketReadTest (line 524) | int EpollSocketReadTest(PLXT_ARGS Args)
function EpollHangupTestSimple (line 764) | int EpollHangupTestSimple(PLXT_ARGS Args)
function EpollSocketAcceptTest (line 1003) | int EpollSocketAcceptTest(PLXT_ARGS Args)
function EpollVariation0 (line 1336) | int EpollVariation0(PLXT_ARGS Args)
type READD_TEST_DATA (line 1625) | typedef struct _READD_TEST_DATA
function EpollReAddTestClone (line 1633) | static int EpollReAddTestClone(void* Parameter)
function EpollAddTest (line 1663) | int EpollAddTest(PLXT_ARGS Args)
function EpollDeleteTest (line 1787) | int EpollDeleteTest(PLXT_ARGS Args)
function EpollModifyWhilePollingTest (line 1968) | int EpollModifyWhilePollingTest(PLXT_ARGS Args)
function EpollModTest (line 2090) | int EpollModTest(PLXT_ARGS Args)
function EpollPhantomEventsTest (line 2201) | int EpollPhantomEventsTest(PLXT_ARGS Args)
function PPollInvalidArgument (line 2319) | int PPollInvalidArgument(PLXT_ARGS Args)
function EpollUnalignedTest (line 2353) | int EpollUnalignedTest(PLXT_ARGS Args)
function EpollDeleteCloseFdLoop (line 2387) | int EpollDeleteCloseFdLoop(PLXT_ARGS Args)
type epoll_event (line 2605) | struct epoll_event
function EpollDup2FdLoop (line 2651) | int EpollDup2FdLoop(PLXT_ARGS Args)
function EpollRelatedFileStress (line 2748) | int EpollRelatedFileStress(PLXT_ARGS Args)
function EpollRecursionTest (line 2874) | int EpollRecursionTest(PLXT_ARGS Args)
function EpollRecursionLimitTest (line 3183) | int EpollRecursionLimitTest(PLXT_ARGS Args)
FILE: test/linux/unit_tests/eventfd.c
function EventfdTestEntry (line 34) | int EventfdTestEntry(int Argc, char* Argv[])
function EventFdVariationReadWrite (line 54) | int EventFdVariationReadWrite(PLXT_ARGS Args)
FILE: test/linux/unit_tests/execve.c
function ExecveTestEntry (line 55) | int ExecveTestEntry(int Argc, char* Argv[], char** Envp)
function ExecveExecValidate (line 111) | int ExecveExecValidate(char* Path)
function ExecveValidate (line 140) | int ExecveValidate(int ExpectedPid)
function ExecveVariationArguments (line 170) | int ExecveVariationArguments(PLXT_ARGS Args)
function ExecveVariationSingle (line 426) | int ExecveVariationSingle(PLXT_ARGS Args)
function ExecveVariationMultipleWithThreads (line 462) | int ExecveVariationMultipleWithThreads(PLXT_ARGS Args)
function ExecveWaitForChild (line 562) | int ExecveWaitForChild(void)
FILE: test/linux/unit_tests/flock.c
function FlockTestEntry (line 40) | int FlockTestEntry(int Argc, char* Argv[])
function FnctlLockingVariation0 (line 58) | int FnctlLockingVariation0(PLXT_ARGS Args)
function FlockVariation0 (line 182) | int FlockVariation0(PLXT_ARGS Args)
FILE: test/linux/unit_tests/fork.c
function ForkTestEntry (line 103) | int ForkTestEntry(int Argc, char* Argv[])
function my_set_tid_address (line 126) | long my_set_tid_address(int* tid)
function my_futex (line 132) | int my_futex(int* uaddr, int op, int val, const struct timespec* timeout...
function my_set_robust_list (line 138) | int my_set_robust_list(struct robust_list_head* head, size_t len)
function my_get_robust_list (line 144) | int my_get_robust_list(int pid, struct robust_list_head** head_ptr, size...
function mode_t (line 150) | mode_t my_umask(mode_t mask)
function SetTidAddress (line 178) | int SetTidAddress(PLXT_ARGS Args)
function ForkPids (line 297) | int ForkPids(PLXT_ARGS Args)
function ExecvFailure (line 393) | int ExecvFailure(PLXT_ARGS Args)
function RobustFutex (line 417) | int RobustFutex(PLXT_ARGS Args)
function CloneFs (line 473) | int CloneFs(PLXT_ARGS Args)
function CloneInvalidFlags (line 525) | int CloneInvalidFlags(PLXT_ARGS Args)
type CloneThreadArgs (line 554) | struct CloneThreadArgs
function CloneThreadEntry (line 561) | int CloneThreadEntry(void* Argument)
function CloneThread (line 590) | int CloneThread(PLXT_ARGS Args)
function VForkTestBasicChild (line 678) | int VForkTestBasicChild(void* Param)
function VForkTestBasic (line 685) | int VForkTestBasic(PLXT_ARGS Args)
function VForkTest (line 736) | int VForkTest(PLXT_ARGS Args)
type CloneFlagArgs (line 929) | struct CloneFlagArgs
function CloneFlagEntry (line 954) | int CloneFlagEntry(void* Arg)
function CloneTestFlags (line 965) | int CloneTestFlags(PLXT_ARGS Args)
function CloneTestSignalEntry (line 1067) | int CloneTestSignalEntry(void* Arg)
function CloneTestSignalHandler (line 1080) | void CloneTestSignalHandler(int Signal, siginfo_t* Info, void* Extra)
function CloneTestSignalParent (line 1086) | int CloneTestSignalParent(PLXT_ARGS Args)
FILE: test/linux/unit_tests/fscommon.c
function FsCommonTestEntry (line 157) | int FsCommonTestEntry(int Argc, char* Argv[])
type dirent64 (line 201) | struct dirent64
type GetDentsPaths (line 212) | struct GetDentsPaths
function FsCommonTestChroot (line 221) | int FsCommonTestChroot(PLXT_ARGS Args)
function FsCommonTestClex (line 481) | int FsCommonTestClex(PLXT_ARGS Args)
type LXSS_BYTE_ALIGNED_DIRENTS (line 557) | typedef struct _LXSS_BYTE_ALIGNED_DIRENTS
function FsCommonTestGetDents (line 564) | int FsCommonTestGetDents(PLXT_ARGS Args)
function FsCommonTestGetDents64Alignment (line 831) | int FsCommonTestGetDents64Alignment(PLXT_ARGS Args)
function FsCommonTestGetDentsAlignment (line 861) | int FsCommonTestGetDentsAlignment(PLXT_ARGS Args)
function FsCommonTestGetDentsTypes (line 891) | int FsCommonTestGetDentsTypes(PLXT_ARGS Args)
function FsCommonTestLinkAt (line 957) | int FsCommonTestLinkAt(PLXT_ARGS Args)
function FsCommonTestOpen (line 1208) | int FsCommonTestOpen(PLXT_ARGS Args)
function FsCommonTestOpenAt (line 1241) | int FsCommonTestOpenAt(PLXT_ARGS Args)
function FsCommonTestOpenCreateSymlink (line 1385) | int FsCommonTestOpenCreateSymlink(PLXT_ARGS Args)
function FsCommonTestOpenCreateSymlinkDir (line 1468) | int FsCommonTestOpenCreateSymlinkDir(PLXT_ARGS Args)
function FsCommonTestCreateAndRename (line 1544) | int FsCommonTestCreateAndRename(PLXT_ARGS Args)
function FsCommonTestCreateSymlinkTarget (line 1729) | int FsCommonTestCreateSymlinkTarget(PLXT_ARGS Args)
function FsCommonTestReadlinkat (line 1802) | int FsCommonTestReadlinkat(PLXT_ARGS Args)
function FsCommonTestRemoveSelfOrParent (line 1872) | int FsCommonTestRemoveSelfOrParent(PLXT_ARGS Args)
function FsCommonTestRenameAt (line 2013) | int FsCommonTestRenameAt(PLXT_ARGS Args)
function FsCommonTestRenameDir (line 2081) | int FsCommonTestRenameDir(PLXT_ARGS Args)
function FsCommonTestSetEofCheckTimeLessThan (line 2109) | int FsCommonTestSetEofCheckTimeLessThan(struct timespec* X, struct times...
function FsCommonTestSetEof (line 2134) | int FsCommonTestSetEof(PLXT_ARGS Args)
function FsCommonTestTrailingSlash (line 2278) | int FsCommonTestTrailingSlash(PLXT_ARGS Args)
function FsCommonTestMkdir (line 2459) | int FsCommonTestMkdir(PLXT_ARGS Args)
function FsCommonTestMkDirAt (line 2605) | int FsCommonTestMkDirAt(PLXT_ARGS Args)
function FsCommonTestChdir (line 2777) | int FsCommonTestChdir(PLXT_ARGS Args)
type UNLINK_AT_VARIATION (line 2864) | typedef struct _UNLINK_AT_VARIATION
function FsCommonTestUnlinkAt (line 2874) | int FsCommonTestUnlinkAt(PLXT_ARGS Args)
function FsCommonTestFchownAt (line 3031) | int FsCommonTestFchownAt(PLXT_ARGS Args)
function FsCommonTestFstatAt64 (line 3180) | int FsCommonTestFstatAt64(PLXT_ARGS Args)
function FsCommonTestDeleteCurrentWorkingDirectory (line 3357) | int FsCommonTestDeleteCurrentWorkingDirectory(PLXT_ARGS Args)
function FsCommonTestDeleteLoop (line 3386) | int FsCommonTestDeleteLoop(PLXT_ARGS Args)
function FsCommonTestDeleteOpenFile (line 3414) | int FsCommonTestDeleteOpenFile(PLXT_ARGS Args)
function FsCommonTestFchdir (line 3442) | int FsCommonTestFchdir(PLXT_ARGS Args)
function FsCommonTestMknod (line 3525) | int FsCommonTestMknod(PLXT_ARGS Args)
function FsCommonTestMknodSecurity (line 3680) | int FsCommonTestMknodSecurity(PLXT_ARGS Args)
function FsCommonTestNoatimeFlag (line 3747) | int FsCommonTestNoatimeFlag(PLXT_ARGS Args)
function FsCommonTestWritev (line 3956) | int FsCommonTestWritev(PLXT_ARGS Args)
function FsCommonTestDeviceId (line 3976) | int FsCommonTestDeviceId(PLXT_ARGS Args)
function FsCommonTestFallocate (line 4027) | int FsCommonTestFallocate(PLXT_ARGS Args)
function FsCommonTestDirSeek (line 4117) | int FsCommonTestDirSeek(PLXT_ARGS Args)
function FsCommonTestFsync (line 4144) | int FsCommonTestFsync(PLXT_ARGS Args)
FILE: test/linux/unit_tests/fstab.c
function FstabTestEntry (line 25) | int FstabTestEntry(int Argc, char* Argv[])
function FsTabTestMount (line 58) | int FsTabTestMount(PLXT_ARGS Args)
FILE: test/linux/unit_tests/get_set_id.c
type USHORT (line 41) | typedef unsigned short USHORT;
type USHORT (line 47) | typedef USHORT uid16_t;
type USHORT (line 51) | typedef USHORT gid16_t;
function GetSetIdTestEntry (line 90) | int GetSetIdTestEntry(int Argc, char* Argv[])
function GetSetId0 (line 121) | int GetSetId0(PLXT_ARGS Args)
function GetSetId1 (line 277) | int GetSetId1(PLXT_ARGS Args)
function GetSetId16Bit (line 328) | int GetSetId16Bit(PLXT_ARGS Args)
function GetSetIdParseArgs (line 517) | int GetSetIdParseArgs(int Argc, char* Argv[], LXT_ARGS* Args)
function GetSetPgid (line 604) | int GetSetPgid(PLXT_ARGS Args)
function GetSetPgidChildProcess (line 753) | int GetSetPgidChildProcess(void)
function GetSetPgidChildProcess2 (line 803) | int GetSetPgidChildProcess2(pid_t GroupId)
function GetSetPgidExecve (line 880) | int GetSetPgidExecve(PLXT_ARGS Args)
function GetSetPgidExecveChild (line 992) | int GetSetPgidExecveChild(void)
function GetSetSid (line 1059) | int GetSetSid(PLXT_ARGS Args)
FILE: test/linux/unit_tests/getaddrinfo.c
function LookupHost (line 27) | i
Copy disabled (too large)
Download .json
Condensed preview — 730 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (10,205K chars).
[
{
"path": ".clang-format",
"chars": 4470,
"preview": "---\r\n# this file work is a derivative of onecoreuap/net/.clang-format\r\n# https://github.com/isocpp/CppCoreGuidelines/bl"
},
{
"path": ".gdnsuppress",
"chars": 12109,
"preview": "{\n \"hydrated\": false,\n \"properties\": {\n \"helpUri\": \"https://eng.ms/docs/microsoft-security/security/azure-security/"
},
{
"path": ".github/CODEOWNERS",
"chars": 117,
"preview": "# File containing policy for file ownership\n\n# Reviewers for all files in the repository\n* @microsoft/wsl-maintainers"
},
{
"path": ".github/ISSUE_TEMPLATE/Bug_Report.yaml",
"chars": 3631,
"preview": "---\r\nname: \"WSL - Bug Report\"\r\ndescription: Report a bug on Windows Subsystem for Linux\r\nbody:\r\n- type: markdown\r\n attr"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 658,
"preview": "---\nname: Feature request / Contribution idea\nabout: Suggest a feature or improvement for the Windows Subsystem for Linu"
},
{
"path": ".github/actions/triage/action.yml",
"chars": 1394,
"preview": "name: Run automated triage\r\n\r\n\r\ninputs:\r\n issue:\r\n required: false\r\n type: string\r\n comment:\r\n requ"
},
{
"path": ".github/copilot-instructions.md",
"chars": 9737,
"preview": "# Windows Subsystem for Linux (WSL)\n\n**ALWAYS reference these instructions first and fallback to search or bash commands"
},
{
"path": ".github/policies/resourceManagement.yml",
"chars": 8478,
"preview": "id: \r\nname: GitOps.PullRequestIssueManagement\r\ndescription: GitOps.PullRequestIssueManagement primitive\r\nowner: \r\nresour"
},
{
"path": ".github/pull_request_template.md",
"chars": 1105,
"preview": "<!-- Enter a brief description/summary of your PR here. What does it fix/what does it change/how was it tested (even man"
},
{
"path": ".github/workflows/distributions.yml",
"chars": 385,
"preview": "name: Validate distributions\n\non: \n pull_request: \n paths: ['distributions/**']\n\njobs:\n check:\n name: Validate d"
},
{
"path": ".github/workflows/documentation.yml",
"chars": 807,
"preview": "name: Build documentation\non:\n workflow_dispatch:\n push:\n branches: [main, master]\n\njobs:\n DeployDocs:\n environ"
},
{
"path": ".github/workflows/issue_edited.yml",
"chars": 475,
"preview": "name: Process edited issue\r\n\r\non:\r\n workflow_dispatch:\r\n issues:\r\n types: [edited]\r\n\r\njobs:\r\n wti:\r\n name: Run "
},
{
"path": ".github/workflows/modern-distributions.yml",
"chars": 711,
"preview": "name: Validate tar based distributions\n\non:\n pull_request:\n paths: ['distributions/**']\n\njobs:\n check:\n name: Va"
},
{
"path": ".github/workflows/new_issue.yml",
"chars": 393,
"preview": "name: Process new issue\n\non:\n workflow_dispatch :\n issues:\n types: [opened]\n\njobs:\n wti:\n name: Run wti\n run"
},
{
"path": ".github/workflows/new_issue_comment.yml",
"chars": 633,
"preview": "name: Process new comment on issue\r\n\r\non: \r\n workflow_dispatch :\r\n issue_comment:\r\n types: [created]\r\n\r\njobs:\r\n wt"
},
{
"path": ".github/workflows/winget.yml",
"chars": 1117,
"preview": "name: Publish to WinGet\n\non:\n release:\n types: [released]\n\njobs:\n publish:\n if: github.event.release.prerelease "
},
{
"path": ".gitignore",
"chars": 777,
"preview": ".vscode/*\n.vs/\n!vendor/.preserve\nout\ntmp\n/.vs/\n/.vscode/\n*.sln\n*.slnx\n*.user\n*.csproj\n*.vcxproj\n*.filters\n*.pdb\n*.lib\n*."
},
{
"path": ".pipelines/build-stage.yml",
"chars": 21752,
"preview": "parameters:\n - name: isRelease\n type: boolean\n default: true\n\n - name: packageVersion\n type: string\n defau"
},
{
"path": ".pipelines/flight-stage.yml",
"chars": 5748,
"preview": "parameters:\n- name: publishPackage\n type: boolean\n default: false\n\n- name: packageVersion\n type: string\n default: ''"
},
{
"path": ".pipelines/nuget-stage.yml",
"chars": 1539,
"preview": "parameters:\n- name: isNightly\n type: boolean\n default: false\n \n- name: nugetPackages\n type: object\n default:\n "
},
{
"path": ".pipelines/test-job.yml",
"chars": 1696,
"preview": "parameters:\n - name: branch\n type: string\n\n - name: version\n type: string\n\n - name: image\n type: string\n\n -"
},
{
"path": ".pipelines/test-stage.yml",
"chars": 1042,
"preview": "parameters:\n - name: rs_prerelease_only\n type: boolean\n default: false\n\n - name: pool\n type: string\n defau"
},
{
"path": ".pipelines/wsl-build-nightly-localization.yml",
"chars": 1382,
"preview": "trigger:\n branches:\n include:\n - master\n paths:\n include:\n - 'localization/strings/en-US/Resources.resw'\n\n"
},
{
"path": ".pipelines/wsl-build-nightly-onebranch.yml",
"chars": 1101,
"preview": "trigger: none\n\nschedules:\n# \"0 8\" = 8AM UTC = 12AM PST\n- cron: \"0 8 * * *\"\n displayName: Nightly build\n branches:\n "
},
{
"path": ".pipelines/wsl-build-notice.yml",
"chars": 762,
"preview": "trigger:\n branches:\n include:\n - master\n\npool:\n vmImage: 'windows-latest'\n\nsteps:\n- checkout : self\n persistC"
},
{
"path": ".pipelines/wsl-build-pr-onebranch.yml",
"chars": 1128,
"preview": "trigger:\n branches:\n include:\n - master\n - release/*\n\nvariables:\n WindowsContainerImage: \"onebranch.azurecr.i"
},
{
"path": ".pipelines/wsl-build-pr.yml",
"chars": 297,
"preview": "trigger:\n branches:\n include:\n - master\n - release/*\n\nstages:\n- template: build-stage.yml@self\n parameters:\n "
},
{
"path": ".pipelines/wsl-build-release-onebranch.yml",
"chars": 1852,
"preview": "parameters:\n- name: bypassTests\n displayName: 'Publish release even if tests fail'\n type: boolean\n default: false\n\n- "
},
{
"path": "CMakeLists.txt",
"chars": 19078,
"preview": "cmake_minimum_required(VERSION 3.25)\nset(CMAKE_SYSTEM_VERSION 10.0.26100.0)\n\nproject(wsl)\n\n# Rationalize TARGET_PLATFORM"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 444,
"preview": "# Microsoft Open Source Code of Conduct\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://op"
},
{
"path": "CONTRIBUTING.md",
"chars": 8423,
"preview": "# WSL contributing guide\n\nThere are a few main ways to contribute to WSL, with guides to each one:\n\n1. [Add a feature or"
},
{
"path": "DATA_AND_PRIVACY.md",
"chars": 1117,
"preview": "# WSL data & privacy\n\n## Overview\n\nWSL collects diagnostic data using Windows telemetry, just like other Windows compone"
},
{
"path": "Directory.Build.Props",
"chars": 326,
"preview": "<Project>\n <PropertyGroup>\n <UseMultiToolTask>true</UseMultiToolTask>\n <EnforceProcessCountAcrossBuilds>true"
},
{
"path": "LICENSE",
"chars": 1141,
"preview": " MIT License\n\n Copyright (c) Microsoft Corporation.\n\n Permission is hereby granted, free of charge, to any pers"
},
{
"path": "NOTICE.txt",
"chars": 38480,
"preview": "NOTICES AND INFORMATION\nDo Not Translate or Localize\n\nThis software incorporates material from third parties.\nMicrosoft "
},
{
"path": "README.md",
"chars": 3436,
"preview": "# Welcome to the Windows Subsystem for Linux (WSL) repository\n\n<p align=\"center\">\n <img src=\"./Images/Square44x44Logo.t"
},
{
"path": "SECURITY.md",
"chars": 2728,
"preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.7 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products an"
},
{
"path": "SUPPORT.md",
"chars": 1340,
"preview": "# Support\r\n\r\n## How to file issues and get help \r\n\r\nThis project uses [GitHub Issues][gh-issue] to [track bugs][gh-bug]"
},
{
"path": "UserConfig.cmake.sample",
"chars": 2732,
"preview": "# Sample user configuration\n\nmessage(STATUS \"Loading user configuration\")\n\n# Uncomment to enable development packages (s"
},
{
"path": "cgmanifest.json",
"chars": 1166,
"preview": "{\r\n \"version\": 1,\r\n \"$schema\": \"https://json.schemastore.org/component-detection-manifest.json\",\r\n \"registratio"
},
{
"path": "cloudtest/CMakeLists.txt",
"chars": 1256,
"preview": "set(OUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/cloudtest)\nfile(MAKE_DIRECTORY ${OUT})\n\nif (${TARGET_PLATFORM} STREQUAL x64)\n "
},
{
"path": "cloudtest/TestGroup.xml.in",
"chars": 2366,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<TestJobGroup EnableProcessJobObjectBreakaway=\"true\">\n <ResourceSpec>\n <Resou"
},
{
"path": "cloudtest/TestMap.xml.in",
"chars": 1800,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<TestMap>\n <TestJobGroup Name=\"TaefTestsGroup\" TestSystem=\"Default\" ConfigPath=\""
},
{
"path": "cmake/FindIDL.cmake",
"chars": 2801,
"preview": "function(add_idl target idl_files_with_proxy idl_files_no_proxy)\n set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/${TARGET"
},
{
"path": "cmake/FindLINUXBUILD.cmake",
"chars": 4207,
"preview": "function(build_linux_objects sources headers)\n file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${TARGET_PLATFORM}/${C"
},
{
"path": "cmake/FindMC.cmake",
"chars": 910,
"preview": "function(add_mc target mc_file)\n\n cmake_path(GET mc_file STEM MC_NAME)\n\n set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR"
},
{
"path": "cmake/findAppx.cmake",
"chars": 3783,
"preview": "function(add_appx_target target binaries manifest_in output_package dependencies)\n\n set(PACKAGE_LAYOUT \"${CMAKE_CURRE"
},
{
"path": "cmake/findNuget.cmake",
"chars": 1661,
"preview": "function(find_nuget_package name var_name path)\n\n string(JSON \"${var_name}_VERSION\" GET ${NUGET_PACKAGES_JSON} \"${nam"
},
{
"path": "cmake/findVersion.cmake",
"chars": 1090,
"preview": "function(get_version_impl command var_name)\n execute_process(\n COMMAND powershell.exe\n -NoProfi"
},
{
"path": "diagnostics/collect-wsl-logs.ps1",
"chars": 13343,
"preview": "#Requires -RunAsAdministrator\n\n[CmdletBinding()]\nParam (\n $LogProfile = $null,\n [switch]$Dump = $false,\n [switc"
},
{
"path": "diagnostics/dump-init-stacks.sh",
"chars": 512,
"preview": "#! /bin/bash\n\nset -ue\n\nfor proc in /proc/[0-9]*; do\n pid=$(basename \"$proc\")\n\n echo -e \"\\nProcess: $pid\"\n echo -en \"c"
},
{
"path": "diagnostics/dump-init.sh",
"chars": 1490,
"preview": "#! /bin/bash\n\nset -ue\n\nif [ $(whoami) != \"root\" ]; then\n echo \"This script must be run as root in the debug shell (via "
},
{
"path": "diagnostics/networking.sh",
"chars": 2207,
"preview": "#! /bin/bash\nset -xu\n\n# Gather distro & kernel info.\nlsb_release -a || cat /etc/issue /etc/os-release\nuname -a\n\necho \"Pr"
},
{
"path": "diagnostics/wsl.wprp",
"chars": 37724,
"preview": "<?xml version=\"1.0\"?>\n<!--\n Available Profiles (use profile name with wpr -start):\n - WSL: General WSL tracing (defaul"
},
{
"path": "distributions/DistributionInfo.json",
"chars": 16877,
"preview": "{\n \"ModernDistributions\": {\n \"Ubuntu\": [\n {\n \"Name\": \"Ubuntu\",\n \"Frie"
},
{
"path": "distributions/requirements.txt",
"chars": 87,
"preview": "python-magic==0.4.27\r\nclick==8.1.3\r\nGitPython==3.1.41\r\nPyGithub==2.5.0\r\njson-cfg==0.4.2"
},
{
"path": "distributions/validate-modern.py",
"chars": 22128,
"preview": "import click\r\nimport jsoncfg\r\nfrom jsoncfg.config_classes import ConfigJSONObject, ConfigJSONArray, ConfigJSONScalar\r\nim"
},
{
"path": "distributions/validate.py",
"chars": 3783,
"preview": "import requests\nimport json\nimport sys\nimport hashlib\nimport difflib\nfrom urllib.request import urlretrieve\nfrom xml.etr"
},
{
"path": "doc/README.md",
"chars": 187,
"preview": "# WSL open source documentation\n\nBuild instructions: \n\n```\n$ pip install mkdocs mkdocs-mermaid2-plugin\n$ mkdocs serve\n``"
},
{
"path": "doc/docs/debugging.md",
"chars": 2834,
"preview": "# Debugging WSL\n\n## Logging\n\nThere are multiple sources of logging in WSL. The main one is the ETL trace that is emitted"
},
{
"path": "doc/docs/dev-loop.md",
"chars": 4732,
"preview": "# Building WSL\n\n## Prerequisites \n\nThe following tools are required to build WSL: \n\n- CMake >= 3.25\n - Can be install"
},
{
"path": "doc/docs/index.md",
"chars": 475,
"preview": "# WSL open source documentation\n\nThis site contains the developer documentation for the Windows Subsystem for Linux. \n\nF"
},
{
"path": "doc/docs/technical-documentation/boot-process.md",
"chars": 7043,
"preview": "# The WSL2 boot process\n\nThis page describes the steps in the WSL2 process, from the user invoking [wsl.exe](wsl.exe.md)"
},
{
"path": "doc/docs/technical-documentation/drvfs.md",
"chars": 2702,
"preview": "# Accessing Windows drives from Linux\n\nWSL offers mountpoints to access Windows drives from Linux. These mountpoints are"
},
{
"path": "doc/docs/technical-documentation/gns.md",
"chars": 647,
"preview": "# GNS\n\n`gns` is a process created by `mini_init`. Its job is to configure networking within the WSL2 virtual machine. \n\n"
},
{
"path": "doc/docs/technical-documentation/index.md",
"chars": 2037,
"preview": "# WSL Overview\n\nWSL is comprised of a set of executables, APIs and protocols. This page offers an overview of the differ"
},
{
"path": "doc/docs/technical-documentation/init.md",
"chars": 1749,
"preview": "# Init\n\nInit is top level process of a WSL distribution. For WSL1 distributions, it is launched by [wslservice](wslservi"
},
{
"path": "doc/docs/technical-documentation/interop.md",
"chars": 2887,
"preview": "# Running Windows executables from Linux\n\nThe ability to launch Windows processes from Linux is controlled by 2 differen"
},
{
"path": "doc/docs/technical-documentation/localhost.md",
"chars": 653,
"preview": "# Localhost\n\n`localhost` is a WSL2 Linux process, created by [mini_init](mini_init.md). Its role is to forward network t"
},
{
"path": "doc/docs/technical-documentation/mini_init.md",
"chars": 1876,
"preview": "# mini_init\n\nmini_init is the first executable that's launched when the WSL2 virtual machine starts. See [WSL2 boot proc"
},
{
"path": "doc/docs/technical-documentation/plan9.md",
"chars": 967,
"preview": "# Plan 9\n\nPlan9 is a Linux process that hosts a plan9 filesystem server for WSL1 and WSL2 distributions. It's created by"
},
{
"path": "doc/docs/technical-documentation/relay.md",
"chars": 924,
"preview": "# Relay\n\nRelay is a WSL2 Linux process created by a [session leader](session-leader.md). Its job is to create a Linux pr"
},
{
"path": "doc/docs/technical-documentation/session-leader.md",
"chars": 1221,
"preview": "# Session leader\n\nA session leader is a linux process, which is forked from [init](init.md) after receiving a `LxInitMes"
},
{
"path": "doc/docs/technical-documentation/systemd.md",
"chars": 1424,
"preview": "# Systemd\n\nSystemd support for a WSL distribution can be enabled by setting the following in `/etc/wsl.conf`:\n\n```\n[boot"
},
{
"path": "doc/docs/technical-documentation/wsl.exe.md",
"chars": 323,
"preview": "# wsl.exe\n\nwsl.exe is the main command line entrypoint for WSL. Its job is to:\n\n- Parse the command line arguments (See "
},
{
"path": "doc/docs/technical-documentation/wslconfig.exe.md",
"chars": 106,
"preview": "# Wslconfig.exe\n\n`wslconfig.exe` is a Windows executable that can be used to configure WSL distributions. "
},
{
"path": "doc/docs/technical-documentation/wslg.exe.md",
"chars": 302,
"preview": "# Wslg.exe\n\n`wslg.exe` is a Windows executable that is used mostly to run graphical applications with WSL. \n\nIts behavio"
},
{
"path": "doc/docs/technical-documentation/wslhost.exe.md",
"chars": 1008,
"preview": "# Wslhost.exe \n\n`wslhost.exe` is a Windows executable that's used to display desktop notifications, and run Linux proces"
},
{
"path": "doc/docs/technical-documentation/wslrelay.exe.md",
"chars": 375,
"preview": "# Wslrelay.exe\n\n`wslrelay.exe` is a windows executable that is used to relay network and debug console traffic from Linu"
},
{
"path": "doc/docs/technical-documentation/wslservice.exe.md",
"chars": 2126,
"preview": "# wslservice.exe\n\nWslService is a session 0 service, running as SYSTEM. Its job is to manage WSL sessions, communicate w"
},
{
"path": "doc/mkdocs.yml",
"chars": 1431,
"preview": "site_name: WSL\n\nnav:\n - 'Home': 'index.md'\n - 'Getting started':\n - 'Building and testing WSL': 'dev-loop.md"
},
{
"path": "intune/WSL.admx",
"chars": 7435,
"preview": "<policyDefinitions revision=\"1.0\" schemaVersion=\"1.0\">\n <policyNamespaces>\n <target prefix=\"WSL\" namespace=\"Microsof"
},
{
"path": "intune/en-US/WSL.adml",
"chars": 4756,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- (c) 2006 Microsoft Corporation -->\n<policyDefinitionResources xmlns:xsd=\"h"
},
{
"path": "localization/CMakeLists.txt",
"chars": 756,
"preview": "set(LOCALIZATION_PS1 ${PROJECT_SOURCE_DIR}/tools/generateLocalizationHeader.ps1)\nset (MESSAGESHEAD ${GENERATED_DIR}/Loca"
},
{
"path": "localization/strings/cs-CZ/Resources.resw",
"chars": 106703,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/da-DK/Resources.resw",
"chars": 107120,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/de-DE/Resources.resw",
"chars": 113635,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n <!--\r\n Microsoft ResX Schema\r\n\r\n Version 2.0\r\n\r\n The primary"
},
{
"path": "localization/strings/en-GB/Resources.resw",
"chars": 103922,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/en-US/Resources.resw",
"chars": 105803,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n <!--\r\n Microsoft ResX Schema\r\n\r\n Version 2.0\r\n\r\n The primary "
},
{
"path": "localization/strings/es-ES/Resources.resw",
"chars": 110344,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/fi-FI/Resources.resw",
"chars": 107017,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/fr-FR/Resources.resw",
"chars": 112292,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/hu-HU/Resources.resw",
"chars": 110097,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/it-IT/Resources.resw",
"chars": 110255,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/ja-JP/Resources.resw",
"chars": 93474,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/ko-KR/Resources.resw",
"chars": 93537,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n <!--\r\n Microsoft ResX Schema\r\n\r\n Version 2.0\r\n\r\n The primary"
},
{
"path": "localization/strings/nb-NO/Resources.resw",
"chars": 105547,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/nl-NL/Resources.resw",
"chars": 109726,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/pl-PL/Resources.resw",
"chars": 111902,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/pt-BR/Resources.resw",
"chars": 108639,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/pt-PT/Resources.resw",
"chars": 109003,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/ru-RU/Resources.resw",
"chars": 108698,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/sv-SE/Resources.resw",
"chars": 106225,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/tr-TR/Resources.resw",
"chars": 106995,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/zh-CN/Resources.resw",
"chars": 86192,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n <!--\n Microsoft ResX Schema\n\n Version 2.0\n\n The primary goals "
},
{
"path": "localization/strings/zh-TW/Resources.resw",
"chars": 88349,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<root>\r\n <!--\r\n Microsoft ResX Schema\r\n\r\n Version 2.0\r\n\r\n The primary"
},
{
"path": "msipackage/CMakeLists.txt",
"chars": 2511,
"preview": "set(BIN ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${CMAKE_BUILD_TYPE})\n\n# For pipeline builds, use PACKAGE_INPUT_DIR if specifie"
},
{
"path": "msipackage/package.wix.in",
"chars": 33883,
"preview": "<Wix xmlns=\"http://wixtoolset.org/schemas/v4/wxs\">\n <Package Name=\"Windows Subsystem for Linux\" Language=\"1033\" Insta"
},
{
"path": "msixgluepackage/AppxManifest.in",
"chars": 4016,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\""
},
{
"path": "msixgluepackage/CMakeLists.txt",
"chars": 182,
"preview": "add_appx_target(msixgluepackage\n \"wsl.exe\"\n \"${CMAKE_CURRENT_LIST_DIR}/AppxManifest.in\"\n "
},
{
"path": "msixinstaller/AppxManifest.in",
"chars": 5716,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Package xmlns=\"http://schemas.microsoft.com/appx/manifest/foundation/windows10\""
},
{
"path": "msixinstaller/CMakeLists.txt",
"chars": 2088,
"preview": "set(DEPENDENCIES \"wsl.exe;wslinstaller.exe;wslinstallerproxystub.dll\")\n\n# Don't include the MSI if building a thin packa"
},
{
"path": "nuget/CMakeLists.txt",
"chars": 405,
"preview": "set(NUGET_PACKAGES Microsoft.WSL.PluginApi.nuspec)\n\n# generate vars with native paths since nuget won't accept unix path"
},
{
"path": "nuget/Microsoft.WSL.PluginApi.nuspec.in",
"chars": 988,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<package xmlns=\"http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd\">\n <m"
},
{
"path": "nuget/README.WslPluginApi.MD",
"chars": 174,
"preview": "# WSL plugin api\n\nThis package contains the `WslPluginApi.h` header which defines the WSL plugin interface.\n\nFor more de"
},
{
"path": "nuget.config",
"chars": 1168,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<configuration>\r\n <config>\r\n <add key=\"defaultPushSource\" value=\"http"
},
{
"path": "packages.config",
"chars": 2194,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"CommunityToolkit.Mvvm\" version=\"8.4.0\" />\n <package i"
},
{
"path": "src/linux/inc/lxdef.h",
"chars": 6463,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n// Lxcore type definitions.\ntypedef int LX_IN"
},
{
"path": "src/linux/inc/lxwil.h",
"chars": 17632,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include <unistd.h>\n#include <dirent.h>\n#incl"
},
{
"path": "src/linux/inc/seccomp_defs.h",
"chars": 422,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n\n// This file defines all the seccomp structures and consta"
},
{
"path": "src/linux/init/CMakeLists.txt",
"chars": 1794,
"preview": "set(SOURCES\n main.cpp\n binfmt.cpp\n config.cpp\n DnsServer.cpp\n DnsTunnelingChannel.cpp\n DnsTunnelingMan"
},
{
"path": "src/linux/init/DnsServer.cpp",
"chars": 15418,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n#include <arpa/inet.h>\r\n#include <sys/epoll.h>\r\n#include"
},
{
"path": "src/linux/init/DnsServer.h",
"chars": 5426,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n#pragma once\r\n\r\n#include <map>\r\n#include \"common.h\"\r\n#in"
},
{
"path": "src/linux/init/DnsTunnelingChannel.cpp",
"chars": 5292,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n#include <netinet/in.h>\r\n#include <arpa/inet.h>\r\n#includ"
},
{
"path": "src/linux/init/DnsTunnelingChannel.h",
"chars": 1724,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n#pragma once\r\n\r\n#include \"common.h\"\r\n#include \"lxinitsha"
},
{
"path": "src/linux/init/DnsTunnelingManager.cpp",
"chars": 1731,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n#include <iostream>\r\n#include <filesystem>\r\n#include <fs"
},
{
"path": "src/linux/init/DnsTunnelingManager.h",
"chars": 815,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n#pragma once\r\n\r\n#include \"DnsTunnelingChannel.h\"\r\n#inclu"
},
{
"path": "src/linux/init/GnsEngine.cpp",
"chars": 31343,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n\n#include <iostream>\n#include <locale>\n#include <regex>\n#in"
},
{
"path": "src/linux/init/GnsEngine.h",
"chars": 2538,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n\n#pragma once\n\n#include <functional>\n#include <optional>\n#i"
},
{
"path": "src/linux/init/GnsPortTracker.cpp",
"chars": 23645,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n\n#include <filesystem>\n#include <optional>\n#include <iostre"
},
{
"path": "src/linux/init/GnsPortTracker.h",
"chars": 5449,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n#pragma once\r\n#include <deque>\r\n#include <map>\r\n#include"
},
{
"path": "src/linux/init/Localization.cpp",
"chars": 1409,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n Localization.cpp\n\nAbstract:\n\n This file contai"
},
{
"path": "src/linux/init/NetworkManager.cpp",
"chars": 24894,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n\n#include <iostream>\n#include <filesystem>\n#include <lxwil."
},
{
"path": "src/linux/init/NetworkManager.h",
"chars": 3148,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n#pragma once\r\n#include <Interface.h>\r\n#include <RoutingT"
},
{
"path": "src/linux/init/SecCompDispatcher.cpp",
"chars": 7306,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include <linux/unistd.h>\n\n#include \"SecCompDispatcher.h\"\n#"
},
{
"path": "src/linux/init/SecCompDispatcher.h",
"chars": 1148,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n\n#pragma once\n\n#include <functional>\n#include <map>\n#includ"
},
{
"path": "src/linux/init/WslDistributionConfig.cpp",
"chars": 4449,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n WslDistributionConfig.h\n\nAbstract:\n\n This file"
},
{
"path": "src/linux/init/WslDistributionConfig.h",
"chars": 3265,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n WslDistributionConfig.h\n\nAbstract:\n\n This file"
},
{
"path": "src/linux/init/binfmt.cpp",
"chars": 27139,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n binfmt.c\n\nAbstract:\n\n This file contains defin"
},
{
"path": "src/linux/init/binfmt.h",
"chars": 549,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n binfmt.h\n\nAbstract:\n\n This file contains decla"
},
{
"path": "src/linux/init/common.h",
"chars": 4069,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n common.h\n\nAbstract:\n\n This file contains commo"
},
{
"path": "src/linux/init/config.cpp",
"chars": 75583,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n config.c\n\nAbstract:\n\n This file contains metho"
},
{
"path": "src/linux/init/config.h",
"chars": 12141,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n config.c\n\nAbstract:\n\n This file contains infor"
},
{
"path": "src/linux/init/drvfs.cpp",
"chars": 18481,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n drvfs.c\n\nAbstract:\n\n This file contains DrvFs "
},
{
"path": "src/linux/init/drvfs.h",
"chars": 1132,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n drvfs.h\n\nAbstract:\n\n This file contains DrvFs "
},
{
"path": "src/linux/init/escape.cpp",
"chars": 7658,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n escape.c\n\nAbstract:\n\n This file contains suppo"
},
{
"path": "src/linux/init/escape.h",
"chars": 362,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n escape.h\n\nAbstract:\n\n This file contains decla"
},
{
"path": "src/linux/init/init.cpp",
"chars": 99720,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n init.c\n\nAbstract:\n\n This file contains the lx "
},
{
"path": "src/linux/init/localhost.cpp",
"chars": 17772,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n#include \"common.h\"\r\n#include <memory>\r\n#include <string>\r"
},
{
"path": "src/linux/init/localhost.h",
"chars": 118,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\nint RunPortTracker(int argc, char** argv);\n"
},
{
"path": "src/linux/init/main.cpp",
"chars": 118260,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n main.cpp\n\nAbstract:\n\n This file contains the e"
},
{
"path": "src/linux/init/plan9.cpp",
"chars": 10946,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include \"common.h\"\n#include <memory>\n#include <string>\n#in"
},
{
"path": "src/linux/init/plan9.h",
"chars": 560,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include <optional>\n#include <lxwil.h>\n#inclu"
},
{
"path": "src/linux/init/telemetry.cpp",
"chars": 9710,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n telemetry.cpp\n\nAbstract:\n\n This file contains "
},
{
"path": "src/linux/init/telemetry.h",
"chars": 111,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\nunsigned int StartTelemetryAgent();\n"
},
{
"path": "src/linux/init/timezone.cpp",
"chars": 2887,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n timezone.c\n\nAbstract:\n\n This file contains met"
},
{
"path": "src/linux/init/timezone.h",
"chars": 403,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n timezone.h\n\nAbstract:\n\n This file contains tim"
},
{
"path": "src/linux/init/util.cpp",
"chars": 77742,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n util.c\n\nAbstract:\n\n This file utility function"
},
{
"path": "src/linux/init/util.h",
"chars": 9008,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n util.h\n\nAbstract:\n\n This file contains utility"
},
{
"path": "src/linux/init/waitablevalue.h",
"chars": 1895,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n\n#pragma once\n\n#include <optional>\n#include <mutex>\n#includ"
},
{
"path": "src/linux/init/wslinfo.cpp",
"chars": 4337,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n wslinfo.cpp\n\nAbstract:\n\n This file wslpath fun"
},
{
"path": "src/linux/init/wslinfo.h",
"chars": 538,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n wslinfo.h\n\nAbstract:\n\n This file contains wsli"
},
{
"path": "src/linux/init/wslpath.cpp",
"chars": 14890,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n wslpath.c\n\nAbstract:\n\n This file contains the "
},
{
"path": "src/linux/init/wslpath.h",
"chars": 561,
"preview": "/*++\n\nCopyright (c) Microsoft. All rights reserved.\n\nModule Name:\n\n wslpath.h\n\nAbstract:\n\n This file contains wslp"
},
{
"path": "src/linux/mountutil/CMakeLists.txt",
"chars": 215,
"preview": "set(SOURCES\n mountflags.cpp\n mountutil.c)\n\nset(HEADERS\n mountutil.h\n mountutilcpp.h)\n\nadd_linux_library(libm"
},
{
"path": "src/linux/mountutil/mountflags.cpp",
"chars": 5849,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include <string>\n#include <string_view>\n#include <cerrno>\n"
},
{
"path": "src/linux/mountutil/mountutil.c",
"chars": 7594,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include <stdlib.h>\n#include <stdio.h>\n#include <stdbool.h>"
},
{
"path": "src/linux/mountutil/mountutil.h",
"chars": 975,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#define MOUNT_INFO_FILE_NAME \"/mountinfo\"\n#de"
},
{
"path": "src/linux/mountutil/mountutilcpp.h",
"chars": 2027,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\nextern \"C\" {\n#include \"mountutil.h\"\n}\n\nnamesp"
},
{
"path": "src/linux/netlinkutil/Address.cpp",
"chars": 4436,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include <iostream>\n#include <regex>\n#include \"address.h\"\n#"
},
{
"path": "src/linux/netlinkutil/CMakeLists.txt",
"chars": 1200,
"preview": "set(SOURCES\n Address.cpp\n Interface.cpp\n IpNeighborManager.cpp\n IpRuleManager.cpp\n Neighbor.cpp\n Netli"
},
{
"path": "src/linux/netlinkutil/Forwarder.h",
"chars": 622,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n// SPDX-License-Identifier: MIT\n\n#pragma once\n\n#include <st"
},
{
"path": "src/linux/netlinkutil/Forwarder.hxx",
"chars": 3389,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n// SPDX-License-Identifier: MIT\n#pragma once\n\n#include <pol"
},
{
"path": "src/linux/netlinkutil/Fwd.h",
"chars": 120,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\nclass NetlinkResponse;\nclass NetlinkChannel;\n"
},
{
"path": "src/linux/netlinkutil/Interface.cpp",
"chars": 26141,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include <sys/ioctl.h>\n#include <sys/types.h>\n#include <arp"
},
{
"path": "src/linux/netlinkutil/Interface.h",
"chars": 2935,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n#pragma once\r\n\r\n#include <string>\r\n#include <net/if.h>\r\n#i"
},
{
"path": "src/linux/netlinkutil/InterfaceConfiguration.h",
"chars": 310,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include <string>\n#include <vector>\n#include "
},
{
"path": "src/linux/netlinkutil/IpNeighborManager.cpp",
"chars": 8318,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n\r\n#include <linux/if_packet.h>\r\n#include <linux/if_ether.h"
},
{
"path": "src/linux/netlinkutil/IpNeighborManager.h",
"chars": 931,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n#pragma once\r\n\r\n#include <functional>\r\n#include \"NetlinkCh"
},
{
"path": "src/linux/netlinkutil/IpRuleManager.cpp",
"chars": 11238,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n#include \"RuntimeErrorWithSourceLocation.h\"\r\n#include \"IpR"
},
{
"path": "src/linux/netlinkutil/IpRuleManager.h",
"chars": 2188,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n#pragma once\r\n\r\n#include <functional>\r\n#include \"NetlinkCh"
},
{
"path": "src/linux/netlinkutil/Makefile.linux",
"chars": 513,
"preview": "# This makefile is used to work from a linux environment and is not part of the OS build process.\n\nCXXFLAGS += -std=c++2"
},
{
"path": "src/linux/netlinkutil/Neighbor.cpp",
"chars": 313,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n#include \"Neighbor.h\"\r\n\r\nNeighbor::Neighbor(const Address&"
},
{
"path": "src/linux/netlinkutil/Neighbor.h",
"chars": 309,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n#pragma once\r\n\r\n#include \"address.h\"\r\n\r\nstruct Neighbor\r\n{"
},
{
"path": "src/linux/netlinkutil/NetLinkStrings.h",
"chars": 1064,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\r\n#pragma once\r\n#include <string>\r\n#include <linux/rtnetlink"
},
{
"path": "src/linux/netlinkutil/NetlinkChannel.h",
"chars": 1426,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include \"NetlinkResponse.h\"\n#include \"Netlin"
},
{
"path": "src/linux/netlinkutil/NetlinkChannel.hxx",
"chars": 4203,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n#include <sys/ioctl.h>\n#include <arpa/inet.h>\n"
},
{
"path": "src/linux/netlinkutil/NetlinkError.cpp",
"chars": 370,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include <format>\n#include <string>\n#include \"NetlinkError."
},
{
"path": "src/linux/netlinkutil/NetlinkError.h",
"chars": 347,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include \"RuntimeErrorWithSourceLocation.h\"\n\n"
},
{
"path": "src/linux/netlinkutil/NetlinkMessage.h",
"chars": 896,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include <vector>\n#include <optional>\n#includ"
},
{
"path": "src/linux/netlinkutil/NetlinkMessage.hxx",
"chars": 3138,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include <format>\n#include <string>\n#include "
},
{
"path": "src/linux/netlinkutil/NetlinkParseException.cpp",
"chars": 678,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include <sstream>\n#include \"NetlinkParseException.h\"\n#incl"
},
{
"path": "src/linux/netlinkutil/NetlinkParseException.h",
"chars": 482,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include \"RuntimeErrorWithSourceLocation.h\"\n#"
},
{
"path": "src/linux/netlinkutil/NetlinkResponse.cpp",
"chars": 1564,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include \"NetlinkResponse.h\"\n#include \"NetlinkError.h\"\n#inc"
},
{
"path": "src/linux/netlinkutil/NetlinkResponse.h",
"chars": 731,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include <vector>\n#include \"NetlinkMessage.h\""
},
{
"path": "src/linux/netlinkutil/NetlinkResponse.hxx",
"chars": 916,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include \"NetlinkResponse.h\"\n#include \"Netlin"
},
{
"path": "src/linux/netlinkutil/NetlinkTransaction.cpp",
"chars": 1490,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include \"NetlinkChannel.h\"\n#include \"NetlinkTransaction.h\""
},
{
"path": "src/linux/netlinkutil/NetlinkTransaction.h",
"chars": 595,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include <functional>\n#include <sys/types.h>\n"
},
{
"path": "src/linux/netlinkutil/NetlinkTransactionError.cpp",
"chars": 1225,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#include <sstream>\n#include \"NetlinkTransactionError.h\"\n#in"
},
{
"path": "src/linux/netlinkutil/NetlinkTransactionError.h",
"chars": 702,
"preview": "// Copyright (C) Microsoft Corporation. All rights reserved.\n#pragma once\n\n#include \"RuntimeErrorWithSourceLocation.h\"\n#"
}
]
// ... and 530 more files (download for full content)
About this extraction
This page contains the full source code of the microsoft/WSL GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 730 files (9.2 MB), approximately 2.4M tokens, and a symbol index with 3492 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.