From 83f3b125ee80dc82d614bed55fe2c9f4d68332d1 Mon Sep 17 00:00:00 2001 From: yao-msft <50888816+yao-msft@users.noreply.github.com> Date: Wed, 3 Dec 2025 21:08:01 -0800 Subject: [PATCH 1/4] draft --- src/windows/wslasdk/wsla.h | 265 +++++++++++++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100644 src/windows/wslasdk/wsla.h diff --git a/src/windows/wslasdk/wsla.h b/src/windows/wslasdk/wsla.h new file mode 100644 index 000000000..76deca70b --- /dev/null +++ b/src/windows/wslasdk/wsla.h @@ -0,0 +1,265 @@ +/*++ + +Copyright (c) Microsoft. All rights reserved. + +Module Name: + + wsla.h + +Abstract: + + This file contains the public WSLA api definitions. + +--*/ +#pragma once + +#include + +EXTERN_C_START + +// Wsla Install + +STDAPI WslaCanRun( + _Out_ BOOL* canRun); + +typedef struct WSLA_VERSION +{ + UINT32 major; + UINT32 minor; + UINT32 revision; +} WSLA_VERSION; + +STDAPI WslaGetVersion( + _Out_ WSLA_VERSION* version); + +typedef enum WSLA_INSTALL_COMPONENT +{ + WSLA_INSTALL_COMPONENT_NONE = 0, + WSLA_INSTALL_COMPONENT_VMPOC = 1, + WSLA_INSTALL_COMPONENT_WSL_OC = 2, + WSLA_INSTALL_COMPONENT_WSL_PACKAGE = 4, +} WSLA_INSTALL_COMPONENT; + +typedef __callback VOID(CALLBACK WslaInstallCallback)( + _In_ WSLA_INSTALL_COMPONENT component, + _In_ UINT32 progress, + _In_ UINT32 total, + _In_opt PVOID context); + +STDAPI WslaInstallWithDependencies( + _In_opt_ __callback progressCallback, + _In_opt_ PVOID context); + +// Session + +typedef enum WSLA_SESSION_TERMINATION_REASON +{ + WSLA_SESSION_TERMINATION_REASON_UNKNOWN = 0, + WSLA_SESSION_TERMINATION_REASON_SHUTDOWN = 1, + WSLA_SESSION_TERMINATION_REASON_CRASHED = 2, +} WSLA_SESSION_TERMINATION_REASON; + +typedef __callback VOID (CALLBACK WslaSessionTerminationCallback)( + _In_ WSLA_SESSION_TERMINATION_REASON reason, + _In_opt_ PVOID context); + +typedef struct WSLA_CREATE_SESSION_OPTIONS +{ + PCWSTR displayName; + PCWSTR storagePath; + WslaSessionTerminationCallback terminationCallback; + PVOID terminationCallbackContext; +} WSLA_CREATE_SESSION_OPTIONS; + +DECLARE_HANDLE(WslaSession) + +STDAPI WslaCreateSession( + _In_ const WSLA_CREATE_SESSION_OPTIONS* settings, + _Out_ WslaSession* sesssion); + +STDAPI WslaReleaseSession( + _In_ WslaSession session); + +// Container image + +typedef __callback VOID(CALLBACK WslaContainerImageProgressCallback)( + _In_ UINT32 progress, + _In_ UINT32 total, + _In_opt_ PVOID context); + +typedef struct WLSA_PULL_CONTAINER_IMAGE_OPTIONS +{ + PCSTR uri; // e.g. "my.registry.io/hello-world:latest" or just "hello-world:latest" which will default to docker + WslaContainerImageProgressCallback progressCallback; + PVOID progressCallbackContext; + + // TODO: think about authentication + PCSTR account; + PCSTR password; +} WLSA_PULL_CONTAINER_IMAGE_OPTIONS; + +STDAPI WslaPullContainerImage( + _In_ WslaSession session, + _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options); + +typedef struct WLSA_IMPORT_CONTAINER_IMAGE_OPTIONS +{ + PCWSTR imagePath; + WslaContainerImageProgressCallback progressCallback; + PVOID progressCallbackContext; +} WLSA_IMPORT_CONTAINER_IMAGE_OPTIONS; + +STDAPI WslaImportContainerImage( + _In_ WslaSession session, + _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options); + +typedef struct WSLA_CONTAINER_IMAGE_INFO +{ + PCSTR repository; + PCSTR tag; + UINT8 sha256[32]; +} WSLA_CONTAINER_IMAGE_INFO; + +STDAPI WslaListContainerImages( + _In_ WslaSession sesssion, + _Inout_ WSLA_CONTAINER_IMAGE_INFO* images, + _Inout_ UINT32* count); + +STDAPI WslaDeleteImage( + _In_ WslaSession session, + _In_ PCSTR imageName); + +// Container + +typedef struct WSLA_CONTAINER_PORT_MAPPING +{ + UINT16 windowsPort; + UINT16 containerPort; + + // TODO: Port mapping type? Host/Bridge, etc +} WSLA_CONTAINER_PORT_MAPPING; + +typedef struct WSLA_CONTAINER_VOLUME +{ + PCWSTR windowsPath; + PCSTR containerPath; +} WSLA_CONTAINER_VOLUME; + +typedef struct WSLA_CONTAINER_GPU_OPTIONS +{ + BOOL enable; + PCSTR gpuDevices; +} WSLA_CONTAINER_GPU_OPTIONS; + +typedef struct WSLA_CONTAINER_PROCESS_OPTIONS +{ + PCSTR executable; // Full path to executable inside container + PCSTR* commandLine; + UINT32 commandLineCount; + PCSTR* environment; + UINT32 environmentCount; + PCSTR currentDirectory; +} WSLA_CONTAINER_PROCESS_OPTIONS; + +typedef struct WSLA_CONTAINER_OPTIONS +{ + PCSTR image; // Image name (repository:tag) + PCSTR name; // Container runtime name (expected to allow DNS resolution between containers) + const WSLA_CONTAINER_PORT_MAPPING* ports; + UINT32 portsCount; + const WSLA_CONTAINER_VOLUME* volumes; + UINT32 volumesCount; + const WSLA_CONTAINER_GPU_OPTIONS* gpuOptions; + const WSLA_CONTAINER_PROCESS_OPTIONS* initProcessOptions; +} WSLA_CONTAINER_OPTIONS; + +typedef struct WSLA_CONTAINER_PROCESS +{ + UINT32 pid; + HANDLE exitEvent; + HANDLE stdin; + HANDLE stdout; + HANDLE stderr; +} WSLA_CONTAINER_PROCESS; + +DECLARE_HANDLE(WslaRuntimeContainer); + +STDAPI WslaCreateNewContainer( + _In_ WslaSession session, + _In_ const WSLA_CONTAINER_OPTIONS* options, + _Out_ WslaRuntimeContainer* container, + _Out_ WSLA_CONTAINER_PROCESS* initProcess); + +STDAPI WslaStartContainer( + _In_ WslaRuntimeContainer* container); + +STDAPI WslaStopContainer( + _In_ WslaRuntimeContainer* container); + +STDAPI WslaDeleteContainer( + _In_ WslaRuntimeContainer* container); + +STDAPI WslaRestartContainer( + _In_ WslaRuntimeContainer* container); + +typedef enum WSLA_CONTAINER_STATE +{ + WSLA_CONTAINER_STATE_INVALID = 0, + WSLA_CONTAINER_STATE_CREATED = 1, + WSLA_CONTAINER_STATE_RUNNING = 2, + WSLA_CONTAINER_STATE_EXITED = 3, + WSLA_CONTAINER_STATE_FAILED = 4, +} WSLA_CONTAINER_STATE; + +STDAPI WslaGetContainerState( + _In_ WslaRuntimeContainer* container, + _Out_ WSLA_CONTAINER_STATE* state); + +// Container Process + +STDAPI WslaCreateContainerProcess( + _In_ WslaRuntimeContainer* container, + _In_ const WSLA_CONTAINER_PROCESS_OPTIONS* options, + _Out_ WSLA_CONTAINER_PROCESS* process); + +typedef enum WSLA_CONTAINER_PROCESS_STATE +{ + WSLA_CONTAINER_PROCESS_STATE_UNKNOWN = 0, + WSLA_CONTAINER_PROCESS_STATE_RUNNING = 1, + WSLA_CONTAINER_PROCESS_STATE_EXITED = 2, + WSLA_CONTAINER_PROCESS_STATE_SIGNALED = 3 +} WSLA_CONTAINER_PROCESS_STATE; + +typedef struct WSLA_CONTAINER_PROCESS_RESULT +{ + WSLA_CONTAINER_PROCESS_STATE state; + INT32 exitCode; +} WSLA_CONTAINER_PROCESS_RESULT; + +HRESULT WslaGetContainerProcessResult( + _In_ const WSLA_CONTAINER_PROCESS* process, + _Out_ WSLA_CONTAINER_PROCESS_RESULT* result); + +HRESULT WslaSignalContainerProcess( + _In_ const WSLA_CONTAINER_PROCESS* process, + _In_ INT32 result); + +// Storage + +typedef enum WSLA_CREATE_VHD_TYPE +{ + WSLA_CREATE_VHD_TYPE_FIXED = 0, + WSLA_CREATE_VHD_TYPE_DYNAMIC = 1, +} WSLA_CREATE_VHD_TYPE; + +typedef struct WSLA_CREATE_VHD_OPTIONS +{ + PCWSTR vhdPath; + WSLA_CREATE_VHD_TYPE vhdType; + UINT64 maxSize; // Maximum size in bytes. +} WSLA_CREATE_VHD_OPTIONS; + +STDAPI WSLACreateVhd( + _In_ const WSLA_CREATE_VHD_OPTIONS* options); + +EXTERN_C_END \ No newline at end of file From ec7e2366932a95c735ba84da3cc0110ab9891ede Mon Sep 17 00:00:00 2001 From: yao-msft <50888816+yao-msft@users.noreply.github.com> Date: Wed, 3 Dec 2025 21:42:49 -0800 Subject: [PATCH 2/4] complete --- src/windows/wslasdk/CMakeLists.txt | 9 ++ src/windows/wslasdk/wsla.cpp | 142 +++++++++++++++++++++++++++++ src/windows/wslasdk/wsla.h | 24 ++--- src/windows/wslasdk/wslasdk.def | 22 +++++ 4 files changed, 185 insertions(+), 12 deletions(-) create mode 100644 src/windows/wslasdk/CMakeLists.txt create mode 100644 src/windows/wslasdk/wsla.cpp create mode 100644 src/windows/wslasdk/wslasdk.def diff --git a/src/windows/wslasdk/CMakeLists.txt b/src/windows/wslasdk/CMakeLists.txt new file mode 100644 index 000000000..f20516750 --- /dev/null +++ b/src/windows/wslasdk/CMakeLists.txt @@ -0,0 +1,9 @@ +set(SOURCES wsla.cpp) +set(HEADERS wsla.h) + +add_library(wslasdk SHARED ${SOURCES} ${HEADERS} wslasdk.def) +set_target_properties(wslasdk PROPERTIES EXCLUDE_FROM_ALL FALSE) +add_dependencies(wslasdk wslaserviceidl) +target_link_libraries(wslasdk ${COMMON_LINK_LIBRARIES} legacy_stdio_definitions common) +target_precompile_headers(wslasdk REUSE_FROM common) +set_target_properties(wslasdk PROPERTIES FOLDER windows) \ No newline at end of file diff --git a/src/windows/wslasdk/wsla.cpp b/src/windows/wslasdk/wsla.cpp new file mode 100644 index 000000000..2cfc2062a --- /dev/null +++ b/src/windows/wslasdk/wsla.cpp @@ -0,0 +1,142 @@ +/*++ + +Copyright (c) Microsoft. All rights reserved. + +Module Name: + + wsla.cpp + +Abstract: + + This file contains the public WSLA api implementations. + +--*/ + +#include "wsla.h" + +HRESULT WslaCanRun(_Out_ BOOL* canRun) +{ + return E_NOTIMPL; +} + +HRESULT WslaGetVersion(_Out_ WSLA_VERSION* version) +{ + return E_NOTIMPL; +} + +HRESULT WslaInstallWithDependencies( + _In_opt_ __callback progressCallback, + _In_opt_ PVOID context) +{ + return E_NOTIMPL; +} + +HRESULT WslaCreateSession( + _In_ const WSLA_CREATE_SESSION_OPTIONS* settings, + _Out_ WslaSession* sesssion) +{ + return E_NOTIMPL; +} + +HRESULT WslaReleaseSession( + _In_ WslaSession session) +{ + return E_NOTIMPL; +} + +HRESULT WslaPullContainerImage( + _In_ WslaSession session, + _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options) +{ + return E_NOTIMPL; +} + +HRESULT WslaImportContainerImage( + _In_ WslaSession session, + _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options) +{ + return E_NOTIMPL; +} + +HRESULT WslaListContainerImages( + _In_ WslaSession sesssion, + _Inout_ WSLA_CONTAINER_IMAGE_INFO* images, + _Inout_ UINT32* count) +{ + return E_NOTIMPL; +} + +HRESULT WslaDeleteContainerImage( + _In_ WslaSession session, + _In_ PCSTR imageName) +{ + return E_NOTIMPL; +} + +HRESULT WslaCreateNewContainer( + _In_ WslaSession session, + _In_ const WSLA_CONTAINER_OPTIONS* options, + _Out_ WslaRuntimeContainer* container, + _Out_ WSLA_CONTAINER_PROCESS* initProcess) +{ + return E_NOTIMPL; +} + +HRESULT WslaStartContainer( + _In_ WslaRuntimeContainer container) +{ + return E_NOTIMPL; +} + +HRESULT WslaStopContainer( + _In_ WslaRuntimeContainer container) +{ + return E_NOTIMPL; +} + +HRESULT WslaDeleteContainer( + _In_ WslaRuntimeContainer container) +{ + return E_NOTIMPL; +} + +HRESULT WslaRestartContainer( + _In_ WslaRuntimeContainer container) +{ + return E_NOTIMPL; +} + +HRESULT WslaGetContainerState( + _In_ WslaRuntimeContainer container, + _Out_ WSLA_CONTAINER_STATE* state) +{ + return E_NOTIMPL; +} + +HRESULT WslaCreateContainerProcess( + _In_ WslaRuntimeContainer container, + _In_ const WSLA_CONTAINER_PROCESS_OPTIONS* options, + _Out_ WSLA_CONTAINER_PROCESS* process) +{ + return E_NOTIMPL; +} + +HRESULT WslaGetContainerProcessResult( + _In_ const WSLA_CONTAINER_PROCESS* process, + _Out_ WSLA_CONTAINER_PROCESS_RESULT* result) +{ + return E_NOTIMPL; +} + +HRESULT WslaSignalContainerProcess( + _In_ WSLA_CONTAINER_PROCESS* process, + _In_ INT32 signal) +{ + return E_NOTIMPL; +} + +HRESULT WslaCreateVhd( + _In_ const WSLA_CREATE_VHD_OPTIONS* options); +{ + return E_NOTIMPL; +} \ No newline at end of file diff --git a/src/windows/wslasdk/wsla.h b/src/windows/wslasdk/wsla.h index 76deca70b..a3d6331bc 100644 --- a/src/windows/wslasdk/wsla.h +++ b/src/windows/wslasdk/wsla.h @@ -125,7 +125,7 @@ STDAPI WslaListContainerImages( _Inout_ WSLA_CONTAINER_IMAGE_INFO* images, _Inout_ UINT32* count); -STDAPI WslaDeleteImage( +STDAPI WslaDeleteContainerImage( _In_ WslaSession session, _In_ PCSTR imageName); @@ -191,16 +191,16 @@ STDAPI WslaCreateNewContainer( _Out_ WSLA_CONTAINER_PROCESS* initProcess); STDAPI WslaStartContainer( - _In_ WslaRuntimeContainer* container); + _In_ WslaRuntimeContainer container); STDAPI WslaStopContainer( - _In_ WslaRuntimeContainer* container); + _In_ WslaRuntimeContainer container); STDAPI WslaDeleteContainer( - _In_ WslaRuntimeContainer* container); + _In_ WslaRuntimeContainer container); STDAPI WslaRestartContainer( - _In_ WslaRuntimeContainer* container); + _In_ WslaRuntimeContainer container); typedef enum WSLA_CONTAINER_STATE { @@ -212,13 +212,13 @@ typedef enum WSLA_CONTAINER_STATE } WSLA_CONTAINER_STATE; STDAPI WslaGetContainerState( - _In_ WslaRuntimeContainer* container, + _In_ WslaRuntimeContainer container, _Out_ WSLA_CONTAINER_STATE* state); // Container Process STDAPI WslaCreateContainerProcess( - _In_ WslaRuntimeContainer* container, + _In_ WslaRuntimeContainer container, _In_ const WSLA_CONTAINER_PROCESS_OPTIONS* options, _Out_ WSLA_CONTAINER_PROCESS* process); @@ -236,13 +236,13 @@ typedef struct WSLA_CONTAINER_PROCESS_RESULT INT32 exitCode; } WSLA_CONTAINER_PROCESS_RESULT; -HRESULT WslaGetContainerProcessResult( +STDAPI WslaGetContainerProcessResult( _In_ const WSLA_CONTAINER_PROCESS* process, _Out_ WSLA_CONTAINER_PROCESS_RESULT* result); -HRESULT WslaSignalContainerProcess( - _In_ const WSLA_CONTAINER_PROCESS* process, - _In_ INT32 result); +STDAPI WslaSignalContainerProcess( + _In_ WSLA_CONTAINER_PROCESS* process, + _In_ INT32 signal); // Storage @@ -259,7 +259,7 @@ typedef struct WSLA_CREATE_VHD_OPTIONS UINT64 maxSize; // Maximum size in bytes. } WSLA_CREATE_VHD_OPTIONS; -STDAPI WSLACreateVhd( +STDAPI WslaCreateVhd( _In_ const WSLA_CREATE_VHD_OPTIONS* options); EXTERN_C_END \ No newline at end of file diff --git a/src/windows/wslasdk/wslasdk.def b/src/windows/wslasdk/wslasdk.def new file mode 100644 index 000000000..bfafd3dae --- /dev/null +++ b/src/windows/wslasdk/wslasdk.def @@ -0,0 +1,22 @@ +LIBRARY wslasdk + +EXPORTS + WslaCanRun + WslaGetVersion + WslaInstallWithDependencies + WslaCreateSession + WslaReleaseSession + WslaPullContainerImage + WslaImportContainerImage + WslaListContainerImages + WslaDeleteContainerImage + WslaCreateNewContainer + WslaStartContainer + WslaStopContainer + WslaDeleteContainer + WslaRestartContainer + WslaGetContainerState + WslaCreateContainerProcess + WslaGetContainerProcessResult + WslaSignalContainerProcess + WslaCreateVhd From 4ce8e7e09d61e3c41d8866f24bd1882089d888d5 Mon Sep 17 00:00:00 2001 From: yao-msft <50888816+yao-msft@users.noreply.github.com> Date: Thu, 4 Dec 2025 10:04:47 -0800 Subject: [PATCH 3/4] fix build --- CMakeLists.txt | 1 + src/windows/wslasdk/wsla.cpp | 10 ++++++---- src/windows/wslasdk/wsla.h | 14 +++++++------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d5f7651e8..a1d62c548 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -431,6 +431,7 @@ add_subdirectory(src/windows/wslhost) add_subdirectory(src/windows/wslrelay) add_subdirectory(src/windows/wslinstall) add_subdirectory(src/windows/wslaclient) +add_subdirectory(src/windows/wslasdk) if (WSL_BUILD_WSL_SETTINGS) add_subdirectory(src/windows/libwsl) diff --git a/src/windows/wslasdk/wsla.cpp b/src/windows/wslasdk/wsla.cpp index 2cfc2062a..52b114f69 100644 --- a/src/windows/wslasdk/wsla.cpp +++ b/src/windows/wslasdk/wsla.cpp @@ -14,18 +14,20 @@ Module Name: #include "wsla.h" -HRESULT WslaCanRun(_Out_ BOOL* canRun) +HRESULT WslaCanRun( + _Out_ BOOL* canRun) { return E_NOTIMPL; } -HRESULT WslaGetVersion(_Out_ WSLA_VERSION* version) +HRESULT WslaGetVersion( + _Out_ WSLA_VERSION* version) { return E_NOTIMPL; } HRESULT WslaInstallWithDependencies( - _In_opt_ __callback progressCallback, + _In_opt_ __callback WslaInstallCallback progressCallback, _In_opt_ PVOID context) { return E_NOTIMPL; @@ -136,7 +138,7 @@ HRESULT WslaSignalContainerProcess( } HRESULT WslaCreateVhd( - _In_ const WSLA_CREATE_VHD_OPTIONS* options); + _In_ const WSLA_CREATE_VHD_OPTIONS* options) { return E_NOTIMPL; } \ No newline at end of file diff --git a/src/windows/wslasdk/wsla.h b/src/windows/wslasdk/wsla.h index a3d6331bc..4c6b8cc13 100644 --- a/src/windows/wslasdk/wsla.h +++ b/src/windows/wslasdk/wsla.h @@ -44,10 +44,10 @@ typedef __callback VOID(CALLBACK WslaInstallCallback)( _In_ WSLA_INSTALL_COMPONENT component, _In_ UINT32 progress, _In_ UINT32 total, - _In_opt PVOID context); + _In_opt_ PVOID context); STDAPI WslaInstallWithDependencies( - _In_opt_ __callback progressCallback, + _In_opt_ __callback WslaInstallCallback progressCallback, _In_opt_ PVOID context); // Session @@ -71,11 +71,11 @@ typedef struct WSLA_CREATE_SESSION_OPTIONS PVOID terminationCallbackContext; } WSLA_CREATE_SESSION_OPTIONS; -DECLARE_HANDLE(WslaSession) +DECLARE_HANDLE(WslaSession); STDAPI WslaCreateSession( _In_ const WSLA_CREATE_SESSION_OPTIONS* settings, - _Out_ WslaSession* sesssion); + _Out_ WslaSession* session); STDAPI WslaReleaseSession( _In_ WslaSession session); @@ -177,9 +177,9 @@ typedef struct WSLA_CONTAINER_PROCESS { UINT32 pid; HANDLE exitEvent; - HANDLE stdin; - HANDLE stdout; - HANDLE stderr; + HANDLE stdIn; + HANDLE stdOut; + HANDLE stdErr; } WSLA_CONTAINER_PROCESS; DECLARE_HANDLE(WslaRuntimeContainer); From 261714c184e3b1573c339ebb8380e336a15ab024 Mon Sep 17 00:00:00 2001 From: yao-msft <50888816+yao-msft@users.noreply.github.com> Date: Thu, 4 Dec 2025 10:31:44 -0800 Subject: [PATCH 4/4] clang --- src/windows/wslasdk/wsla.cpp | 72 ++++++++--------------------- src/windows/wslasdk/wsla.h | 88 ++++++++++-------------------------- 2 files changed, 42 insertions(+), 118 deletions(-) diff --git a/src/windows/wslasdk/wsla.cpp b/src/windows/wslasdk/wsla.cpp index 52b114f69..7a8b3e736 100644 --- a/src/windows/wslasdk/wsla.cpp +++ b/src/windows/wslasdk/wsla.cpp @@ -14,131 +14,97 @@ Module Name: #include "wsla.h" -HRESULT WslaCanRun( - _Out_ BOOL* canRun) +HRESULT WslaCanRun(_Out_ BOOL* canRun) { return E_NOTIMPL; } -HRESULT WslaGetVersion( - _Out_ WSLA_VERSION* version) +HRESULT WslaGetVersion(_Out_ WSLA_VERSION* version) { return E_NOTIMPL; } -HRESULT WslaInstallWithDependencies( - _In_opt_ __callback WslaInstallCallback progressCallback, - _In_opt_ PVOID context) +HRESULT WslaInstallWithDependencies(_In_opt_ __callback WslaInstallCallback progressCallback, _In_opt_ PVOID context) { return E_NOTIMPL; } -HRESULT WslaCreateSession( - _In_ const WSLA_CREATE_SESSION_OPTIONS* settings, - _Out_ WslaSession* sesssion) +HRESULT WslaCreateSession(_In_ const WSLA_CREATE_SESSION_OPTIONS* settings, _Out_ WslaSession* sesssion) { return E_NOTIMPL; } -HRESULT WslaReleaseSession( - _In_ WslaSession session) +HRESULT WslaReleaseSession(_In_ WslaSession session) { return E_NOTIMPL; } -HRESULT WslaPullContainerImage( - _In_ WslaSession session, - _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options) +HRESULT WslaPullContainerImage(_In_ WslaSession session, _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options) { return E_NOTIMPL; } -HRESULT WslaImportContainerImage( - _In_ WslaSession session, - _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options) +HRESULT WslaImportContainerImage(_In_ WslaSession session, _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options) { return E_NOTIMPL; } -HRESULT WslaListContainerImages( - _In_ WslaSession sesssion, - _Inout_ WSLA_CONTAINER_IMAGE_INFO* images, - _Inout_ UINT32* count) +HRESULT WslaListContainerImages(_In_ WslaSession sesssion, _Inout_ WSLA_CONTAINER_IMAGE_INFO* images, _Inout_ UINT32* count) { return E_NOTIMPL; } -HRESULT WslaDeleteContainerImage( - _In_ WslaSession session, - _In_ PCSTR imageName) +HRESULT WslaDeleteContainerImage(_In_ WslaSession session, _In_ PCSTR imageName) { return E_NOTIMPL; } -HRESULT WslaCreateNewContainer( - _In_ WslaSession session, - _In_ const WSLA_CONTAINER_OPTIONS* options, - _Out_ WslaRuntimeContainer* container, - _Out_ WSLA_CONTAINER_PROCESS* initProcess) +HRESULT WslaCreateNewContainer(_In_ WslaSession session, _In_ const WSLA_CONTAINER_OPTIONS* options, _Out_ WslaRuntimeContainer* container, _Out_ WSLA_CONTAINER_PROCESS* initProcess) { return E_NOTIMPL; } -HRESULT WslaStartContainer( - _In_ WslaRuntimeContainer container) +HRESULT WslaStartContainer(_In_ WslaRuntimeContainer container) { return E_NOTIMPL; } -HRESULT WslaStopContainer( - _In_ WslaRuntimeContainer container) +HRESULT WslaStopContainer(_In_ WslaRuntimeContainer container) { return E_NOTIMPL; } -HRESULT WslaDeleteContainer( - _In_ WslaRuntimeContainer container) +HRESULT WslaDeleteContainer(_In_ WslaRuntimeContainer container) { return E_NOTIMPL; } -HRESULT WslaRestartContainer( - _In_ WslaRuntimeContainer container) +HRESULT WslaRestartContainer(_In_ WslaRuntimeContainer container) { return E_NOTIMPL; } -HRESULT WslaGetContainerState( - _In_ WslaRuntimeContainer container, - _Out_ WSLA_CONTAINER_STATE* state) +HRESULT WslaGetContainerState(_In_ WslaRuntimeContainer container, _Out_ WSLA_CONTAINER_STATE* state) { return E_NOTIMPL; } -HRESULT WslaCreateContainerProcess( - _In_ WslaRuntimeContainer container, - _In_ const WSLA_CONTAINER_PROCESS_OPTIONS* options, - _Out_ WSLA_CONTAINER_PROCESS* process) +HRESULT WslaCreateContainerProcess(_In_ WslaRuntimeContainer container, _In_ const WSLA_CONTAINER_PROCESS_OPTIONS* options, _Out_ WSLA_CONTAINER_PROCESS* process) { return E_NOTIMPL; } -HRESULT WslaGetContainerProcessResult( - _In_ const WSLA_CONTAINER_PROCESS* process, - _Out_ WSLA_CONTAINER_PROCESS_RESULT* result) +HRESULT WslaGetContainerProcessResult(_In_ const WSLA_CONTAINER_PROCESS* process, _Out_ WSLA_CONTAINER_PROCESS_RESULT* result) { return E_NOTIMPL; } -HRESULT WslaSignalContainerProcess( - _In_ WSLA_CONTAINER_PROCESS* process, - _In_ INT32 signal) +HRESULT WslaSignalContainerProcess(_In_ WSLA_CONTAINER_PROCESS* process, _In_ INT32 signal) { return E_NOTIMPL; } -HRESULT WslaCreateVhd( - _In_ const WSLA_CREATE_VHD_OPTIONS* options) +HRESULT WslaCreateVhd(_In_ const WSLA_CREATE_VHD_OPTIONS* options) { return E_NOTIMPL; } \ No newline at end of file diff --git a/src/windows/wslasdk/wsla.h b/src/windows/wslasdk/wsla.h index 4c6b8cc13..b1088809e 100644 --- a/src/windows/wslasdk/wsla.h +++ b/src/windows/wslasdk/wsla.h @@ -19,8 +19,7 @@ EXTERN_C_START // Wsla Install -STDAPI WslaCanRun( - _Out_ BOOL* canRun); +STDAPI WslaCanRun(_Out_ BOOL* canRun); typedef struct WSLA_VERSION { @@ -29,8 +28,7 @@ typedef struct WSLA_VERSION UINT32 revision; } WSLA_VERSION; -STDAPI WslaGetVersion( - _Out_ WSLA_VERSION* version); +STDAPI WslaGetVersion(_Out_ WSLA_VERSION* version); typedef enum WSLA_INSTALL_COMPONENT { @@ -40,15 +38,9 @@ typedef enum WSLA_INSTALL_COMPONENT WSLA_INSTALL_COMPONENT_WSL_PACKAGE = 4, } WSLA_INSTALL_COMPONENT; -typedef __callback VOID(CALLBACK WslaInstallCallback)( - _In_ WSLA_INSTALL_COMPONENT component, - _In_ UINT32 progress, - _In_ UINT32 total, - _In_opt_ PVOID context); +typedef __callback VOID(CALLBACK WslaInstallCallback)(_In_ WSLA_INSTALL_COMPONENT component, _In_ UINT32 progress, _In_ UINT32 total, _In_opt_ PVOID context); -STDAPI WslaInstallWithDependencies( - _In_opt_ __callback WslaInstallCallback progressCallback, - _In_opt_ PVOID context); +STDAPI WslaInstallWithDependencies(_In_opt_ __callback WslaInstallCallback progressCallback, _In_opt_ PVOID context); // Session @@ -59,9 +51,7 @@ typedef enum WSLA_SESSION_TERMINATION_REASON WSLA_SESSION_TERMINATION_REASON_CRASHED = 2, } WSLA_SESSION_TERMINATION_REASON; -typedef __callback VOID (CALLBACK WslaSessionTerminationCallback)( - _In_ WSLA_SESSION_TERMINATION_REASON reason, - _In_opt_ PVOID context); +typedef __callback VOID(CALLBACK WslaSessionTerminationCallback)(_In_ WSLA_SESSION_TERMINATION_REASON reason, _In_opt_ PVOID context); typedef struct WSLA_CREATE_SESSION_OPTIONS { @@ -73,19 +63,13 @@ typedef struct WSLA_CREATE_SESSION_OPTIONS DECLARE_HANDLE(WslaSession); -STDAPI WslaCreateSession( - _In_ const WSLA_CREATE_SESSION_OPTIONS* settings, - _Out_ WslaSession* session); +STDAPI WslaCreateSession(_In_ const WSLA_CREATE_SESSION_OPTIONS* settings, _Out_ WslaSession* session); -STDAPI WslaReleaseSession( - _In_ WslaSession session); +STDAPI WslaReleaseSession(_In_ WslaSession session); // Container image -typedef __callback VOID(CALLBACK WslaContainerImageProgressCallback)( - _In_ UINT32 progress, - _In_ UINT32 total, - _In_opt_ PVOID context); +typedef __callback VOID(CALLBACK WslaContainerImageProgressCallback)(_In_ UINT32 progress, _In_ UINT32 total, _In_opt_ PVOID context); typedef struct WLSA_PULL_CONTAINER_IMAGE_OPTIONS { @@ -98,9 +82,7 @@ typedef struct WLSA_PULL_CONTAINER_IMAGE_OPTIONS PCSTR password; } WLSA_PULL_CONTAINER_IMAGE_OPTIONS; -STDAPI WslaPullContainerImage( - _In_ WslaSession session, - _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options); +STDAPI WslaPullContainerImage(_In_ WslaSession session, _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options); typedef struct WLSA_IMPORT_CONTAINER_IMAGE_OPTIONS { @@ -109,9 +91,7 @@ typedef struct WLSA_IMPORT_CONTAINER_IMAGE_OPTIONS PVOID progressCallbackContext; } WLSA_IMPORT_CONTAINER_IMAGE_OPTIONS; -STDAPI WslaImportContainerImage( - _In_ WslaSession session, - _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options); +STDAPI WslaImportContainerImage(_In_ WslaSession session, _In_ const WLSA_PULL_CONTAINER_IMAGE_OPTIONS* options); typedef struct WSLA_CONTAINER_IMAGE_INFO { @@ -120,14 +100,9 @@ typedef struct WSLA_CONTAINER_IMAGE_INFO UINT8 sha256[32]; } WSLA_CONTAINER_IMAGE_INFO; -STDAPI WslaListContainerImages( - _In_ WslaSession sesssion, - _Inout_ WSLA_CONTAINER_IMAGE_INFO* images, - _Inout_ UINT32* count); +STDAPI WslaListContainerImages(_In_ WslaSession sesssion, _Inout_ WSLA_CONTAINER_IMAGE_INFO* images, _Inout_ UINT32* count); -STDAPI WslaDeleteContainerImage( - _In_ WslaSession session, - _In_ PCSTR imageName); +STDAPI WslaDeleteContainerImage(_In_ WslaSession session, _In_ PCSTR imageName); // Container @@ -164,7 +139,7 @@ typedef struct WSLA_CONTAINER_PROCESS_OPTIONS typedef struct WSLA_CONTAINER_OPTIONS { PCSTR image; // Image name (repository:tag) - PCSTR name; // Container runtime name (expected to allow DNS resolution between containers) + PCSTR name; // Container runtime name (expected to allow DNS resolution between containers) const WSLA_CONTAINER_PORT_MAPPING* ports; UINT32 portsCount; const WSLA_CONTAINER_VOLUME* volumes; @@ -185,22 +160,15 @@ typedef struct WSLA_CONTAINER_PROCESS DECLARE_HANDLE(WslaRuntimeContainer); STDAPI WslaCreateNewContainer( - _In_ WslaSession session, - _In_ const WSLA_CONTAINER_OPTIONS* options, - _Out_ WslaRuntimeContainer* container, - _Out_ WSLA_CONTAINER_PROCESS* initProcess); + _In_ WslaSession session, _In_ const WSLA_CONTAINER_OPTIONS* options, _Out_ WslaRuntimeContainer* container, _Out_ WSLA_CONTAINER_PROCESS* initProcess); -STDAPI WslaStartContainer( - _In_ WslaRuntimeContainer container); +STDAPI WslaStartContainer(_In_ WslaRuntimeContainer container); -STDAPI WslaStopContainer( - _In_ WslaRuntimeContainer container); +STDAPI WslaStopContainer(_In_ WslaRuntimeContainer container); -STDAPI WslaDeleteContainer( - _In_ WslaRuntimeContainer container); +STDAPI WslaDeleteContainer(_In_ WslaRuntimeContainer container); -STDAPI WslaRestartContainer( - _In_ WslaRuntimeContainer container); +STDAPI WslaRestartContainer(_In_ WslaRuntimeContainer container); typedef enum WSLA_CONTAINER_STATE { @@ -211,16 +179,11 @@ typedef enum WSLA_CONTAINER_STATE WSLA_CONTAINER_STATE_FAILED = 4, } WSLA_CONTAINER_STATE; -STDAPI WslaGetContainerState( - _In_ WslaRuntimeContainer container, - _Out_ WSLA_CONTAINER_STATE* state); +STDAPI WslaGetContainerState(_In_ WslaRuntimeContainer container, _Out_ WSLA_CONTAINER_STATE* state); // Container Process -STDAPI WslaCreateContainerProcess( - _In_ WslaRuntimeContainer container, - _In_ const WSLA_CONTAINER_PROCESS_OPTIONS* options, - _Out_ WSLA_CONTAINER_PROCESS* process); +STDAPI WslaCreateContainerProcess(_In_ WslaRuntimeContainer container, _In_ const WSLA_CONTAINER_PROCESS_OPTIONS* options, _Out_ WSLA_CONTAINER_PROCESS* process); typedef enum WSLA_CONTAINER_PROCESS_STATE { @@ -236,13 +199,9 @@ typedef struct WSLA_CONTAINER_PROCESS_RESULT INT32 exitCode; } WSLA_CONTAINER_PROCESS_RESULT; -STDAPI WslaGetContainerProcessResult( - _In_ const WSLA_CONTAINER_PROCESS* process, - _Out_ WSLA_CONTAINER_PROCESS_RESULT* result); +STDAPI WslaGetContainerProcessResult(_In_ const WSLA_CONTAINER_PROCESS* process, _Out_ WSLA_CONTAINER_PROCESS_RESULT* result); -STDAPI WslaSignalContainerProcess( - _In_ WSLA_CONTAINER_PROCESS* process, - _In_ INT32 signal); +STDAPI WslaSignalContainerProcess(_In_ WSLA_CONTAINER_PROCESS* process, _In_ INT32 signal); // Storage @@ -259,7 +218,6 @@ typedef struct WSLA_CREATE_VHD_OPTIONS UINT64 maxSize; // Maximum size in bytes. } WSLA_CREATE_VHD_OPTIONS; -STDAPI WslaCreateVhd( - _In_ const WSLA_CREATE_VHD_OPTIONS* options); +STDAPI WslaCreateVhd(_In_ const WSLA_CREATE_VHD_OPTIONS* options); EXTERN_C_END \ No newline at end of file