@@ -560,12 +560,12 @@ typedef struct _WSLCVolumeInformation
560560 char Type[64];
561561} WSLCVolumeInformation;
562562
563- typedef struct _WSLCContainerPruneFilter
563+ typedef struct _WSLCPruneLabelFilter
564564{
565565 LPCSTR Key;
566566 [unique] LPCSTR Value;
567567 BOOL Present;
568- } WSLCContainerPruneFilter ;
568+ } WSLCPruneLabelFilter ;
569569
570570typedef struct _WSLCPruneContainersResults
571571{
@@ -574,6 +574,26 @@ typedef struct _WSLCPruneContainersResults
574574 ULONGLONG SpaceReclaimed;
575575} WSLCPruneContainersResults;
576576
577+ typedef enum _WSLCPruneImagesFlags
578+ {
579+ WSLCPruneImagesFlagsNone = 0,
580+ WSLCPruneImagesFlagsDanglingTrue = 1, // Only prune dangling (untagged) images.
581+ WSLCPruneImagesFlagsDanglingFalse = 2, // Prune all images not used by any container.
582+ // Note: If neither dangling flag is set, no dangling filter is passed (Docker defaults to dangling-only).
583+ } WSLCPruneImagesFlags;
584+
585+ cpp_quote("#define WSLCPruneImagesFlagsValid (WSLCPruneImagesFlagsDanglingTrue | WSLCPruneImagesFlagsDanglingFalse)")
586+
587+ cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(WSLCPruneImagesFlags);")
588+
589+ typedef struct _WSLCPruneImagesOptions
590+ {
591+ DWORD Flags; // WSLCPruneImagesFlags
592+ ULONGLONG Until;
593+ [unique, size_is(LabelsCount)] const WSLCPruneLabelFilter* Labels;
594+ ULONG LabelsCount;
595+ } WSLCPruneImagesOptions;
596+
577597typedef enum _WSLCSessionState
578598{
579599 WSLCSessionStateRunning = 0,
@@ -615,6 +635,7 @@ interface IWSLCSession : IUnknown
615635 HRESULT DeleteImage([in] const WSLCDeleteImageOptions* Options, [out, size_is(, *Count)] WSLCDeletedImageInformation** DeletedImages, [out] ULONG* Count);
616636 HRESULT TagImage([in] const WSLCTagImageOptions* Options);
617637 HRESULT InspectImage([in] LPCSTR ImageNameOrId, [out] LPSTR* Output);
638+ HRESULT PruneImages([in, unique] const WSLCPruneImagesOptions* Options, [out, size_is(, *DeletedImagesCount)] WSLCDeletedImageInformation** DeletedImages, [out] ULONG* DeletedImagesCount, [out] ULONGLONG* SpaceReclaimed);
618639
619640 // Container management.
620641 HRESULT CreateContainer([in] const WSLCContainerOptions* Options, [out] IWSLCContainer** Container);
@@ -623,7 +644,7 @@ interface IWSLCSession : IUnknown
623644 [out] ULONG* Count,
624645 [out, size_is(, *PortsCount)] WSLCContainerPortMapping** Ports,
625646 [out] ULONG* PortsCount);
626- HRESULT PruneContainers([in, unique, size_is(FiltersCount)] WSLCContainerPruneFilter * Filters, [in] DWORD FiltersCount, [in] ULONGLONG Until, [out] WSLCPruneContainersResults* Result);
647+ HRESULT PruneContainers([in, unique, size_is(FiltersCount)] WSLCPruneLabelFilter * Filters, [in] DWORD FiltersCount, [in] ULONGLONG Until, [out] WSLCPruneContainersResults* Result);
627648
628649 // Create a process at the VM level. This is meant for debugging.
629650 HRESULT CreateRootNamespaceProcess([in, ref] LPCSTR Executable, [in, ref] const WSLCProcessOptions* Options, [out] IWSLCProcess** Process, [out] int* Errno);
@@ -740,5 +761,7 @@ cpp_quote("#define WSLC_E_IMAGE_NOT_FOUND MAKE_HRESULT(SEVERITY_ERROR, FACILITY_
740761cpp_quote("#define WSLC_E_CONTAINER_PREFIX_AMBIGUOUS MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, WSLC_E_BASE + 2) /* 0x80040602 */")
741762cpp_quote("#define WSLC_E_CONTAINER_NOT_FOUND MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, WSLC_E_BASE + 3) /* 0x80040603 */")
742763cpp_quote("#define WSLC_E_VOLUME_NOT_FOUND MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, WSLC_E_BASE + 4) /* 0x80040604 */")
743- cpp_quote("#define WSLC_E_SESSION_RESERVED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, WSLC_E_BASE + 5) /* 0x80040605 */")
744- cpp_quote("#define WSLC_E_INVALID_SESSION_NAME MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, WSLC_E_BASE + 6) /* 0x80040606 */")
764+ cpp_quote("#define WSLC_E_CONTAINER_NOT_RUNNING MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, WSLC_E_BASE + 5) /* 0x80040605 */")
765+ cpp_quote("#define WSLC_E_CONTAINER_IS_RUNNING MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, WSLC_E_BASE + 6) /* 0x80040606 */")
766+ cpp_quote("#define WSLC_E_SESSION_RESERVED MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, WSLC_E_BASE + 7) /* 0x80040607 */")
767+ cpp_quote("#define WSLC_E_INVALID_SESSION_NAME MAKE_HRESULT(SEVERITY_ERROR, FACILITY_ITF, WSLC_E_BASE + 8) /* 0x80040608 */")
0 commit comments