#![allow(non_snake_case, non_camel_case_types)]
pub mod errors;
pub mod types;
pub use errors::*;
pub use types::*;
use core::ffi::c_void;
use windows_sys::Win32::Foundation::HANDLE;
use windows_sys::core::HRESULT;
unsafe extern "system" {
pub fn WslcGetVersion(version: *mut WslcVersion) -> HRESULT;
pub fn WslcGetMissingComponents(missingComponents: *mut WslcComponentFlags) -> HRESULT;
pub fn WslcInstallWithDependencies(
components: WslcComponentFlags,
options: WslcInstallOptions,
progressCallback: WslcInstallCallback,
context: *mut c_void,
) -> HRESULT;
pub fn WslcInitSessionSettings(
name: *const u16,
storagePath: *const u16,
sessionSettings: *mut WslcSessionSettings,
) -> HRESULT;
pub fn WslcSetSessionSettingsCpuCount(
sessionSettings: *mut WslcSessionSettings,
cpuCount: u32,
) -> HRESULT;
pub fn WslcSetSessionSettingsMemory(
sessionSettings: *mut WslcSessionSettings,
memoryMB: u32,
) -> HRESULT;
pub fn WslcSetSessionSettingsTimeout(
sessionSettings: *mut WslcSessionSettings,
timeoutMS: u32,
) -> HRESULT;
pub fn WslcSetSessionSettingsVhd(
sessionSettings: *mut WslcSessionSettings,
vhdRequirements: *const WslcVhdRequirements,
) -> HRESULT;
pub fn WslcSetSessionSettingsFeatureFlags(
sessionSettings: *mut WslcSessionSettings,
flags: WslcSessionFeatureFlags,
) -> HRESULT;
pub fn WslcCreateSession(
sessionSettings: *mut WslcSessionSettings,
session: *mut WslcSession,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcGetSessionTerminationEvent(
session: WslcSession,
terminationEvent: *mut HANDLE,
) -> HRESULT;
pub fn WslcGetSessionTerminationReason(
session: WslcSession,
reason: *mut WslcSessionTerminationReason,
) -> HRESULT;
pub fn WslcTerminateSession(session: WslcSession) -> HRESULT;
pub fn WslcReleaseSession(session: WslcSession) -> HRESULT;
pub fn WslcRegisterSessionCrashDumpCallback(
session: WslcSession,
crashDumpCallback: WslcSessionCrashDumpCallback,
crashDumpContext: *mut c_void,
subscription: *mut WslcCrashDumpSubscription,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcReleaseCrashDumpSubscription(subscription: WslcCrashDumpSubscription) -> HRESULT;
pub fn WslcInitContainerSettings(
imageName: *const i8,
containerSettings: *mut WslcContainerSettings,
) -> HRESULT;
pub fn WslcSetContainerSettingsName(
containerSettings: *mut WslcContainerSettings,
name: *const i8,
) -> HRESULT;
pub fn WslcSetContainerSettingsInitProcess(
containerSettings: *mut WslcContainerSettings,
initProcess: *mut WslcProcessSettings,
) -> HRESULT;
pub fn WslcSetContainerSettingsNetworkingMode(
containerSettings: *mut WslcContainerSettings,
networkingMode: WslcContainerNetworkingMode,
) -> HRESULT;
pub fn WslcSetContainerSettingsHostName(
containerSettings: *mut WslcContainerSettings,
hostName: *const i8,
) -> HRESULT;
pub fn WslcSetContainerSettingsDomainName(
containerSettings: *mut WslcContainerSettings,
domainName: *const i8,
) -> HRESULT;
pub fn WslcSetContainerSettingsFlags(
containerSettings: *mut WslcContainerSettings,
flags: WslcContainerFlags,
) -> HRESULT;
pub fn WslcSetContainerSettingsPortMappings(
containerSettings: *mut WslcContainerSettings,
portMappings: *const WslcContainerPortMapping,
portMappingCount: u32,
) -> HRESULT;
pub fn WslcSetContainerSettingsVolumes(
containerSettings: *mut WslcContainerSettings,
volumes: *const WslcContainerVolume,
volumeCount: u32,
) -> HRESULT;
pub fn WslcSetContainerSettingsNamedVolumes(
containerSettings: *mut WslcContainerSettings,
namedVolumes: *const WslcContainerNamedVolume,
namedVolumeCount: u32,
) -> HRESULT;
pub fn WslcCreateContainer(
session: WslcSession,
containerSettings: *const WslcContainerSettings,
container: *mut WslcContainer,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcOpenContainer(
session: WslcSession,
nameOrId: *const i8,
container: *mut WslcContainer,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcStartContainer(
container: WslcContainer,
flags: WslcContainerStartFlags,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcStopContainer(
container: WslcContainer,
signal: WslcSignal,
timeoutSeconds: u32,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcDeleteContainer(
container: WslcContainer,
flags: WslcDeleteContainerFlags,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcReleaseContainer(container: WslcContainer) -> HRESULT;
pub fn WslcGetContainerID(container: WslcContainer, containerID: *mut i8) -> HRESULT;
pub fn WslcGetContainerInitProcess(
container: WslcContainer,
initProcess: *mut WslcProcess,
) -> HRESULT;
pub fn WslcInspectContainer(container: WslcContainer, inspectData: *mut *mut i8) -> HRESULT;
pub fn WslcGetContainerState(
container: WslcContainer,
state: *mut WslcContainerState,
) -> HRESULT;
pub fn WslcSetContainerInitProcessIOCallbacks(
container: WslcContainer,
callbacks: *const WslcProcessCallbacks,
context: *mut c_void,
) -> HRESULT;
pub fn WslcInitProcessSettings(processSettings: *mut WslcProcessSettings) -> HRESULT;
pub fn WslcSetProcessSettingsWorkingDirectory(
processSettings: *mut WslcProcessSettings,
workingDirectory: *const i8,
) -> HRESULT;
pub fn WslcSetProcessSettingsCmdLine(
processSettings: *mut WslcProcessSettings,
argv: *const *const i8,
argc: usize,
) -> HRESULT;
pub fn WslcSetProcessSettingsEnvVariables(
processSettings: *mut WslcProcessSettings,
keyValue: *const *const i8,
argc: usize,
) -> HRESULT;
pub fn WslcSetProcessSettingsFlags(
processSettings: *mut WslcProcessSettings,
flags: WslcProcessFlags,
) -> HRESULT;
pub fn WslcSetProcessSettingsCallbacks(
processSettings: *mut WslcProcessSettings,
callbacks: *const WslcProcessCallbacks,
context: *mut c_void,
) -> HRESULT;
pub fn WslcCreateContainerProcess(
container: WslcContainer,
newProcessSettings: *mut WslcProcessSettings,
newProcess: *mut WslcProcess,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcGetProcessPid(process: WslcProcess, pid: *mut u32) -> HRESULT;
pub fn WslcGetProcessExitEvent(process: WslcProcess, exitEvent: *mut HANDLE) -> HRESULT;
pub fn WslcGetProcessState(process: WslcProcess, state: *mut WslcProcessState) -> HRESULT;
pub fn WslcGetProcessExitCode(process: WslcProcess, exitCode: *mut i32) -> HRESULT;
pub fn WslcSignalProcess(process: WslcProcess, signal: WslcSignal) -> HRESULT;
pub fn WslcGetProcessIOHandle(
process: WslcProcess,
ioHandle: WslcProcessIOHandle,
handle: *mut HANDLE,
) -> HRESULT;
pub fn WslcReleaseProcess(process: WslcProcess) -> HRESULT;
pub fn WslcListSessionImages(
session: WslcSession,
images: *mut *mut WslcImageInfo,
count: *mut u32,
) -> HRESULT;
pub fn WslcPullSessionImage(
session: WslcSession,
options: *const WslcPullImageOptions,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcImportSessionImage(
session: WslcSession,
imageName: *const i8,
imageContent: HANDLE,
imageContentBytes: u64,
options: *const WslcImportImageOptions,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcImportSessionImageFromFile(
session: WslcSession,
imageName: *const i8,
path: *const u16,
options: *const WslcImportImageOptions,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcLoadSessionImage(
session: WslcSession,
imageContent: HANDLE,
imageContentBytes: u64,
options: *const WslcLoadImageOptions,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcLoadSessionImageFromFile(
session: WslcSession,
path: *const u16,
options: *const WslcLoadImageOptions,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcTagSessionImage(
session: WslcSession,
options: *const WslcTagImageOptions,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcPushSessionImage(
session: WslcSession,
options: *const WslcPushImageOptions,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcDeleteSessionImage(
session: WslcSession,
nameOrID: *const i8,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcSessionAuthenticate(
session: WslcSession,
serverAddress: *const i8,
username: *const i8,
password: *const i8,
identityToken: *mut *mut i8,
tokenType: *mut WslcIdentityTokenType,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcCreateSessionVhdVolume(
session: WslcSession,
options: *const WslcVhdRequirements,
errorMessage: *mut *mut u16,
) -> HRESULT;
pub fn WslcDeleteSessionVhdVolume(
session: WslcSession,
name: *const i8,
errorMessage: *mut *mut u16,
) -> HRESULT;
}