#![allow(non_snake_case, non_camel_case_types, non_upper_case_globals, clashing_extern_declarations, clippy::all)]
#[repr(C)]
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub struct DDP_FILE_EXTENT {
    pub Length: i64,
    pub Offset: i64,
}
impl ::core::marker::Copy for DDP_FILE_EXTENT {}
impl ::core::clone::Clone for DDP_FILE_EXTENT {
    fn clone(&self) -> Self {
        *self
    }
}
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub type DEDUP_BACKUP_SUPPORT_PARAM_TYPE = i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DEDUP_RECONSTRUCT_UNOPTIMIZED: DEDUP_BACKUP_SUPPORT_PARAM_TYPE = 1i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DEDUP_RECONSTRUCT_OPTIMIZED: DEDUP_BACKUP_SUPPORT_PARAM_TYPE = 2i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DEDUP_CHUNKLIB_MAX_CHUNKS_ENUM: u32 = 1024u32;
#[repr(C)]
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub struct DEDUP_CHUNK_INFO_HASH32 {
    pub ChunkFlags: u32,
    pub ChunkOffsetInStream: u64,
    pub ChunkSize: u64,
    pub HashVal: [u8; 32],
}
impl ::core::marker::Copy for DEDUP_CHUNK_INFO_HASH32 {}
impl ::core::clone::Clone for DEDUP_CHUNK_INFO_HASH32 {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(C)]
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub struct DEDUP_CONTAINER_EXTENT {
    pub ContainerIndex: u32,
    pub StartOffset: i64,
    pub Length: i64,
}
impl ::core::marker::Copy for DEDUP_CONTAINER_EXTENT {}
impl ::core::clone::Clone for DEDUP_CONTAINER_EXTENT {
    fn clone(&self) -> Self {
        *self
    }
}
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub type DEDUP_SET_PARAM_TYPE = i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DEDUP_PT_MinChunkSizeBytes: DEDUP_SET_PARAM_TYPE = 1i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DEDUP_PT_MaxChunkSizeBytes: DEDUP_SET_PARAM_TYPE = 2i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DEDUP_PT_AvgChunkSizeBytes: DEDUP_SET_PARAM_TYPE = 3i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DEDUP_PT_InvariantChunking: DEDUP_SET_PARAM_TYPE = 4i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DEDUP_PT_DisableStrongHashComputation: DEDUP_SET_PARAM_TYPE = 5i32;
pub const DedupBackupSupport: ::windows_sys::core::GUID = ::windows_sys::core::GUID { data1: 1943450285, data2: 10628, data3: 18197, data4: [178, 227, 146, 76, 20, 151, 68, 221] };
#[repr(C)]
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub struct DedupChunk {
    pub Hash: DedupHash,
    pub Flags: DedupChunkFlags,
    pub LogicalSize: u32,
    pub DataSize: u32,
}
impl ::core::marker::Copy for DedupChunk {}
impl ::core::clone::Clone for DedupChunk {
    fn clone(&self) -> Self {
        *self
    }
}
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub type DedupChunkFlags = i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupChunkFlags_None: DedupChunkFlags = 0i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupChunkFlags_Compressed: DedupChunkFlags = 1i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub type DedupChunkingAlgorithm = i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupChunkingAlgorithm_Unknonwn: DedupChunkingAlgorithm = 0i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupChunkingAlgorithm_V1: DedupChunkingAlgorithm = 1i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub type DedupCompressionAlgorithm = i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupCompressionAlgorithm_Unknonwn: DedupCompressionAlgorithm = 0i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupCompressionAlgorithm_Xpress: DedupCompressionAlgorithm = 1i32;
pub const DedupDataPort: ::windows_sys::core::GUID = ::windows_sys::core::GUID { data1: 2400219655, data2: 6185, data3: 18610, data4: [166, 75, 230, 31, 142, 13, 154, 203] };
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub type DedupDataPortManagerOption = i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortManagerOption_None: DedupDataPortManagerOption = 0i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortManagerOption_AutoStart: DedupDataPortManagerOption = 1i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortManagerOption_SkipReconciliation: DedupDataPortManagerOption = 2i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub type DedupDataPortRequestStatus = i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortRequestStatus_Unknown: DedupDataPortRequestStatus = 0i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortRequestStatus_Queued: DedupDataPortRequestStatus = 1i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortRequestStatus_Processing: DedupDataPortRequestStatus = 2i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortRequestStatus_Partial: DedupDataPortRequestStatus = 3i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortRequestStatus_Complete: DedupDataPortRequestStatus = 4i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortRequestStatus_Failed: DedupDataPortRequestStatus = 5i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub type DedupDataPortVolumeStatus = i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortVolumeStatus_Unknown: DedupDataPortVolumeStatus = 0i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortVolumeStatus_NotEnabled: DedupDataPortVolumeStatus = 1i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortVolumeStatus_NotAvailable: DedupDataPortVolumeStatus = 2i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortVolumeStatus_Initializing: DedupDataPortVolumeStatus = 3i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortVolumeStatus_Ready: DedupDataPortVolumeStatus = 4i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortVolumeStatus_Maintenance: DedupDataPortVolumeStatus = 5i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupDataPortVolumeStatus_Shutdown: DedupDataPortVolumeStatus = 6i32;
#[repr(C)]
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub struct DedupHash {
    pub Hash: [u8; 32],
}
impl ::core::marker::Copy for DedupHash {}
impl ::core::clone::Clone for DedupHash {
    fn clone(&self) -> Self {
        *self
    }
}
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub type DedupHashingAlgorithm = i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupHashingAlgorithm_Unknonwn: DedupHashingAlgorithm = 0i32;
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub const DedupHashingAlgorithm_V1: DedupHashingAlgorithm = 1i32;
#[repr(C)]
#[doc = "*Required features: 'Win32_Storage_DataDeduplication', 'Win32_Foundation'*"]
#[cfg(feature = "Win32_Foundation")]
pub struct DedupStream {
    pub Path: super::super::Foundation::BSTR,
    pub Offset: u64,
    pub Length: u64,
    pub ChunkCount: u32,
}
#[cfg(feature = "Win32_Foundation")]
impl ::core::marker::Copy for DedupStream {}
#[cfg(feature = "Win32_Foundation")]
impl ::core::clone::Clone for DedupStream {
    fn clone(&self) -> Self {
        *self
    }
}
#[repr(C)]
#[doc = "*Required features: 'Win32_Storage_DataDeduplication'*"]
pub struct DedupStreamEntry {
    pub Hash: DedupHash,
    pub LogicalSize: u32,
    pub Offset: u64,
}
impl ::core::marker::Copy for DedupStreamEntry {}
impl ::core::clone::Clone for DedupStreamEntry {
    fn clone(&self) -> Self {
        *self
    }
}
pub type IDedupBackupSupport = *mut ::core::ffi::c_void;
pub type IDedupChunkLibrary = *mut ::core::ffi::c_void;
pub type IDedupDataPort = *mut ::core::ffi::c_void;
pub type IDedupDataPortManager = *mut ::core::ffi::c_void;
pub type IDedupIterateChunksHash32 = *mut ::core::ffi::c_void;
pub type IDedupReadFileCallback = *mut ::core::ffi::c_void;
