#![cfg_attr(docsrs, feature(doc_auto_cfg))]
#![deny(unsafe_op_in_unsafe_fn)]
#![warn(rust_2018_idioms)]
#![warn(clippy::undocumented_unsafe_blocks)]
#![warn(clippy::missing_safety_doc)]
#![warn(missing_docs, missing_debug_implementations)]
#[cfg(not(windows))]
compile_error!("wslcsdk 仅支持 Windows 平台:WSLC 依赖 Win32 COM/RPC 与系统组件 wslcsdk.dll");
#[cfg(windows)]
pub mod async_ops;
#[cfg(windows)]
pub mod channel;
#[cfg(windows)]
pub mod client;
#[cfg(windows)]
pub mod com;
#[cfg(windows)]
pub mod com_memory;
#[cfg(windows)]
pub mod container;
#[cfg(windows)]
pub mod error;
#[cfg(windows)]
pub mod image;
#[cfg(windows)]
pub mod process;
#[cfg(windows)]
pub mod registry;
#[cfg(windows)]
pub mod session;
#[cfg(windows)]
pub mod system;
#[cfg(windows)]
pub mod volume;
#[cfg(windows)]
pub use channel::{AsyncReceiver, AsyncRecvError};
#[cfg(windows)]
pub use client::{WslcClient, WslcClientBuilder};
#[cfg(windows)]
pub use com::{ComGuard, ProcessMtaGuard, init_process_mta, try_initialize_mta, with_mta};
#[cfg(windows)]
pub use com_memory::{ComAnsiString, ComArray, ComWideString};
#[cfg(windows)]
pub use container::{ContainerBuilder, ContainerPortMappingData, WslcContainerHandle};
#[cfg(windows)]
pub use error::{WslcDomainError, WslcError};
#[cfg(windows)]
pub use image::{ImageInfo, ImageProgress, OwnedImageProgress, WslcImageManager};
#[cfg(windows)]
pub use process::{ProcessBuilder, ProcessStreams, WslcProcessHandle};
#[cfg(windows)]
pub use registry::{AuthTokenResult, WslcRegistryManager};
#[cfg(windows)]
pub use session::{CrashDumpSubscription, SessionBuilder, WslcSessionHandle};
#[cfg(windows)]
pub use system::WslcSystem;
#[cfg(windows)]
pub use volume::{VhdVolumeOptions, WslcVolumeManager};
#[cfg(windows)]
pub use wslcsdk_sys::errors::*;
#[cfg(windows)]
pub use wslcsdk_sys::types::{
WslcComponentFlags, WslcContainerFlags, WslcContainerNetworkingMode, WslcContainerPortMapping,
WslcContainerStartFlags, WslcContainerState, WslcDeleteContainerFlags, WslcIdentityTokenType,
WslcImageProgressStatus, WslcInstallOptions, WslcPortProtocol, WslcProcessFlags,
WslcProcessIOHandle, WslcProcessState, WslcSessionFeatureFlags, WslcSessionTerminationReason,
WslcSignal, WslcVersion, WslcVhdRequirementsFlags, WslcVhdType,
};
#[cfg(windows)]
impl WslcSessionHandle {
pub fn open_container(&self, name_or_id: &str) -> Result<WslcContainerHandle, WslcError> {
WslcContainerHandle::open(self, name_or_id)
}
pub fn list_images(&self) -> Result<Vec<ImageInfo>, WslcError> {
WslcImageManager::list_images(self)
}
pub fn delete_image(&self, name_or_id: &str) -> Result<(), WslcError> {
WslcImageManager::delete_image(self, name_or_id)
}
pub fn create_vhd_volume(&self, options: &VhdVolumeOptions<'_>) -> Result<(), WslcError> {
WslcVolumeManager::create_vhd_volume(self, options)
}
pub fn delete_vhd_volume(&self, name: &str) -> Result<(), WslcError> {
WslcVolumeManager::delete_vhd_volume(self, name)
}
pub fn authenticate(
&self,
server_address: &str,
username: &str,
password: &str,
) -> Result<AuthTokenResult, WslcError> {
WslcRegistryManager::authenticate(self, server_address, username, password)
}
}