]> git.proxmox.com Git - rustc.git/blobdiff - vendor/windows/src/Windows/Win32/System/Com/StructuredStorage/mod.rs
Merge 1.70 into proxmox/bookworm
[rustc.git] / vendor / windows / src / Windows / Win32 / System / Com / StructuredStorage / mod.rs
diff --git a/vendor/windows/src/Windows/Win32/System/Com/StructuredStorage/mod.rs b/vendor/windows/src/Windows/Win32/System/Com/StructuredStorage/mod.rs
new file mode 100644 (file)
index 0000000..179a7a6
--- /dev/null
@@ -0,0 +1,2904 @@
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn CoGetInstanceFromFile<P0, P1>(pserverinfo: ::core::option::Option<*const super::COSERVERINFO>, pclsid: ::core::option::Option<*const ::windows::core::GUID>, punkouter: P0, dwclsctx: super::CLSCTX, grfmode: u32, pwszname: P1, presults: &mut [super::MULTI_QI]) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<::windows::core::IUnknown>,
+    P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn CoGetInstanceFromFile ( pserverinfo : *const super:: COSERVERINFO , pclsid : *const :: windows::core::GUID , punkouter : * mut::core::ffi::c_void , dwclsctx : super:: CLSCTX , grfmode : u32 , pwszname : :: windows::core::PCWSTR , dwcount : u32 , presults : *mut super:: MULTI_QI ) -> :: windows::core::HRESULT );
+    CoGetInstanceFromFile(::core::mem::transmute(pserverinfo.unwrap_or(::std::ptr::null())), ::core::mem::transmute(pclsid.unwrap_or(::std::ptr::null())), punkouter.into_param().abi(), dwclsctx, grfmode, pwszname.into_param().abi(), presults.len() as _, ::core::mem::transmute(presults.as_ptr())).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn CoGetInstanceFromIStorage<P0, P1>(pserverinfo: ::core::option::Option<*const super::COSERVERINFO>, pclsid: ::core::option::Option<*const ::windows::core::GUID>, punkouter: P0, dwclsctx: super::CLSCTX, pstg: P1, presults: &mut [super::MULTI_QI]) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<::windows::core::IUnknown>,
+    P1: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn CoGetInstanceFromIStorage ( pserverinfo : *const super:: COSERVERINFO , pclsid : *const :: windows::core::GUID , punkouter : * mut::core::ffi::c_void , dwclsctx : super:: CLSCTX , pstg : * mut::core::ffi::c_void , dwcount : u32 , presults : *mut super:: MULTI_QI ) -> :: windows::core::HRESULT );
+    CoGetInstanceFromIStorage(::core::mem::transmute(pserverinfo.unwrap_or(::std::ptr::null())), ::core::mem::transmute(pclsid.unwrap_or(::std::ptr::null())), punkouter.into_param().abi(), dwclsctx, pstg.into_param().abi(), presults.len() as _, ::core::mem::transmute(presults.as_ptr())).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn CoGetInterfaceAndReleaseStream<P0, T>(pstm: P0) -> ::windows::core::Result<T>
+where
+    P0: ::windows::core::IntoParam<super::IStream>,
+    T: ::windows::core::ComInterface,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn CoGetInterfaceAndReleaseStream ( pstm : * mut::core::ffi::c_void , iid : *const :: windows::core::GUID , ppv : *mut *mut ::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::std::ptr::null_mut();
+    CoGetInterfaceAndReleaseStream(pstm.into_param().abi(), &<T as ::windows::core::ComInterface>::IID, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn CreateILockBytesOnHGlobal<P0, P1>(hglobal: P0, fdeleteonrelease: P1) -> ::windows::core::Result<ILockBytes>
+where
+    P0: ::windows::core::IntoParam<super::super::super::Foundation::HGLOBAL>,
+    P1: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn CreateILockBytesOnHGlobal ( hglobal : super::super::super::Foundation:: HGLOBAL , fdeleteonrelease : super::super::super::Foundation:: BOOL , pplkbyt : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<ILockBytes>();
+    CreateILockBytesOnHGlobal(hglobal.into_param().abi(), fdeleteonrelease.into_param().abi(), &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn CreateStreamOnHGlobal<P0, P1>(hglobal: P0, fdeleteonrelease: P1) -> ::windows::core::Result<super::IStream>
+where
+    P0: ::windows::core::IntoParam<super::super::super::Foundation::HGLOBAL>,
+    P1: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn CreateStreamOnHGlobal ( hglobal : super::super::super::Foundation:: HGLOBAL , fdeleteonrelease : super::super::super::Foundation:: BOOL , ppstm : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<super::IStream>();
+    CreateStreamOnHGlobal(hglobal.into_param().abi(), fdeleteonrelease.into_param().abi(), &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn FmtIdToPropStgName(pfmtid: *const ::windows::core::GUID, oszname: ::windows::core::PWSTR) -> ::windows::core::Result<()> {
+    ::windows::imp::link ! ( "ole32.dll""system" fn FmtIdToPropStgName ( pfmtid : *const :: windows::core::GUID , oszname : :: windows::core::PWSTR ) -> :: windows::core::HRESULT );
+    FmtIdToPropStgName(pfmtid, ::core::mem::transmute(oszname)).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn FreePropVariantArray(rgvars: &mut [PROPVARIANT]) -> ::windows::core::Result<()> {
+    ::windows::imp::link ! ( "ole32.dll""system" fn FreePropVariantArray ( cvariants : u32 , rgvars : *mut PROPVARIANT ) -> :: windows::core::HRESULT );
+    FreePropVariantArray(rgvars.len() as _, ::core::mem::transmute(rgvars.as_ptr())).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn GetConvertStg<P0>(pstg: P0) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn GetConvertStg ( pstg : * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    GetConvertStg(pstg.into_param().abi()).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn GetHGlobalFromILockBytes<P0>(plkbyt: P0) -> ::windows::core::Result<super::super::super::Foundation::HGLOBAL>
+where
+    P0: ::windows::core::IntoParam<ILockBytes>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn GetHGlobalFromILockBytes ( plkbyt : * mut::core::ffi::c_void , phglobal : *mut super::super::super::Foundation:: HGLOBAL ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::HGLOBAL>();
+    GetHGlobalFromILockBytes(plkbyt.into_param().abi(), &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn GetHGlobalFromStream<P0>(pstm: P0) -> ::windows::core::Result<super::super::super::Foundation::HGLOBAL>
+where
+    P0: ::windows::core::IntoParam<super::IStream>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn GetHGlobalFromStream ( pstm : * mut::core::ffi::c_void , phglobal : *mut super::super::super::Foundation:: HGLOBAL ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<super::super::super::Foundation::HGLOBAL>();
+    GetHGlobalFromStream(pstm.into_param().abi(), &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn OleConvertIStorageToOLESTREAM<P0>(pstg: P0) -> ::windows::core::Result<OLESTREAM>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn OleConvertIStorageToOLESTREAM ( pstg : * mut::core::ffi::c_void , lpolestream : *mut OLESTREAM ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<OLESTREAM>();
+    OleConvertIStorageToOLESTREAM(pstg.into_param().abi(), &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`, `\"Win32_Graphics_Gdi\"`*"]
+#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
+#[inline]
+pub unsafe fn OleConvertIStorageToOLESTREAMEx<P0>(pstg: P0, cfformat: u16, lwidth: i32, lheight: i32, dwsize: u32, pmedium: *const super::STGMEDIUM) -> ::windows::core::Result<OLESTREAM>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn OleConvertIStorageToOLESTREAMEx ( pstg : * mut::core::ffi::c_void , cfformat : u16 , lwidth : i32 , lheight : i32 , dwsize : u32 , pmedium : *const super:: STGMEDIUM , polestm : *mut OLESTREAM ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<OLESTREAM>();
+    OleConvertIStorageToOLESTREAMEx(pstg.into_param().abi(), cfformat, lwidth, lheight, dwsize, pmedium, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn OleConvertOLESTREAMToIStorage<P0>(lpolestream: *const OLESTREAM, pstg: P0, ptd: *const super::DVTARGETDEVICE) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn OleConvertOLESTREAMToIStorage ( lpolestream : *const OLESTREAM , pstg : * mut::core::ffi::c_void , ptd : *const super:: DVTARGETDEVICE ) -> :: windows::core::HRESULT );
+    OleConvertOLESTREAMToIStorage(lpolestream, pstg.into_param().abi(), ptd).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`, `\"Win32_Graphics_Gdi\"`*"]
+#[cfg(all(feature = "Win32_Foundation", feature = "Win32_Graphics_Gdi"))]
+#[inline]
+pub unsafe fn OleConvertOLESTREAMToIStorageEx<P0>(polestm: *const OLESTREAM, pstg: P0, pcfformat: *mut u16, plwwidth: *mut i32, plheight: *mut i32, pdwsize: *mut u32, pmedium: *mut super::STGMEDIUM) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn OleConvertOLESTREAMToIStorageEx ( polestm : *const OLESTREAM , pstg : * mut::core::ffi::c_void , pcfformat : *mut u16 , plwwidth : *mut i32 , plheight : *mut i32 , pdwsize : *mut u32 , pmedium : *mut super:: STGMEDIUM ) -> :: windows::core::HRESULT );
+    OleConvertOLESTREAMToIStorageEx(polestm, pstg.into_param().abi(), pcfformat, plwwidth, plheight, pdwsize, pmedium).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn PropStgNameToFmtId<P0>(oszname: P0) -> ::windows::core::Result<::windows::core::GUID>
+where
+    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn PropStgNameToFmtId ( oszname : :: windows::core::PCWSTR , pfmtid : *mut :: windows::core::GUID ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<::windows::core::GUID>();
+    PropStgNameToFmtId(oszname.into_param().abi(), &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn PropVariantClear(pvar: *mut PROPVARIANT) -> ::windows::core::Result<()> {
+    ::windows::imp::link ! ( "ole32.dll""system" fn PropVariantClear ( pvar : *mut PROPVARIANT ) -> :: windows::core::HRESULT );
+    PropVariantClear(pvar).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn PropVariantCopy(pvardest: *mut PROPVARIANT, pvarsrc: *const PROPVARIANT) -> ::windows::core::Result<()> {
+    ::windows::imp::link ! ( "ole32.dll""system" fn PropVariantCopy ( pvardest : *mut PROPVARIANT , pvarsrc : *const PROPVARIANT ) -> :: windows::core::HRESULT );
+    PropVariantCopy(pvardest, pvarsrc).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn ReadClassStg<P0>(pstg: P0) -> ::windows::core::Result<::windows::core::GUID>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn ReadClassStg ( pstg : * mut::core::ffi::c_void , pclsid : *mut :: windows::core::GUID ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<::windows::core::GUID>();
+    ReadClassStg(pstg.into_param().abi(), &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn ReadClassStm<P0>(pstm: P0) -> ::windows::core::Result<::windows::core::GUID>
+where
+    P0: ::windows::core::IntoParam<super::IStream>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn ReadClassStm ( pstm : * mut::core::ffi::c_void , pclsid : *mut :: windows::core::GUID ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<::windows::core::GUID>();
+    ReadClassStm(pstm.into_param().abi(), &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn ReadFmtUserTypeStg<P0>(pstg: P0, pcf: *mut u16, lplpszusertype: ::core::option::Option<*mut ::windows::core::PWSTR>) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn ReadFmtUserTypeStg ( pstg : * mut::core::ffi::c_void , pcf : *mut u16 , lplpszusertype : *mut :: windows::core::PWSTR ) -> :: windows::core::HRESULT );
+    ReadFmtUserTypeStg(pstg.into_param().abi(), pcf, ::core::mem::transmute(lplpszusertype.unwrap_or(::std::ptr::null_mut()))).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn SetConvertStg<P0, P1>(pstg: P0, fconvert: P1) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+    P1: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn SetConvertStg ( pstg : * mut::core::ffi::c_void , fconvert : super::super::super::Foundation:: BOOL ) -> :: windows::core::HRESULT );
+    SetConvertStg(pstg.into_param().abi(), fconvert.into_param().abi()).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn StgConvertPropertyToVariant(pprop: *const SERIALIZEDPROPERTYVALUE, codepage: u16, pvar: *mut PROPVARIANT, pma: *const PMemoryAllocator) -> super::super::super::Foundation::BOOLEAN {
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgConvertPropertyToVariant ( pprop : *const SERIALIZEDPROPERTYVALUE , codepage : u16 , pvar : *mut PROPVARIANT , pma : *const PMemoryAllocator ) -> super::super::super::Foundation:: BOOLEAN );
+    StgConvertPropertyToVariant(pprop, codepage, pvar, pma)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn StgConvertVariantToProperty<P0>(pvar: *const PROPVARIANT, codepage: u16, pprop: ::core::option::Option<*mut SERIALIZEDPROPERTYVALUE>, pcb: *mut u32, pid: u32, freserved: P0, pcindirect: ::core::option::Option<*mut u32>) -> *mut SERIALIZEDPROPERTYVALUE
+where
+    P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOLEAN>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgConvertVariantToProperty ( pvar : *const PROPVARIANT , codepage : u16 , pprop : *mut SERIALIZEDPROPERTYVALUE , pcb : *mut u32 , pid : u32 , freserved : super::super::super::Foundation:: BOOLEAN , pcindirect : *mut u32 ) -> *mut SERIALIZEDPROPERTYVALUE );
+    StgConvertVariantToProperty(pvar, codepage, ::core::mem::transmute(pprop.unwrap_or(::std::ptr::null_mut())), pcb, pid, freserved.into_param().abi(), ::core::mem::transmute(pcindirect.unwrap_or(::std::ptr::null_mut())))
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgCreateDocfile<P0>(pwcsname: P0, grfmode: super::STGM, reserved: u32) -> ::windows::core::Result<IStorage>
+where
+    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgCreateDocfile ( pwcsname : :: windows::core::PCWSTR , grfmode : super:: STGM , reserved : u32 , ppstgopen : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IStorage>();
+    StgCreateDocfile(pwcsname.into_param().abi(), grfmode, reserved, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgCreateDocfileOnILockBytes<P0>(plkbyt: P0, grfmode: super::STGM, reserved: u32) -> ::windows::core::Result<IStorage>
+where
+    P0: ::windows::core::IntoParam<ILockBytes>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgCreateDocfileOnILockBytes ( plkbyt : * mut::core::ffi::c_void , grfmode : super:: STGM , reserved : u32 , ppstgopen : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IStorage>();
+    StgCreateDocfileOnILockBytes(plkbyt.into_param().abi(), grfmode, reserved, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgCreatePropSetStg<P0>(pstorage: P0, dwreserved: u32) -> ::windows::core::Result<IPropertySetStorage>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgCreatePropSetStg ( pstorage : * mut::core::ffi::c_void , dwreserved : u32 , pppropsetstg : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IPropertySetStorage>();
+    StgCreatePropSetStg(pstorage.into_param().abi(), dwreserved, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgCreatePropStg<P0>(punk: P0, fmtid: *const ::windows::core::GUID, pclsid: *const ::windows::core::GUID, grfflags: u32, dwreserved: u32) -> ::windows::core::Result<IPropertyStorage>
+where
+    P0: ::windows::core::IntoParam<::windows::core::IUnknown>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgCreatePropStg ( punk : * mut::core::ffi::c_void , fmtid : *const :: windows::core::GUID , pclsid : *const :: windows::core::GUID , grfflags : u32 , dwreserved : u32 , pppropstg : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IPropertyStorage>();
+    StgCreatePropStg(punk.into_param().abi(), fmtid, pclsid, grfflags, dwreserved, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Security\"`*"]
+#[cfg(feature = "Win32_Security")]
+#[inline]
+pub unsafe fn StgCreateStorageEx<P0, P1>(pwcsname: P0, grfmode: super::STGM, stgfmt: STGFMT, grfattrs: u32, pstgoptions: ::core::option::Option<*mut STGOPTIONS>, psecuritydescriptor: P1, riid: *const ::windows::core::GUID, ppobjectopen: *mut *mut ::core::ffi::c_void) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    P1: ::windows::core::IntoParam<super::super::super::Security::PSECURITY_DESCRIPTOR>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgCreateStorageEx ( pwcsname : :: windows::core::PCWSTR , grfmode : super:: STGM , stgfmt : STGFMT , grfattrs : u32 , pstgoptions : *mut STGOPTIONS , psecuritydescriptor : super::super::super::Security:: PSECURITY_DESCRIPTOR , riid : *const :: windows::core::GUID , ppobjectopen : *mut *mut ::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    StgCreateStorageEx(pwcsname.into_param().abi(), grfmode, stgfmt, grfattrs, ::core::mem::transmute(pstgoptions.unwrap_or(::std::ptr::null_mut())), psecuritydescriptor.into_param().abi(), riid, ppobjectopen).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn StgDeserializePropVariant(pprop: *const SERIALIZEDPROPERTYVALUE, cbmax: u32) -> ::windows::core::Result<PROPVARIANT> {
+    ::windows::imp::link ! ( "propsys.dll""system" fn StgDeserializePropVariant ( pprop : *const SERIALIZEDPROPERTYVALUE , cbmax : u32 , ppropvar : *mut PROPVARIANT ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<PROPVARIANT>();
+    StgDeserializePropVariant(pprop, cbmax, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgGetIFillLockBytesOnFile<P0>(pwcsname: P0) -> ::windows::core::Result<IFillLockBytes>
+where
+    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgGetIFillLockBytesOnFile ( pwcsname : :: windows::core::PCWSTR , ppflb : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IFillLockBytes>();
+    StgGetIFillLockBytesOnFile(pwcsname.into_param().abi(), &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgGetIFillLockBytesOnILockBytes<P0>(pilb: P0) -> ::windows::core::Result<IFillLockBytes>
+where
+    P0: ::windows::core::IntoParam<ILockBytes>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgGetIFillLockBytesOnILockBytes ( pilb : * mut::core::ffi::c_void , ppflb : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IFillLockBytes>();
+    StgGetIFillLockBytesOnILockBytes(pilb.into_param().abi(), &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgIsStorageFile<P0>(pwcsname: P0) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgIsStorageFile ( pwcsname : :: windows::core::PCWSTR ) -> :: windows::core::HRESULT );
+    StgIsStorageFile(pwcsname.into_param().abi()).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgIsStorageILockBytes<P0>(plkbyt: P0) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<ILockBytes>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgIsStorageILockBytes ( plkbyt : * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    StgIsStorageILockBytes(plkbyt.into_param().abi()).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgOpenAsyncDocfileOnIFillLockBytes<P0>(pflb: P0, grfmode: u32, asyncflags: u32) -> ::windows::core::Result<IStorage>
+where
+    P0: ::windows::core::IntoParam<IFillLockBytes>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgOpenAsyncDocfileOnIFillLockBytes ( pflb : * mut::core::ffi::c_void , grfmode : u32 , asyncflags : u32 , ppstgopen : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IStorage>();
+    StgOpenAsyncDocfileOnIFillLockBytes(pflb.into_param().abi(), grfmode, asyncflags, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgOpenLayoutDocfile<P0>(pwcsdfname: P0, grfmode: u32, reserved: u32) -> ::windows::core::Result<IStorage>
+where
+    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+{
+    ::windows::imp::link ! ( "dflayout.dll""system" fn StgOpenLayoutDocfile ( pwcsdfname : :: windows::core::PCWSTR , grfmode : u32 , reserved : u32 , ppstgopen : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IStorage>();
+    StgOpenLayoutDocfile(pwcsdfname.into_param().abi(), grfmode, reserved, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgOpenPropStg<P0>(punk: P0, fmtid: *const ::windows::core::GUID, grfflags: u32, dwreserved: u32) -> ::windows::core::Result<IPropertyStorage>
+where
+    P0: ::windows::core::IntoParam<::windows::core::IUnknown>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgOpenPropStg ( punk : * mut::core::ffi::c_void , fmtid : *const :: windows::core::GUID , grfflags : u32 , dwreserved : u32 , pppropstg : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IPropertyStorage>();
+    StgOpenPropStg(punk.into_param().abi(), fmtid, grfflags, dwreserved, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgOpenStorage<P0, P1>(pwcsname: P0, pstgpriority: P1, grfmode: super::STGM, snbexclude: ::core::option::Option<*const *const u16>, reserved: u32) -> ::windows::core::Result<IStorage>
+where
+    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    P1: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgOpenStorage ( pwcsname : :: windows::core::PCWSTR , pstgpriority : * mut::core::ffi::c_void , grfmode : super:: STGM , snbexclude : *const *const u16 , reserved : u32 , ppstgopen : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IStorage>();
+    StgOpenStorage(pwcsname.into_param().abi(), pstgpriority.into_param().abi(), grfmode, ::core::mem::transmute(snbexclude.unwrap_or(::std::ptr::null())), reserved, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Security\"`*"]
+#[cfg(feature = "Win32_Security")]
+#[inline]
+pub unsafe fn StgOpenStorageEx<P0, P1>(pwcsname: P0, grfmode: super::STGM, stgfmt: STGFMT, grfattrs: u32, pstgoptions: ::core::option::Option<*mut STGOPTIONS>, psecuritydescriptor: P1, riid: *const ::windows::core::GUID, ppobjectopen: *mut *mut ::core::ffi::c_void) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    P1: ::windows::core::IntoParam<super::super::super::Security::PSECURITY_DESCRIPTOR>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgOpenStorageEx ( pwcsname : :: windows::core::PCWSTR , grfmode : super:: STGM , stgfmt : STGFMT , grfattrs : u32 , pstgoptions : *mut STGOPTIONS , psecuritydescriptor : super::super::super::Security:: PSECURITY_DESCRIPTOR , riid : *const :: windows::core::GUID , ppobjectopen : *mut *mut ::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    StgOpenStorageEx(pwcsname.into_param().abi(), grfmode, stgfmt, grfattrs, ::core::mem::transmute(pstgoptions.unwrap_or(::std::ptr::null_mut())), psecuritydescriptor.into_param().abi(), riid, ppobjectopen).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgOpenStorageOnILockBytes<P0, P1>(plkbyt: P0, pstgpriority: P1, grfmode: super::STGM, snbexclude: ::core::option::Option<*const *const u16>, reserved: u32) -> ::windows::core::Result<IStorage>
+where
+    P0: ::windows::core::IntoParam<ILockBytes>,
+    P1: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgOpenStorageOnILockBytes ( plkbyt : * mut::core::ffi::c_void , pstgpriority : * mut::core::ffi::c_void , grfmode : super:: STGM , snbexclude : *const *const u16 , reserved : u32 , ppstgopen : *mut * mut::core::ffi::c_void ) -> :: windows::core::HRESULT );
+    let mut result__ = ::windows::core::zeroed::<IStorage>();
+    StgOpenStorageOnILockBytes(plkbyt.into_param().abi(), pstgpriority.into_param().abi(), grfmode, ::core::mem::transmute(snbexclude.unwrap_or(::std::ptr::null())), reserved, &mut result__).from_abi(result__)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn StgPropertyLengthAsVariant(pprop: *const SERIALIZEDPROPERTYVALUE, cbprop: u32, codepage: u16, breserved: u8) -> u32 {
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgPropertyLengthAsVariant ( pprop : *const SERIALIZEDPROPERTYVALUE , cbprop : u32 , codepage : u16 , breserved : u8 ) -> u32 );
+    StgPropertyLengthAsVariant(pprop, cbprop, codepage, breserved)
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn StgSerializePropVariant(ppropvar: *const PROPVARIANT, ppprop: *mut *mut SERIALIZEDPROPERTYVALUE, pcb: *mut u32) -> ::windows::core::Result<()> {
+    ::windows::imp::link ! ( "propsys.dll""system" fn StgSerializePropVariant ( ppropvar : *const PROPVARIANT , ppprop : *mut *mut SERIALIZEDPROPERTYVALUE , pcb : *mut u32 ) -> :: windows::core::HRESULT );
+    StgSerializePropVariant(ppropvar, ppprop, pcb).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+#[inline]
+pub unsafe fn StgSetTimes<P0>(lpszname: P0, pctime: ::core::option::Option<*const super::super::super::Foundation::FILETIME>, patime: ::core::option::Option<*const super::super::super::Foundation::FILETIME>, pmtime: ::core::option::Option<*const super::super::super::Foundation::FILETIME>) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn StgSetTimes ( lpszname : :: windows::core::PCWSTR , pctime : *const super::super::super::Foundation:: FILETIME , patime : *const super::super::super::Foundation:: FILETIME , pmtime : *const super::super::super::Foundation:: FILETIME ) -> :: windows::core::HRESULT );
+    StgSetTimes(lpszname.into_param().abi(), ::core::mem::transmute(pctime.unwrap_or(::std::ptr::null())), ::core::mem::transmute(patime.unwrap_or(::std::ptr::null())), ::core::mem::transmute(pmtime.unwrap_or(::std::ptr::null()))).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn WriteClassStg<P0>(pstg: P0, rclsid: *const ::windows::core::GUID) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn WriteClassStg ( pstg : * mut::core::ffi::c_void , rclsid : *const :: windows::core::GUID ) -> :: windows::core::HRESULT );
+    WriteClassStg(pstg.into_param().abi(), rclsid).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn WriteClassStm<P0>(pstm: P0, rclsid: *const ::windows::core::GUID) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<super::IStream>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn WriteClassStm ( pstm : * mut::core::ffi::c_void , rclsid : *const :: windows::core::GUID ) -> :: windows::core::HRESULT );
+    WriteClassStm(pstm.into_param().abi(), rclsid).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[inline]
+pub unsafe fn WriteFmtUserTypeStg<P0, P1>(pstg: P0, cf: u16, lpszusertype: P1) -> ::windows::core::Result<()>
+where
+    P0: ::windows::core::IntoParam<IStorage>,
+    P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+{
+    ::windows::imp::link ! ( "ole32.dll""system" fn WriteFmtUserTypeStg ( pstg : * mut::core::ffi::c_void , cf : u16 , lpszusertype : :: windows::core::PCWSTR ) -> :: windows::core::HRESULT );
+    WriteFmtUserTypeStg(pstg.into_param().abi(), cf, lpszusertype.into_param().abi()).ok()
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IDirectWriterLock(::windows::core::IUnknown);
+impl IDirectWriterLock {
+    pub unsafe fn WaitForWriteAccess(&self, dwtimeout: u32) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).WaitForWriteAccess)(::windows::core::Interface::as_raw(self), dwtimeout).ok()
+    }
+    pub unsafe fn ReleaseWriteAccess(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).ReleaseWriteAccess)(::windows::core::Interface::as_raw(self)).ok()
+    }
+    pub unsafe fn HaveWriteAccess(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).HaveWriteAccess)(::windows::core::Interface::as_raw(self)).ok()
+    }
+}
+::windows::imp::interface_hierarchy!(IDirectWriterLock, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IDirectWriterLock {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IDirectWriterLock {}
+impl ::core::fmt::Debug for IDirectWriterLock {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IDirectWriterLock").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IDirectWriterLock {
+    type Vtable = IDirectWriterLock_Vtbl;
+}
+impl ::core::clone::Clone for IDirectWriterLock {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IDirectWriterLock {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0e6d4d92_6738_11cf_9608_00aa00680db4);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IDirectWriterLock_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    pub WaitForWriteAccess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, dwtimeout: u32) -> ::windows::core::HRESULT,
+    pub ReleaseWriteAccess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub HaveWriteAccess: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IEnumSTATPROPSETSTG(::windows::core::IUnknown);
+impl IEnumSTATPROPSETSTG {
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn Next(&self, rgelt: &mut [STATPROPSETSTG], pceltfetched: ::core::option::Option<*mut u32>) -> ::windows::core::HRESULT {
+        (::windows::core::Interface::vtable(self).Next)(::windows::core::Interface::as_raw(self), rgelt.len() as _, ::core::mem::transmute(rgelt.as_ptr()), ::core::mem::transmute(pceltfetched.unwrap_or(::std::ptr::null_mut())))
+    }
+    pub unsafe fn Skip(&self, celt: u32) -> ::windows::core::HRESULT {
+        (::windows::core::Interface::vtable(self).Skip)(::windows::core::Interface::as_raw(self), celt)
+    }
+    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
+    }
+    pub unsafe fn Clone(&self) -> ::windows::core::Result<IEnumSTATPROPSETSTG> {
+        let mut result__ = ::windows::core::zeroed::<IEnumSTATPROPSETSTG>();
+        (::windows::core::Interface::vtable(self).Clone)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
+    }
+}
+::windows::imp::interface_hierarchy!(IEnumSTATPROPSETSTG, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IEnumSTATPROPSETSTG {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IEnumSTATPROPSETSTG {}
+impl ::core::fmt::Debug for IEnumSTATPROPSETSTG {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IEnumSTATPROPSETSTG").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IEnumSTATPROPSETSTG {
+    type Vtable = IEnumSTATPROPSETSTG_Vtbl;
+}
+impl ::core::clone::Clone for IEnumSTATPROPSETSTG {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IEnumSTATPROPSETSTG {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0000013b_0000_0000_c000_000000000046);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IEnumSTATPROPSETSTG_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    #[cfg(feature = "Win32_Foundation")]
+    pub Next: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, celt: u32, rgelt: *mut STATPROPSETSTG, pceltfetched: *mut u32) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    Next: usize,
+    pub Skip: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, celt: u32) -> ::windows::core::HRESULT,
+    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub Clone: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IEnumSTATPROPSTG(::windows::core::IUnknown);
+impl IEnumSTATPROPSTG {
+    pub unsafe fn Next(&self, rgelt: &mut [STATPROPSTG], pceltfetched: ::core::option::Option<*mut u32>) -> ::windows::core::HRESULT {
+        (::windows::core::Interface::vtable(self).Next)(::windows::core::Interface::as_raw(self), rgelt.len() as _, ::core::mem::transmute(rgelt.as_ptr()), ::core::mem::transmute(pceltfetched.unwrap_or(::std::ptr::null_mut())))
+    }
+    pub unsafe fn Skip(&self, celt: u32) -> ::windows::core::HRESULT {
+        (::windows::core::Interface::vtable(self).Skip)(::windows::core::Interface::as_raw(self), celt)
+    }
+    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
+    }
+    pub unsafe fn Clone(&self) -> ::windows::core::Result<IEnumSTATPROPSTG> {
+        let mut result__ = ::windows::core::zeroed::<IEnumSTATPROPSTG>();
+        (::windows::core::Interface::vtable(self).Clone)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
+    }
+}
+::windows::imp::interface_hierarchy!(IEnumSTATPROPSTG, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IEnumSTATPROPSTG {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IEnumSTATPROPSTG {}
+impl ::core::fmt::Debug for IEnumSTATPROPSTG {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IEnumSTATPROPSTG").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IEnumSTATPROPSTG {
+    type Vtable = IEnumSTATPROPSTG_Vtbl;
+}
+impl ::core::clone::Clone for IEnumSTATPROPSTG {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IEnumSTATPROPSTG {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x00000139_0000_0000_c000_000000000046);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IEnumSTATPROPSTG_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    pub Next: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, celt: u32, rgelt: *mut STATPROPSTG, pceltfetched: *mut u32) -> ::windows::core::HRESULT,
+    pub Skip: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, celt: u32) -> ::windows::core::HRESULT,
+    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub Clone: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IEnumSTATSTG(::windows::core::IUnknown);
+impl IEnumSTATSTG {
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn Next(&self, rgelt: &mut [super::STATSTG], pceltfetched: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Next)(::windows::core::Interface::as_raw(self), rgelt.len() as _, ::core::mem::transmute(rgelt.as_ptr()), ::core::mem::transmute(pceltfetched.unwrap_or(::std::ptr::null_mut()))).ok()
+    }
+    pub unsafe fn Skip(&self, celt: u32) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Skip)(::windows::core::Interface::as_raw(self), celt).ok()
+    }
+    pub unsafe fn Reset(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Reset)(::windows::core::Interface::as_raw(self)).ok()
+    }
+    pub unsafe fn Clone(&self) -> ::windows::core::Result<IEnumSTATSTG> {
+        let mut result__ = ::windows::core::zeroed::<IEnumSTATSTG>();
+        (::windows::core::Interface::vtable(self).Clone)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
+    }
+}
+::windows::imp::interface_hierarchy!(IEnumSTATSTG, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IEnumSTATSTG {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IEnumSTATSTG {}
+impl ::core::fmt::Debug for IEnumSTATSTG {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IEnumSTATSTG").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IEnumSTATSTG {
+    type Vtable = IEnumSTATSTG_Vtbl;
+}
+impl ::core::clone::Clone for IEnumSTATSTG {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IEnumSTATSTG {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0000000d_0000_0000_c000_000000000046);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IEnumSTATSTG_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    #[cfg(feature = "Win32_Foundation")]
+    pub Next: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, celt: u32, rgelt: *mut super::STATSTG, pceltfetched: *mut u32) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    Next: usize,
+    pub Skip: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, celt: u32) -> ::windows::core::HRESULT,
+    pub Reset: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub Clone: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IFillLockBytes(::windows::core::IUnknown);
+impl IFillLockBytes {
+    pub unsafe fn FillAppend(&self, pv: *const ::core::ffi::c_void, cb: u32) -> ::windows::core::Result<u32> {
+        let mut result__ = ::windows::core::zeroed::<u32>();
+        (::windows::core::Interface::vtable(self).FillAppend)(::windows::core::Interface::as_raw(self), pv, cb, &mut result__).from_abi(result__)
+    }
+    pub unsafe fn FillAt(&self, uloffset: u64, pv: *const ::core::ffi::c_void, cb: u32) -> ::windows::core::Result<u32> {
+        let mut result__ = ::windows::core::zeroed::<u32>();
+        (::windows::core::Interface::vtable(self).FillAt)(::windows::core::Interface::as_raw(self), uloffset, pv, cb, &mut result__).from_abi(result__)
+    }
+    pub unsafe fn SetFillSize(&self, ulsize: u64) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).SetFillSize)(::windows::core::Interface::as_raw(self), ulsize).ok()
+    }
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn Terminate<P0>(&self, bcanceled: P0) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
+    {
+        (::windows::core::Interface::vtable(self).Terminate)(::windows::core::Interface::as_raw(self), bcanceled.into_param().abi()).ok()
+    }
+}
+::windows::imp::interface_hierarchy!(IFillLockBytes, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IFillLockBytes {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IFillLockBytes {}
+impl ::core::fmt::Debug for IFillLockBytes {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IFillLockBytes").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IFillLockBytes {
+    type Vtable = IFillLockBytes_Vtbl;
+}
+impl ::core::clone::Clone for IFillLockBytes {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IFillLockBytes {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x99caf010_415e_11cf_8814_00aa00b569f5);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IFillLockBytes_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    pub FillAppend: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pv: *const ::core::ffi::c_void, cb: u32, pcbwritten: *mut u32) -> ::windows::core::HRESULT,
+    pub FillAt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uloffset: u64, pv: *const ::core::ffi::c_void, cb: u32, pcbwritten: *mut u32) -> ::windows::core::HRESULT,
+    pub SetFillSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ulsize: u64) -> ::windows::core::HRESULT,
+    #[cfg(feature = "Win32_Foundation")]
+    pub Terminate: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, bcanceled: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    Terminate: usize,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct ILayoutStorage(::windows::core::IUnknown);
+impl ILayoutStorage {
+    pub unsafe fn LayoutScript(&self, pstoragelayout: &[super::StorageLayout], glfinterleavedflag: u32) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).LayoutScript)(::windows::core::Interface::as_raw(self), ::core::mem::transmute(pstoragelayout.as_ptr()), pstoragelayout.len() as _, glfinterleavedflag).ok()
+    }
+    pub unsafe fn BeginMonitor(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).BeginMonitor)(::windows::core::Interface::as_raw(self)).ok()
+    }
+    pub unsafe fn EndMonitor(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).EndMonitor)(::windows::core::Interface::as_raw(self)).ok()
+    }
+    pub unsafe fn ReLayoutDocfile<P0>(&self, pwcsnewdfname: P0) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    {
+        (::windows::core::Interface::vtable(self).ReLayoutDocfile)(::windows::core::Interface::as_raw(self), pwcsnewdfname.into_param().abi()).ok()
+    }
+    pub unsafe fn ReLayoutDocfileOnILockBytes<P0>(&self, pilockbytes: P0) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<ILockBytes>,
+    {
+        (::windows::core::Interface::vtable(self).ReLayoutDocfileOnILockBytes)(::windows::core::Interface::as_raw(self), pilockbytes.into_param().abi()).ok()
+    }
+}
+::windows::imp::interface_hierarchy!(ILayoutStorage, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for ILayoutStorage {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for ILayoutStorage {}
+impl ::core::fmt::Debug for ILayoutStorage {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("ILayoutStorage").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for ILayoutStorage {
+    type Vtable = ILayoutStorage_Vtbl;
+}
+impl ::core::clone::Clone for ILayoutStorage {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for ILayoutStorage {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0e6d4d90_6738_11cf_9608_00aa00680db4);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct ILayoutStorage_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    pub LayoutScript: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstoragelayout: *const super::StorageLayout, nentries: u32, glfinterleavedflag: u32) -> ::windows::core::HRESULT,
+    pub BeginMonitor: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub EndMonitor: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub ReLayoutDocfile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwcsnewdfname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
+    pub ReLayoutDocfileOnILockBytes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pilockbytes: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct ILockBytes(::windows::core::IUnknown);
+impl ILockBytes {
+    pub unsafe fn ReadAt(&self, uloffset: u64, pv: *mut ::core::ffi::c_void, cb: u32, pcbread: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).ReadAt)(::windows::core::Interface::as_raw(self), uloffset, pv, cb, ::core::mem::transmute(pcbread.unwrap_or(::std::ptr::null_mut()))).ok()
+    }
+    pub unsafe fn WriteAt(&self, uloffset: u64, pv: *const ::core::ffi::c_void, cb: u32, pcbwritten: ::core::option::Option<*mut u32>) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).WriteAt)(::windows::core::Interface::as_raw(self), uloffset, pv, cb, ::core::mem::transmute(pcbwritten.unwrap_or(::std::ptr::null_mut()))).ok()
+    }
+    pub unsafe fn Flush(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Flush)(::windows::core::Interface::as_raw(self)).ok()
+    }
+    pub unsafe fn SetSize(&self, cb: u64) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).SetSize)(::windows::core::Interface::as_raw(self), cb).ok()
+    }
+    pub unsafe fn LockRegion(&self, liboffset: u64, cb: u64, dwlocktype: super::LOCKTYPE) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).LockRegion)(::windows::core::Interface::as_raw(self), liboffset, cb, dwlocktype).ok()
+    }
+    pub unsafe fn UnlockRegion(&self, liboffset: u64, cb: u64, dwlocktype: u32) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).UnlockRegion)(::windows::core::Interface::as_raw(self), liboffset, cb, dwlocktype).ok()
+    }
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn Stat(&self, pstatstg: *mut super::STATSTG, grfstatflag: super::STATFLAG) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Stat)(::windows::core::Interface::as_raw(self), pstatstg, grfstatflag).ok()
+    }
+}
+::windows::imp::interface_hierarchy!(ILockBytes, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for ILockBytes {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for ILockBytes {}
+impl ::core::fmt::Debug for ILockBytes {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("ILockBytes").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for ILockBytes {
+    type Vtable = ILockBytes_Vtbl;
+}
+impl ::core::clone::Clone for ILockBytes {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for ILockBytes {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0000000a_0000_0000_c000_000000000046);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct ILockBytes_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    pub ReadAt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uloffset: u64, pv: *mut ::core::ffi::c_void, cb: u32, pcbread: *mut u32) -> ::windows::core::HRESULT,
+    pub WriteAt: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, uloffset: u64, pv: *const ::core::ffi::c_void, cb: u32, pcbwritten: *mut u32) -> ::windows::core::HRESULT,
+    pub Flush: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub SetSize: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, cb: u64) -> ::windows::core::HRESULT,
+    pub LockRegion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, liboffset: u64, cb: u64, dwlocktype: super::LOCKTYPE) -> ::windows::core::HRESULT,
+    pub UnlockRegion: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, liboffset: u64, cb: u64, dwlocktype: u32) -> ::windows::core::HRESULT,
+    #[cfg(feature = "Win32_Foundation")]
+    pub Stat: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstatstg: *mut super::STATSTG, grfstatflag: super::STATFLAG) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    Stat: usize,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IPersistStorage(::windows::core::IUnknown);
+impl IPersistStorage {
+    pub unsafe fn GetClassID(&self) -> ::windows::core::Result<::windows::core::GUID> {
+        let mut result__ = ::windows::core::zeroed::<::windows::core::GUID>();
+        (::windows::core::Interface::vtable(self).base__.GetClassID)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
+    }
+    pub unsafe fn IsDirty(&self) -> ::windows::core::HRESULT {
+        (::windows::core::Interface::vtable(self).IsDirty)(::windows::core::Interface::as_raw(self))
+    }
+    pub unsafe fn InitNew<P0>(&self, pstg: P0) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<IStorage>,
+    {
+        (::windows::core::Interface::vtable(self).InitNew)(::windows::core::Interface::as_raw(self), pstg.into_param().abi()).ok()
+    }
+    pub unsafe fn Load<P0>(&self, pstg: P0) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<IStorage>,
+    {
+        (::windows::core::Interface::vtable(self).Load)(::windows::core::Interface::as_raw(self), pstg.into_param().abi()).ok()
+    }
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn Save<P0, P1>(&self, pstgsave: P0, fsameasload: P1) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<IStorage>,
+        P1: ::windows::core::IntoParam<super::super::super::Foundation::BOOL>,
+    {
+        (::windows::core::Interface::vtable(self).Save)(::windows::core::Interface::as_raw(self), pstgsave.into_param().abi(), fsameasload.into_param().abi()).ok()
+    }
+    pub unsafe fn SaveCompleted<P0>(&self, pstgnew: P0) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<IStorage>,
+    {
+        (::windows::core::Interface::vtable(self).SaveCompleted)(::windows::core::Interface::as_raw(self), pstgnew.into_param().abi()).ok()
+    }
+    pub unsafe fn HandsOffStorage(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).HandsOffStorage)(::windows::core::Interface::as_raw(self)).ok()
+    }
+}
+::windows::imp::interface_hierarchy!(IPersistStorage, ::windows::core::IUnknown, super::IPersist);
+impl ::core::cmp::PartialEq for IPersistStorage {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IPersistStorage {}
+impl ::core::fmt::Debug for IPersistStorage {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IPersistStorage").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IPersistStorage {
+    type Vtable = IPersistStorage_Vtbl;
+}
+impl ::core::clone::Clone for IPersistStorage {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IPersistStorage {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0000010a_0000_0000_c000_000000000046);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IPersistStorage_Vtbl {
+    pub base__: super::IPersist_Vtbl,
+    pub IsDirty: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub InitNew: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstg: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub Load: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstg: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    #[cfg(feature = "Win32_Foundation")]
+    pub Save: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstgsave: *mut ::core::ffi::c_void, fsameasload: super::super::super::Foundation::BOOL) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    Save: usize,
+    pub SaveCompleted: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstgnew: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub HandsOffStorage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IPropertyBag(::windows::core::IUnknown);
+impl IPropertyBag {
+    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Ole\"`*"]
+    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ole"))]
+    pub unsafe fn Read<P0, P1>(&self, pszpropname: P0, pvar: *mut super::VARIANT, perrorlog: P1) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+        P1: ::windows::core::IntoParam<super::IErrorLog>,
+    {
+        (::windows::core::Interface::vtable(self).Read)(::windows::core::Interface::as_raw(self), pszpropname.into_param().abi(), pvar, perrorlog.into_param().abi()).ok()
+    }
+    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Ole\"`*"]
+    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ole"))]
+    pub unsafe fn Write<P0>(&self, pszpropname: P0, pvar: *const super::VARIANT) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    {
+        (::windows::core::Interface::vtable(self).Write)(::windows::core::Interface::as_raw(self), pszpropname.into_param().abi(), pvar).ok()
+    }
+}
+::windows::imp::interface_hierarchy!(IPropertyBag, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IPropertyBag {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IPropertyBag {}
+impl ::core::fmt::Debug for IPropertyBag {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IPropertyBag").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IPropertyBag {
+    type Vtable = IPropertyBag_Vtbl;
+}
+impl ::core::clone::Clone for IPropertyBag {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IPropertyBag {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x55272a00_42cb_11ce_8135_00aa004bb851);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IPropertyBag_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ole"))]
+    pub Read: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pszpropname: ::windows::core::PCWSTR, pvar: *mut super::VARIANT, perrorlog: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Ole")))]
+    Read: usize,
+    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ole"))]
+    pub Write: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pszpropname: ::windows::core::PCWSTR, pvar: *const super::VARIANT) -> ::windows::core::HRESULT,
+    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Ole")))]
+    Write: usize,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IPropertyBag2(::windows::core::IUnknown);
+impl IPropertyBag2 {
+    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Ole\"`*"]
+    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ole"))]
+    pub unsafe fn Read<P0>(&self, cproperties: u32, ppropbag: *const PROPBAG2, perrlog: P0, pvarvalue: *mut super::VARIANT, phrerror: *mut ::windows::core::HRESULT) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<super::IErrorLog>,
+    {
+        (::windows::core::Interface::vtable(self).Read)(::windows::core::Interface::as_raw(self), cproperties, ppropbag, perrlog.into_param().abi(), pvarvalue, phrerror).ok()
+    }
+    #[doc = "*Required features: `\"Win32_Foundation\"`, `\"Win32_System_Ole\"`*"]
+    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ole"))]
+    pub unsafe fn Write(&self, cproperties: u32, ppropbag: *const PROPBAG2, pvarvalue: *const super::VARIANT) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Write)(::windows::core::Interface::as_raw(self), cproperties, ppropbag, pvarvalue).ok()
+    }
+    pub unsafe fn CountProperties(&self) -> ::windows::core::Result<u32> {
+        let mut result__ = ::windows::core::zeroed::<u32>();
+        (::windows::core::Interface::vtable(self).CountProperties)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
+    }
+    pub unsafe fn GetPropertyInfo(&self, iproperty: u32, ppropbag: &mut [PROPBAG2], pcproperties: *mut u32) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).GetPropertyInfo)(::windows::core::Interface::as_raw(self), iproperty, ppropbag.len() as _, ::core::mem::transmute(ppropbag.as_ptr()), pcproperties).ok()
+    }
+    pub unsafe fn LoadObject<P0, P1, P2>(&self, pstrname: P0, dwhint: u32, punkobject: P1, perrlog: P2) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+        P1: ::windows::core::IntoParam<::windows::core::IUnknown>,
+        P2: ::windows::core::IntoParam<super::IErrorLog>,
+    {
+        (::windows::core::Interface::vtable(self).LoadObject)(::windows::core::Interface::as_raw(self), pstrname.into_param().abi(), dwhint, punkobject.into_param().abi(), perrlog.into_param().abi()).ok()
+    }
+}
+::windows::imp::interface_hierarchy!(IPropertyBag2, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IPropertyBag2 {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IPropertyBag2 {}
+impl ::core::fmt::Debug for IPropertyBag2 {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IPropertyBag2").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IPropertyBag2 {
+    type Vtable = IPropertyBag2_Vtbl;
+}
+impl ::core::clone::Clone for IPropertyBag2 {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IPropertyBag2 {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x22f55882_280b_11d0_a8a9_00a0c90c2004);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IPropertyBag2_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ole"))]
+    pub Read: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, cproperties: u32, ppropbag: *const PROPBAG2, perrlog: *mut ::core::ffi::c_void, pvarvalue: *mut super::VARIANT, phrerror: *mut ::windows::core::HRESULT) -> ::windows::core::HRESULT,
+    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Ole")))]
+    Read: usize,
+    #[cfg(all(feature = "Win32_Foundation", feature = "Win32_System_Ole"))]
+    pub Write: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, cproperties: u32, ppropbag: *const PROPBAG2, pvarvalue: *const super::VARIANT) -> ::windows::core::HRESULT,
+    #[cfg(not(all(feature = "Win32_Foundation", feature = "Win32_System_Ole")))]
+    Write: usize,
+    pub CountProperties: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pcproperties: *mut u32) -> ::windows::core::HRESULT,
+    pub GetPropertyInfo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, iproperty: u32, cproperties: u32, ppropbag: *mut PROPBAG2, pcproperties: *mut u32) -> ::windows::core::HRESULT,
+    pub LoadObject: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstrname: ::windows::core::PCWSTR, dwhint: u32, punkobject: *mut ::core::ffi::c_void, perrlog: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IPropertySetStorage(::windows::core::IUnknown);
+impl IPropertySetStorage {
+    pub unsafe fn Create(&self, rfmtid: *const ::windows::core::GUID, pclsid: *const ::windows::core::GUID, grfflags: u32, grfmode: u32) -> ::windows::core::Result<IPropertyStorage> {
+        let mut result__ = ::windows::core::zeroed::<IPropertyStorage>();
+        (::windows::core::Interface::vtable(self).Create)(::windows::core::Interface::as_raw(self), rfmtid, pclsid, grfflags, grfmode, &mut result__).from_abi(result__)
+    }
+    pub unsafe fn Open(&self, rfmtid: *const ::windows::core::GUID, grfmode: u32) -> ::windows::core::Result<IPropertyStorage> {
+        let mut result__ = ::windows::core::zeroed::<IPropertyStorage>();
+        (::windows::core::Interface::vtable(self).Open)(::windows::core::Interface::as_raw(self), rfmtid, grfmode, &mut result__).from_abi(result__)
+    }
+    pub unsafe fn Delete(&self, rfmtid: *const ::windows::core::GUID) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Delete)(::windows::core::Interface::as_raw(self), rfmtid).ok()
+    }
+    pub unsafe fn Enum(&self) -> ::windows::core::Result<IEnumSTATPROPSETSTG> {
+        let mut result__ = ::windows::core::zeroed::<IEnumSTATPROPSETSTG>();
+        (::windows::core::Interface::vtable(self).Enum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
+    }
+}
+::windows::imp::interface_hierarchy!(IPropertySetStorage, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IPropertySetStorage {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IPropertySetStorage {}
+impl ::core::fmt::Debug for IPropertySetStorage {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IPropertySetStorage").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IPropertySetStorage {
+    type Vtable = IPropertySetStorage_Vtbl;
+}
+impl ::core::clone::Clone for IPropertySetStorage {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IPropertySetStorage {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0000013a_0000_0000_c000_000000000046);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IPropertySetStorage_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    pub Create: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, rfmtid: *const ::windows::core::GUID, pclsid: *const ::windows::core::GUID, grfflags: u32, grfmode: u32, ppprstg: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub Open: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, rfmtid: *const ::windows::core::GUID, grfmode: u32, ppprstg: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub Delete: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, rfmtid: *const ::windows::core::GUID) -> ::windows::core::HRESULT,
+    pub Enum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IPropertyStorage(::windows::core::IUnknown);
+impl IPropertyStorage {
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn ReadMultiple(&self, cpspec: u32, rgpspec: *const PROPSPEC, rgpropvar: *mut PROPVARIANT) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).ReadMultiple)(::windows::core::Interface::as_raw(self), cpspec, rgpspec, rgpropvar).ok()
+    }
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn WriteMultiple(&self, cpspec: u32, rgpspec: *const PROPSPEC, rgpropvar: *const PROPVARIANT, propidnamefirst: u32) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).WriteMultiple)(::windows::core::Interface::as_raw(self), cpspec, rgpspec, rgpropvar, propidnamefirst).ok()
+    }
+    pub unsafe fn DeleteMultiple(&self, rgpspec: &[PROPSPEC]) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).DeleteMultiple)(::windows::core::Interface::as_raw(self), rgpspec.len() as _, ::core::mem::transmute(rgpspec.as_ptr())).ok()
+    }
+    pub unsafe fn ReadPropertyNames(&self, cpropid: u32, rgpropid: *const u32, rglpwstrname: *mut ::windows::core::PWSTR) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).ReadPropertyNames)(::windows::core::Interface::as_raw(self), cpropid, rgpropid, rglpwstrname).ok()
+    }
+    pub unsafe fn WritePropertyNames(&self, cpropid: u32, rgpropid: *const u32, rglpwstrname: *const ::windows::core::PCWSTR) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).WritePropertyNames)(::windows::core::Interface::as_raw(self), cpropid, rgpropid, rglpwstrname).ok()
+    }
+    pub unsafe fn DeletePropertyNames(&self, rgpropid: &[u32]) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).DeletePropertyNames)(::windows::core::Interface::as_raw(self), rgpropid.len() as _, ::core::mem::transmute(rgpropid.as_ptr())).ok()
+    }
+    pub unsafe fn Commit(&self, grfcommitflags: u32) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Commit)(::windows::core::Interface::as_raw(self), grfcommitflags).ok()
+    }
+    pub unsafe fn Revert(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Revert)(::windows::core::Interface::as_raw(self)).ok()
+    }
+    pub unsafe fn Enum(&self) -> ::windows::core::Result<IEnumSTATPROPSTG> {
+        let mut result__ = ::windows::core::zeroed::<IEnumSTATPROPSTG>();
+        (::windows::core::Interface::vtable(self).Enum)(::windows::core::Interface::as_raw(self), &mut result__).from_abi(result__)
+    }
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn SetTimes(&self, pctime: *const super::super::super::Foundation::FILETIME, patime: *const super::super::super::Foundation::FILETIME, pmtime: *const super::super::super::Foundation::FILETIME) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).SetTimes)(::windows::core::Interface::as_raw(self), pctime, patime, pmtime).ok()
+    }
+    pub unsafe fn SetClass(&self, clsid: *const ::windows::core::GUID) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).SetClass)(::windows::core::Interface::as_raw(self), clsid).ok()
+    }
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn Stat(&self, pstatpsstg: *mut STATPROPSETSTG) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Stat)(::windows::core::Interface::as_raw(self), pstatpsstg).ok()
+    }
+}
+::windows::imp::interface_hierarchy!(IPropertyStorage, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IPropertyStorage {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IPropertyStorage {}
+impl ::core::fmt::Debug for IPropertyStorage {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IPropertyStorage").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IPropertyStorage {
+    type Vtable = IPropertyStorage_Vtbl;
+}
+impl ::core::clone::Clone for IPropertyStorage {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IPropertyStorage {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x00000138_0000_0000_c000_000000000046);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IPropertyStorage_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    #[cfg(feature = "Win32_Foundation")]
+    pub ReadMultiple: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, cpspec: u32, rgpspec: *const PROPSPEC, rgpropvar: *mut PROPVARIANT) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    ReadMultiple: usize,
+    #[cfg(feature = "Win32_Foundation")]
+    pub WriteMultiple: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, cpspec: u32, rgpspec: *const PROPSPEC, rgpropvar: *const PROPVARIANT, propidnamefirst: u32) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    WriteMultiple: usize,
+    pub DeleteMultiple: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, cpspec: u32, rgpspec: *const PROPSPEC) -> ::windows::core::HRESULT,
+    pub ReadPropertyNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, cpropid: u32, rgpropid: *const u32, rglpwstrname: *mut ::windows::core::PWSTR) -> ::windows::core::HRESULT,
+    pub WritePropertyNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, cpropid: u32, rgpropid: *const u32, rglpwstrname: *const ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
+    pub DeletePropertyNames: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, cpropid: u32, rgpropid: *const u32) -> ::windows::core::HRESULT,
+    pub Commit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, grfcommitflags: u32) -> ::windows::core::HRESULT,
+    pub Revert: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub Enum: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    #[cfg(feature = "Win32_Foundation")]
+    pub SetTimes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pctime: *const super::super::super::Foundation::FILETIME, patime: *const super::super::super::Foundation::FILETIME, pmtime: *const super::super::super::Foundation::FILETIME) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    SetTimes: usize,
+    pub SetClass: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, clsid: *const ::windows::core::GUID) -> ::windows::core::HRESULT,
+    #[cfg(feature = "Win32_Foundation")]
+    pub Stat: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstatpsstg: *mut STATPROPSETSTG) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    Stat: usize,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IRootStorage(::windows::core::IUnknown);
+impl IRootStorage {
+    pub unsafe fn SwitchToFile<P0>(&self, pszfile: P0) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    {
+        (::windows::core::Interface::vtable(self).SwitchToFile)(::windows::core::Interface::as_raw(self), pszfile.into_param().abi()).ok()
+    }
+}
+::windows::imp::interface_hierarchy!(IRootStorage, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IRootStorage {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IRootStorage {}
+impl ::core::fmt::Debug for IRootStorage {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IRootStorage").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IRootStorage {
+    type Vtable = IRootStorage_Vtbl;
+}
+impl ::core::clone::Clone for IRootStorage {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IRootStorage {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x00000012_0000_0000_c000_000000000046);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IRootStorage_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    pub SwitchToFile: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pszfile: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+pub struct IStorage(::windows::core::IUnknown);
+impl IStorage {
+    pub unsafe fn CreateStream<P0>(&self, pwcsname: P0, grfmode: super::STGM, reserved1: u32, reserved2: u32) -> ::windows::core::Result<super::IStream>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    {
+        let mut result__ = ::windows::core::zeroed::<super::IStream>();
+        (::windows::core::Interface::vtable(self).CreateStream)(::windows::core::Interface::as_raw(self), pwcsname.into_param().abi(), grfmode, reserved1, reserved2, &mut result__).from_abi(result__)
+    }
+    pub unsafe fn OpenStream<P0>(&self, pwcsname: P0, reserved1: ::core::option::Option<*const ::core::ffi::c_void>, grfmode: super::STGM, reserved2: u32) -> ::windows::core::Result<super::IStream>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    {
+        let mut result__ = ::windows::core::zeroed::<super::IStream>();
+        (::windows::core::Interface::vtable(self).OpenStream)(::windows::core::Interface::as_raw(self), pwcsname.into_param().abi(), ::core::mem::transmute(reserved1.unwrap_or(::std::ptr::null())), grfmode, reserved2, &mut result__).from_abi(result__)
+    }
+    pub unsafe fn CreateStorage<P0>(&self, pwcsname: P0, grfmode: super::STGM, reserved1: u32, reserved2: u32) -> ::windows::core::Result<IStorage>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    {
+        let mut result__ = ::windows::core::zeroed::<IStorage>();
+        (::windows::core::Interface::vtable(self).CreateStorage)(::windows::core::Interface::as_raw(self), pwcsname.into_param().abi(), grfmode, reserved1, reserved2, &mut result__).from_abi(result__)
+    }
+    pub unsafe fn OpenStorage<P0, P1>(&self, pwcsname: P0, pstgpriority: P1, grfmode: super::STGM, snbexclude: *const *const u16, reserved: u32) -> ::windows::core::Result<IStorage>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+        P1: ::windows::core::IntoParam<IStorage>,
+    {
+        let mut result__ = ::windows::core::zeroed::<IStorage>();
+        (::windows::core::Interface::vtable(self).OpenStorage)(::windows::core::Interface::as_raw(self), pwcsname.into_param().abi(), pstgpriority.into_param().abi(), grfmode, snbexclude, reserved, &mut result__).from_abi(result__)
+    }
+    pub unsafe fn CopyTo<P0>(&self, rgiidexclude: ::core::option::Option<&[::windows::core::GUID]>, snbexclude: ::core::option::Option<*const *const u16>, pstgdest: P0) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<IStorage>,
+    {
+        (::windows::core::Interface::vtable(self).CopyTo)(::windows::core::Interface::as_raw(self), rgiidexclude.as_deref().map_or(0, |slice| slice.len() as _), ::core::mem::transmute(rgiidexclude.as_deref().map_or(::core::ptr::null(), |slice| slice.as_ptr())), ::core::mem::transmute(snbexclude.unwrap_or(::std::ptr::null())), pstgdest.into_param().abi()).ok()
+    }
+    pub unsafe fn MoveElementTo<P0, P1, P2>(&self, pwcsname: P0, pstgdest: P1, pwcsnewname: P2, grfflags: STGMOVE) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+        P1: ::windows::core::IntoParam<IStorage>,
+        P2: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    {
+        (::windows::core::Interface::vtable(self).MoveElementTo)(::windows::core::Interface::as_raw(self), pwcsname.into_param().abi(), pstgdest.into_param().abi(), pwcsnewname.into_param().abi(), grfflags).ok()
+    }
+    pub unsafe fn Commit(&self, grfcommitflags: super::STGC) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Commit)(::windows::core::Interface::as_raw(self), grfcommitflags).ok()
+    }
+    pub unsafe fn Revert(&self) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Revert)(::windows::core::Interface::as_raw(self)).ok()
+    }
+    pub unsafe fn EnumElements(&self, reserved1: u32, reserved2: ::core::option::Option<*const ::core::ffi::c_void>, reserved3: u32) -> ::windows::core::Result<IEnumSTATSTG> {
+        let mut result__ = ::windows::core::zeroed::<IEnumSTATSTG>();
+        (::windows::core::Interface::vtable(self).EnumElements)(::windows::core::Interface::as_raw(self), reserved1, ::core::mem::transmute(reserved2.unwrap_or(::std::ptr::null())), reserved3, &mut result__).from_abi(result__)
+    }
+    pub unsafe fn DestroyElement<P0>(&self, pwcsname: P0) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    {
+        (::windows::core::Interface::vtable(self).DestroyElement)(::windows::core::Interface::as_raw(self), pwcsname.into_param().abi()).ok()
+    }
+    pub unsafe fn RenameElement<P0, P1>(&self, pwcsoldname: P0, pwcsnewname: P1) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+        P1: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    {
+        (::windows::core::Interface::vtable(self).RenameElement)(::windows::core::Interface::as_raw(self), pwcsoldname.into_param().abi(), pwcsnewname.into_param().abi()).ok()
+    }
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn SetElementTimes<P0>(&self, pwcsname: P0, pctime: *const super::super::super::Foundation::FILETIME, patime: *const super::super::super::Foundation::FILETIME, pmtime: *const super::super::super::Foundation::FILETIME) -> ::windows::core::Result<()>
+    where
+        P0: ::windows::core::IntoParam<::windows::core::PCWSTR>,
+    {
+        (::windows::core::Interface::vtable(self).SetElementTimes)(::windows::core::Interface::as_raw(self), pwcsname.into_param().abi(), pctime, patime, pmtime).ok()
+    }
+    pub unsafe fn SetClass(&self, clsid: *const ::windows::core::GUID) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).SetClass)(::windows::core::Interface::as_raw(self), clsid).ok()
+    }
+    pub unsafe fn SetStateBits(&self, grfstatebits: u32, grfmask: u32) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).SetStateBits)(::windows::core::Interface::as_raw(self), grfstatebits, grfmask).ok()
+    }
+    #[doc = "*Required features: `\"Win32_Foundation\"`*"]
+    #[cfg(feature = "Win32_Foundation")]
+    pub unsafe fn Stat(&self, pstatstg: *mut super::STATSTG, grfstatflag: super::STATFLAG) -> ::windows::core::Result<()> {
+        (::windows::core::Interface::vtable(self).Stat)(::windows::core::Interface::as_raw(self), pstatstg, grfstatflag).ok()
+    }
+}
+::windows::imp::interface_hierarchy!(IStorage, ::windows::core::IUnknown);
+impl ::core::cmp::PartialEq for IStorage {
+    fn eq(&self, other: &Self) -> bool {
+        self.0 == other.0
+    }
+}
+impl ::core::cmp::Eq for IStorage {}
+impl ::core::fmt::Debug for IStorage {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("IStorage").field(&self.0).finish()
+    }
+}
+unsafe impl ::windows::core::Interface for IStorage {
+    type Vtable = IStorage_Vtbl;
+}
+impl ::core::clone::Clone for IStorage {
+    fn clone(&self) -> Self {
+        Self(self.0.clone())
+    }
+}
+unsafe impl ::windows::core::ComInterface for IStorage {
+    const IID: ::windows::core::GUID = ::windows::core::GUID::from_u128(0x0000000b_0000_0000_c000_000000000046);
+}
+#[repr(C)]
+#[doc(hidden)]
+pub struct IStorage_Vtbl {
+    pub base__: ::windows::core::IUnknown_Vtbl,
+    pub CreateStream: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwcsname: ::windows::core::PCWSTR, grfmode: super::STGM, reserved1: u32, reserved2: u32, ppstm: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub OpenStream: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwcsname: ::windows::core::PCWSTR, reserved1: *const ::core::ffi::c_void, grfmode: super::STGM, reserved2: u32, ppstm: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub CreateStorage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwcsname: ::windows::core::PCWSTR, grfmode: super::STGM, reserved1: u32, reserved2: u32, ppstg: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub OpenStorage: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwcsname: ::windows::core::PCWSTR, pstgpriority: *mut ::core::ffi::c_void, grfmode: super::STGM, snbexclude: *const *const u16, reserved: u32, ppstg: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub CopyTo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, ciidexclude: u32, rgiidexclude: *const ::windows::core::GUID, snbexclude: *const *const u16, pstgdest: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub MoveElementTo: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwcsname: ::windows::core::PCWSTR, pstgdest: *mut ::core::ffi::c_void, pwcsnewname: ::windows::core::PCWSTR, grfflags: STGMOVE) -> ::windows::core::HRESULT,
+    pub Commit: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, grfcommitflags: super::STGC) -> ::windows::core::HRESULT,
+    pub Revert: unsafe extern "system" fn(this: *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub EnumElements: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, reserved1: u32, reserved2: *const ::core::ffi::c_void, reserved3: u32, ppenum: *mut *mut ::core::ffi::c_void) -> ::windows::core::HRESULT,
+    pub DestroyElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwcsname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
+    pub RenameElement: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwcsoldname: ::windows::core::PCWSTR, pwcsnewname: ::windows::core::PCWSTR) -> ::windows::core::HRESULT,
+    #[cfg(feature = "Win32_Foundation")]
+    pub SetElementTimes: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pwcsname: ::windows::core::PCWSTR, pctime: *const super::super::super::Foundation::FILETIME, patime: *const super::super::super::Foundation::FILETIME, pmtime: *const super::super::super::Foundation::FILETIME) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    SetElementTimes: usize,
+    pub SetClass: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, clsid: *const ::windows::core::GUID) -> ::windows::core::HRESULT,
+    pub SetStateBits: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, grfstatebits: u32, grfmask: u32) -> ::windows::core::HRESULT,
+    #[cfg(feature = "Win32_Foundation")]
+    pub Stat: unsafe extern "system" fn(this: *mut ::core::ffi::c_void, pstatstg: *mut super::STATSTG, grfstatflag: super::STATFLAG) -> ::windows::core::HRESULT,
+    #[cfg(not(feature = "Win32_Foundation"))]
+    Stat: usize,
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const CCH_MAX_PROPSTG_NAME: u32 = 31u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const CWCSTORAGENAME: u32 = 32u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDI_THUMBNAIL: i32 = 2i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_BYTECOUNT: u32 = 4u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_CATEGORY: u32 = 2u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_COMPANY: u32 = 15u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_DOCPARTS: u32 = 13u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_HEADINGPAIR: u32 = 12u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_HIDDENCOUNT: u32 = 9u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_LINECOUNT: u32 = 5u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_LINKSDIRTY: u32 = 16u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_MANAGER: u32 = 14u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_MMCLIPCOUNT: u32 = 10u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_NOTECOUNT: u32 = 8u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_PARCOUNT: u32 = 6u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_PRESFORMAT: u32 = 3u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_SCALE: u32 = 11u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDDSI_SLIDECOUNT: u32 = 7u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_COPYRIGHT: i32 = 11i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_EDITOR: i32 = 2i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_OWNER: i32 = 8i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_PRODUCTION: i32 = 10i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_PROJECT: i32 = 6i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_RATING: i32 = 9i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_SEQUENCE_NO: i32 = 5i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_SOURCE: i32 = 4i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS: i32 = 7i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_SUPPLIER: i32 = 3i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_APPNAME: i32 = 18i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_AUTHOR: i32 = 4i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_CHARCOUNT: i32 = 16i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_COMMENTS: i32 = 6i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_CREATE_DTM: i32 = 12i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_DOC_SECURITY: i32 = 19i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_EDITTIME: i32 = 10i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_KEYWORDS: i32 = 5i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_LASTAUTHOR: i32 = 8i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_LASTPRINTED: i32 = 11i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_LASTSAVE_DTM: i32 = 13i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_PAGECOUNT: i32 = 14i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_REVNUMBER: i32 = 9i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_SUBJECT: i32 = 3i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_TEMPLATE: i32 = 7i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_THUMBNAIL: i32 = 17i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_TITLE: i32 = 2i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDSI_WORDCOUNT: i32 = 15i32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_BEHAVIOR: u32 = 2147483651u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_CODEPAGE: u32 = 1u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_DICTIONARY: u32 = 0u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_FIRST_NAME_DEFAULT: u32 = 4095u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_FIRST_USABLE: u32 = 2u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_ILLEGAL: u32 = 4294967295u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_LOCALE: u32 = 2147483648u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_MAX_READONLY: u32 = 3221225471u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_MIN_READONLY: u32 = 2147483648u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_MODIFY_TIME: u32 = 2147483649u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PID_SECURITY: u32 = 2147483650u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PROPSETFLAG_ANSI: u32 = 2u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PROPSETFLAG_CASE_SENSITIVE: u32 = 8u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PROPSETFLAG_DEFAULT: u32 = 0u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PROPSETFLAG_NONSIMPLE: u32 = 1u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PROPSETFLAG_UNBUFFERED: u32 = 4u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PROPSETHDR_OSVERSION_UNKNOWN: u32 = 4294967295u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PROPSET_BEHAVIOR_CASE_SENSITIVE: u32 = 1u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PRSPEC_INVALID: u32 = 4294967295u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const STGOPTIONS_VERSION: u32 = 1u32;
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
+pub struct PIDMSI_STATUS_VALUE(pub i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS_NORMAL: PIDMSI_STATUS_VALUE = PIDMSI_STATUS_VALUE(0i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS_NEW: PIDMSI_STATUS_VALUE = PIDMSI_STATUS_VALUE(1i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS_PRELIM: PIDMSI_STATUS_VALUE = PIDMSI_STATUS_VALUE(2i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS_DRAFT: PIDMSI_STATUS_VALUE = PIDMSI_STATUS_VALUE(3i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS_INPROGRESS: PIDMSI_STATUS_VALUE = PIDMSI_STATUS_VALUE(4i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS_EDIT: PIDMSI_STATUS_VALUE = PIDMSI_STATUS_VALUE(5i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS_REVIEW: PIDMSI_STATUS_VALUE = PIDMSI_STATUS_VALUE(6i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS_PROOF: PIDMSI_STATUS_VALUE = PIDMSI_STATUS_VALUE(7i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS_FINAL: PIDMSI_STATUS_VALUE = PIDMSI_STATUS_VALUE(8i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PIDMSI_STATUS_OTHER: PIDMSI_STATUS_VALUE = PIDMSI_STATUS_VALUE(32767i32);
+impl ::core::marker::Copy for PIDMSI_STATUS_VALUE {}
+impl ::core::clone::Clone for PIDMSI_STATUS_VALUE {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::default::Default for PIDMSI_STATUS_VALUE {
+    fn default() -> Self {
+        Self(0)
+    }
+}
+impl ::windows::core::TypeKind for PIDMSI_STATUS_VALUE {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::fmt::Debug for PIDMSI_STATUS_VALUE {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("PIDMSI_STATUS_VALUE").field(&self.0).finish()
+    }
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
+pub struct PROPSPEC_KIND(pub u32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PRSPEC_LPWSTR: PROPSPEC_KIND = PROPSPEC_KIND(0u32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const PRSPEC_PROPID: PROPSPEC_KIND = PROPSPEC_KIND(1u32);
+impl ::core::marker::Copy for PROPSPEC_KIND {}
+impl ::core::clone::Clone for PROPSPEC_KIND {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::default::Default for PROPSPEC_KIND {
+    fn default() -> Self {
+        Self(0)
+    }
+}
+impl ::windows::core::TypeKind for PROPSPEC_KIND {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::fmt::Debug for PROPSPEC_KIND {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("PROPSPEC_KIND").field(&self.0).finish()
+    }
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
+pub struct STGFMT(pub u32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const STGFMT_STORAGE: STGFMT = STGFMT(0u32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const STGFMT_NATIVE: STGFMT = STGFMT(1u32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const STGFMT_FILE: STGFMT = STGFMT(3u32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const STGFMT_ANY: STGFMT = STGFMT(4u32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const STGFMT_DOCFILE: STGFMT = STGFMT(5u32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const STGFMT_DOCUMENT: STGFMT = STGFMT(0u32);
+impl ::core::marker::Copy for STGFMT {}
+impl ::core::clone::Clone for STGFMT {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::default::Default for STGFMT {
+    fn default() -> Self {
+        Self(0)
+    }
+}
+impl ::windows::core::TypeKind for STGFMT {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::fmt::Debug for STGFMT {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("STGFMT").field(&self.0).finish()
+    }
+}
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+#[repr(transparent)]
+#[derive(::core::cmp::PartialEq, ::core::cmp::Eq)]
+pub struct STGMOVE(pub i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const STGMOVE_MOVE: STGMOVE = STGMOVE(0i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const STGMOVE_COPY: STGMOVE = STGMOVE(1i32);
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub const STGMOVE_SHALLOWCOPY: STGMOVE = STGMOVE(2i32);
+impl ::core::marker::Copy for STGMOVE {}
+impl ::core::clone::Clone for STGMOVE {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::default::Default for STGMOVE {
+    fn default() -> Self {
+        Self(0)
+    }
+}
+impl ::windows::core::TypeKind for STGMOVE {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::fmt::Debug for STGMOVE {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_tuple("STGMOVE").field(&self.0).finish()
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct BSTRBLOB {
+    pub cbSize: u32,
+    pub pData: *mut u8,
+}
+impl ::core::marker::Copy for BSTRBLOB {}
+impl ::core::clone::Clone for BSTRBLOB {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for BSTRBLOB {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("BSTRBLOB").field("cbSize", &self.cbSize).field("pData", &self.pData).finish()
+    }
+}
+impl ::windows::core::TypeKind for BSTRBLOB {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for BSTRBLOB {
+    fn eq(&self, other: &Self) -> bool {
+        self.cbSize == other.cbSize && self.pData == other.pData
+    }
+}
+impl ::core::cmp::Eq for BSTRBLOB {}
+impl ::core::default::Default for BSTRBLOB {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+pub struct CABOOL {
+    pub cElems: u32,
+    pub pElems: *mut super::super::super::Foundation::VARIANT_BOOL,
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::marker::Copy for CABOOL {}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::clone::Clone for CABOOL {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::fmt::Debug for CABOOL {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CABOOL").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::windows::core::TypeKind for CABOOL {
+    type TypeKind = ::windows::core::CopyType;
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::cmp::PartialEq for CABOOL {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::cmp::Eq for CABOOL {}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::default::Default for CABOOL {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CABSTR {
+    pub cElems: u32,
+    pub pElems: *mut ::windows::core::BSTR,
+}
+impl ::core::marker::Copy for CABSTR {}
+impl ::core::clone::Clone for CABSTR {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CABSTR {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CABSTR").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CABSTR {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CABSTR {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CABSTR {}
+impl ::core::default::Default for CABSTR {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CABSTRBLOB {
+    pub cElems: u32,
+    pub pElems: *mut BSTRBLOB,
+}
+impl ::core::marker::Copy for CABSTRBLOB {}
+impl ::core::clone::Clone for CABSTRBLOB {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CABSTRBLOB {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CABSTRBLOB").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CABSTRBLOB {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CABSTRBLOB {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CABSTRBLOB {}
+impl ::core::default::Default for CABSTRBLOB {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CAC {
+    pub cElems: u32,
+    pub pElems: ::windows::core::PSTR,
+}
+impl ::core::marker::Copy for CAC {}
+impl ::core::clone::Clone for CAC {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CAC {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAC").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CAC {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CAC {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CAC {}
+impl ::core::default::Default for CAC {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CACLIPDATA {
+    pub cElems: u32,
+    pub pElems: *mut CLIPDATA,
+}
+impl ::core::marker::Copy for CACLIPDATA {}
+impl ::core::clone::Clone for CACLIPDATA {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CACLIPDATA {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CACLIPDATA").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CACLIPDATA {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CACLIPDATA {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CACLIPDATA {}
+impl ::core::default::Default for CACLIPDATA {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CACLSID {
+    pub cElems: u32,
+    pub pElems: *mut ::windows::core::GUID,
+}
+impl ::core::marker::Copy for CACLSID {}
+impl ::core::clone::Clone for CACLSID {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CACLSID {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CACLSID").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CACLSID {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CACLSID {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CACLSID {}
+impl ::core::default::Default for CACLSID {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CACY {
+    pub cElems: u32,
+    pub pElems: *mut super::CY,
+}
+impl ::core::marker::Copy for CACY {}
+impl ::core::clone::Clone for CACY {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CACY {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CACY").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CACY {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CACY {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CACY {}
+impl ::core::default::Default for CACY {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CADATE {
+    pub cElems: u32,
+    pub pElems: *mut f64,
+}
+impl ::core::marker::Copy for CADATE {}
+impl ::core::clone::Clone for CADATE {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CADATE {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CADATE").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CADATE {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CADATE {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CADATE {}
+impl ::core::default::Default for CADATE {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CADBL {
+    pub cElems: u32,
+    pub pElems: *mut f64,
+}
+impl ::core::marker::Copy for CADBL {}
+impl ::core::clone::Clone for CADBL {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CADBL {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CADBL").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CADBL {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CADBL {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CADBL {}
+impl ::core::default::Default for CADBL {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+pub struct CAFILETIME {
+    pub cElems: u32,
+    pub pElems: *mut super::super::super::Foundation::FILETIME,
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::marker::Copy for CAFILETIME {}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::clone::Clone for CAFILETIME {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::fmt::Debug for CAFILETIME {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAFILETIME").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::windows::core::TypeKind for CAFILETIME {
+    type TypeKind = ::windows::core::CopyType;
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::cmp::PartialEq for CAFILETIME {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::cmp::Eq for CAFILETIME {}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::default::Default for CAFILETIME {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CAFLT {
+    pub cElems: u32,
+    pub pElems: *mut f32,
+}
+impl ::core::marker::Copy for CAFLT {}
+impl ::core::clone::Clone for CAFLT {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CAFLT {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAFLT").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CAFLT {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CAFLT {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CAFLT {}
+impl ::core::default::Default for CAFLT {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CAH {
+    pub cElems: u32,
+    pub pElems: *mut i64,
+}
+impl ::core::marker::Copy for CAH {}
+impl ::core::clone::Clone for CAH {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CAH {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAH").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CAH {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CAH {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CAH {}
+impl ::core::default::Default for CAH {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CAI {
+    pub cElems: u32,
+    pub pElems: *mut i16,
+}
+impl ::core::marker::Copy for CAI {}
+impl ::core::clone::Clone for CAI {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CAI {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAI").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CAI {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CAI {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CAI {}
+impl ::core::default::Default for CAI {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CAL {
+    pub cElems: u32,
+    pub pElems: *mut i32,
+}
+impl ::core::marker::Copy for CAL {}
+impl ::core::clone::Clone for CAL {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CAL {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAL").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CAL {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CAL {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CAL {}
+impl ::core::default::Default for CAL {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CALPSTR {
+    pub cElems: u32,
+    pub pElems: *mut ::windows::core::PSTR,
+}
+impl ::core::marker::Copy for CALPSTR {}
+impl ::core::clone::Clone for CALPSTR {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CALPSTR {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CALPSTR").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CALPSTR {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CALPSTR {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CALPSTR {}
+impl ::core::default::Default for CALPSTR {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CALPWSTR {
+    pub cElems: u32,
+    pub pElems: *mut ::windows::core::PWSTR,
+}
+impl ::core::marker::Copy for CALPWSTR {}
+impl ::core::clone::Clone for CALPWSTR {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CALPWSTR {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CALPWSTR").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CALPWSTR {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CALPWSTR {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CALPWSTR {}
+impl ::core::default::Default for CALPWSTR {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+pub struct CAPROPVARIANT {
+    pub cElems: u32,
+    pub pElems: *mut PROPVARIANT,
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::marker::Copy for CAPROPVARIANT {}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::clone::Clone for CAPROPVARIANT {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::fmt::Debug for CAPROPVARIANT {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAPROPVARIANT").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::windows::core::TypeKind for CAPROPVARIANT {
+    type TypeKind = ::windows::core::CopyType;
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::cmp::PartialEq for CAPROPVARIANT {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::cmp::Eq for CAPROPVARIANT {}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::default::Default for CAPROPVARIANT {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CASCODE {
+    pub cElems: u32,
+    pub pElems: *mut i32,
+}
+impl ::core::marker::Copy for CASCODE {}
+impl ::core::clone::Clone for CASCODE {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CASCODE {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CASCODE").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CASCODE {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CASCODE {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CASCODE {}
+impl ::core::default::Default for CASCODE {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CAUB {
+    pub cElems: u32,
+    pub pElems: *mut u8,
+}
+impl ::core::marker::Copy for CAUB {}
+impl ::core::clone::Clone for CAUB {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CAUB {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAUB").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CAUB {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CAUB {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CAUB {}
+impl ::core::default::Default for CAUB {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CAUH {
+    pub cElems: u32,
+    pub pElems: *mut u64,
+}
+impl ::core::marker::Copy for CAUH {}
+impl ::core::clone::Clone for CAUH {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CAUH {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAUH").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CAUH {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CAUH {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CAUH {}
+impl ::core::default::Default for CAUH {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CAUI {
+    pub cElems: u32,
+    pub pElems: *mut u16,
+}
+impl ::core::marker::Copy for CAUI {}
+impl ::core::clone::Clone for CAUI {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CAUI {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAUI").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CAUI {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CAUI {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CAUI {}
+impl ::core::default::Default for CAUI {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CAUL {
+    pub cElems: u32,
+    pub pElems: *mut u32,
+}
+impl ::core::marker::Copy for CAUL {}
+impl ::core::clone::Clone for CAUL {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CAUL {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CAUL").field("cElems", &self.cElems).field("pElems", &self.pElems).finish()
+    }
+}
+impl ::windows::core::TypeKind for CAUL {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CAUL {
+    fn eq(&self, other: &Self) -> bool {
+        self.cElems == other.cElems && self.pElems == other.pElems
+    }
+}
+impl ::core::cmp::Eq for CAUL {}
+impl ::core::default::Default for CAUL {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct CLIPDATA {
+    pub cbSize: u32,
+    pub ulClipFmt: i32,
+    pub pClipData: *mut u8,
+}
+impl ::core::marker::Copy for CLIPDATA {}
+impl ::core::clone::Clone for CLIPDATA {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for CLIPDATA {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("CLIPDATA").field("cbSize", &self.cbSize).field("ulClipFmt", &self.ulClipFmt).field("pClipData", &self.pClipData).finish()
+    }
+}
+impl ::windows::core::TypeKind for CLIPDATA {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for CLIPDATA {
+    fn eq(&self, other: &Self) -> bool {
+        self.cbSize == other.cbSize && self.ulClipFmt == other.ulClipFmt && self.pClipData == other.pClipData
+    }
+}
+impl ::core::cmp::Eq for CLIPDATA {}
+impl ::core::default::Default for CLIPDATA {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct OLESTREAM {
+    pub lpstbl: *mut OLESTREAMVTBL,
+}
+impl ::core::marker::Copy for OLESTREAM {}
+impl ::core::clone::Clone for OLESTREAM {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for OLESTREAM {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("OLESTREAM").field("lpstbl", &self.lpstbl).finish()
+    }
+}
+impl ::windows::core::TypeKind for OLESTREAM {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for OLESTREAM {
+    fn eq(&self, other: &Self) -> bool {
+        self.lpstbl == other.lpstbl
+    }
+}
+impl ::core::cmp::Eq for OLESTREAM {}
+impl ::core::default::Default for OLESTREAM {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct OLESTREAMVTBL {
+    pub Get: isize,
+    pub Put: isize,
+}
+impl ::core::marker::Copy for OLESTREAMVTBL {}
+impl ::core::clone::Clone for OLESTREAMVTBL {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for OLESTREAMVTBL {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("OLESTREAMVTBL").field("Get", &self.Get).field("Put", &self.Put).finish()
+    }
+}
+impl ::windows::core::TypeKind for OLESTREAMVTBL {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for OLESTREAMVTBL {
+    fn eq(&self, other: &Self) -> bool {
+        self.Get == other.Get && self.Put == other.Put
+    }
+}
+impl ::core::cmp::Eq for OLESTREAMVTBL {}
+impl ::core::default::Default for OLESTREAMVTBL {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+pub struct PMemoryAllocator(pub u8);
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct PROPBAG2 {
+    pub dwType: u32,
+    pub vt: super::VARENUM,
+    pub cfType: u16,
+    pub dwHint: u32,
+    pub pstrName: ::windows::core::PWSTR,
+    pub clsid: ::windows::core::GUID,
+}
+impl ::core::marker::Copy for PROPBAG2 {}
+impl ::core::clone::Clone for PROPBAG2 {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for PROPBAG2 {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("PROPBAG2").field("dwType", &self.dwType).field("vt", &self.vt).field("cfType", &self.cfType).field("dwHint", &self.dwHint).field("pstrName", &self.pstrName).field("clsid", &self.clsid).finish()
+    }
+}
+impl ::windows::core::TypeKind for PROPBAG2 {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for PROPBAG2 {
+    fn eq(&self, other: &Self) -> bool {
+        self.dwType == other.dwType && self.vt == other.vt && self.cfType == other.cfType && self.dwHint == other.dwHint && self.pstrName == other.pstrName && self.clsid == other.clsid
+    }
+}
+impl ::core::cmp::Eq for PROPBAG2 {}
+impl ::core::default::Default for PROPBAG2 {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct PROPSPEC {
+    pub ulKind: PROPSPEC_KIND,
+    pub Anonymous: PROPSPEC_0,
+}
+impl ::core::marker::Copy for PROPSPEC {}
+impl ::core::clone::Clone for PROPSPEC {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::windows::core::TypeKind for PROPSPEC {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::default::Default for PROPSPEC {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub union PROPSPEC_0 {
+    pub propid: u32,
+    pub lpwstr: ::windows::core::PWSTR,
+}
+impl ::core::marker::Copy for PROPSPEC_0 {}
+impl ::core::clone::Clone for PROPSPEC_0 {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::windows::core::TypeKind for PROPSPEC_0 {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::default::Default for PROPSPEC_0 {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+pub struct PROPVARIANT {
+    pub Anonymous: PROPVARIANT_0,
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::clone::Clone for PROPVARIANT {
+    fn clone(&self) -> Self {
+        unsafe { ::core::mem::transmute_copy(self) }
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::windows::core::TypeKind for PROPVARIANT {
+    type TypeKind = ::windows::core::CopyType;
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::default::Default for PROPVARIANT {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+pub union PROPVARIANT_0 {
+    pub Anonymous: ::std::mem::ManuallyDrop<PROPVARIANT_0_0>,
+    pub decVal: super::super::super::Foundation::DECIMAL,
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::clone::Clone for PROPVARIANT_0 {
+    fn clone(&self) -> Self {
+        unsafe { ::core::mem::transmute_copy(self) }
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::windows::core::TypeKind for PROPVARIANT_0 {
+    type TypeKind = ::windows::core::CopyType;
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::default::Default for PROPVARIANT_0 {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+pub struct PROPVARIANT_0_0 {
+    pub vt: super::VARENUM,
+    pub wReserved1: u16,
+    pub wReserved2: u16,
+    pub wReserved3: u16,
+    pub Anonymous: PROPVARIANT_0_0_0,
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::clone::Clone for PROPVARIANT_0_0 {
+    fn clone(&self) -> Self {
+        unsafe { ::core::mem::transmute_copy(self) }
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::windows::core::TypeKind for PROPVARIANT_0_0 {
+    type TypeKind = ::windows::core::CopyType;
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::default::Default for PROPVARIANT_0_0 {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+pub union PROPVARIANT_0_0_0 {
+    pub cVal: u8,
+    pub bVal: u8,
+    pub iVal: i16,
+    pub uiVal: u16,
+    pub lVal: i32,
+    pub ulVal: u32,
+    pub intVal: i32,
+    pub uintVal: u32,
+    pub hVal: i64,
+    pub uhVal: u64,
+    pub fltVal: f32,
+    pub dblVal: f64,
+    pub boolVal: super::super::super::Foundation::VARIANT_BOOL,
+    pub __OBSOLETE__VARIANT_BOOL: super::super::super::Foundation::VARIANT_BOOL,
+    pub scode: i32,
+    pub cyVal: super::CY,
+    pub date: f64,
+    pub filetime: super::super::super::Foundation::FILETIME,
+    pub puuid: *mut ::windows::core::GUID,
+    pub pclipdata: *mut CLIPDATA,
+    pub bstrVal: ::std::mem::ManuallyDrop<::windows::core::BSTR>,
+    pub bstrblobVal: BSTRBLOB,
+    pub blob: super::BLOB,
+    pub pszVal: ::windows::core::PSTR,
+    pub pwszVal: ::windows::core::PWSTR,
+    pub punkVal: ::std::mem::ManuallyDrop<::core::option::Option<::windows::core::IUnknown>>,
+    pub pdispVal: ::std::mem::ManuallyDrop<::core::option::Option<super::IDispatch>>,
+    pub pStream: ::std::mem::ManuallyDrop<::core::option::Option<super::IStream>>,
+    pub pStorage: ::std::mem::ManuallyDrop<::core::option::Option<IStorage>>,
+    pub pVersionedStream: *mut VERSIONEDSTREAM,
+    pub parray: *mut super::SAFEARRAY,
+    pub cac: CAC,
+    pub caub: CAUB,
+    pub cai: CAI,
+    pub caui: CAUI,
+    pub cal: CAL,
+    pub caul: CAUL,
+    pub cah: CAH,
+    pub cauh: CAUH,
+    pub caflt: CAFLT,
+    pub cadbl: CADBL,
+    pub cabool: CABOOL,
+    pub cascode: CASCODE,
+    pub cacy: CACY,
+    pub cadate: CADATE,
+    pub cafiletime: CAFILETIME,
+    pub cauuid: CACLSID,
+    pub caclipdata: CACLIPDATA,
+    pub cabstr: CABSTR,
+    pub cabstrblob: CABSTRBLOB,
+    pub calpstr: CALPSTR,
+    pub calpwstr: CALPWSTR,
+    pub capropvar: CAPROPVARIANT,
+    pub pcVal: ::windows::core::PSTR,
+    pub pbVal: *mut u8,
+    pub piVal: *mut i16,
+    pub puiVal: *mut u16,
+    pub plVal: *mut i32,
+    pub pulVal: *mut u32,
+    pub pintVal: *mut i32,
+    pub puintVal: *mut u32,
+    pub pfltVal: *mut f32,
+    pub pdblVal: *mut f64,
+    pub pboolVal: *mut super::super::super::Foundation::VARIANT_BOOL,
+    pub pdecVal: *mut super::super::super::Foundation::DECIMAL,
+    pub pscode: *mut i32,
+    pub pcyVal: *mut super::CY,
+    pub pdate: *mut f64,
+    pub pbstrVal: *mut ::windows::core::BSTR,
+    pub ppunkVal: *mut ::core::option::Option<::windows::core::IUnknown>,
+    pub ppdispVal: *mut ::core::option::Option<super::IDispatch>,
+    pub pparray: *mut *mut super::SAFEARRAY,
+    pub pvarVal: *mut PROPVARIANT,
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::clone::Clone for PROPVARIANT_0_0_0 {
+    fn clone(&self) -> Self {
+        unsafe { ::core::mem::transmute_copy(self) }
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::windows::core::TypeKind for PROPVARIANT_0_0_0 {
+    type TypeKind = ::windows::core::CopyType;
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::default::Default for PROPVARIANT_0_0_0 {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct RemSNB {
+    pub ulCntStr: u32,
+    pub ulCntChar: u32,
+    pub rgString: [u16; 1],
+}
+impl ::core::marker::Copy for RemSNB {}
+impl ::core::clone::Clone for RemSNB {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for RemSNB {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("RemSNB").field("ulCntStr", &self.ulCntStr).field("ulCntChar", &self.ulCntChar).field("rgString", &self.rgString).finish()
+    }
+}
+impl ::windows::core::TypeKind for RemSNB {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for RemSNB {
+    fn eq(&self, other: &Self) -> bool {
+        self.ulCntStr == other.ulCntStr && self.ulCntChar == other.ulCntChar && self.rgString == other.rgString
+    }
+}
+impl ::core::cmp::Eq for RemSNB {}
+impl ::core::default::Default for RemSNB {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct SERIALIZEDPROPERTYVALUE {
+    pub dwType: u32,
+    pub rgb: [u8; 1],
+}
+impl ::core::marker::Copy for SERIALIZEDPROPERTYVALUE {}
+impl ::core::clone::Clone for SERIALIZEDPROPERTYVALUE {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for SERIALIZEDPROPERTYVALUE {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("SERIALIZEDPROPERTYVALUE").field("dwType", &self.dwType).field("rgb", &self.rgb).finish()
+    }
+}
+impl ::windows::core::TypeKind for SERIALIZEDPROPERTYVALUE {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for SERIALIZEDPROPERTYVALUE {
+    fn eq(&self, other: &Self) -> bool {
+        self.dwType == other.dwType && self.rgb == other.rgb
+    }
+}
+impl ::core::cmp::Eq for SERIALIZEDPROPERTYVALUE {}
+impl ::core::default::Default for SERIALIZEDPROPERTYVALUE {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`, `\"Win32_Foundation\"`*"]
+#[cfg(feature = "Win32_Foundation")]
+pub struct STATPROPSETSTG {
+    pub fmtid: ::windows::core::GUID,
+    pub clsid: ::windows::core::GUID,
+    pub grfFlags: u32,
+    pub mtime: super::super::super::Foundation::FILETIME,
+    pub ctime: super::super::super::Foundation::FILETIME,
+    pub atime: super::super::super::Foundation::FILETIME,
+    pub dwOSVersion: u32,
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::marker::Copy for STATPROPSETSTG {}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::clone::Clone for STATPROPSETSTG {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::fmt::Debug for STATPROPSETSTG {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("STATPROPSETSTG").field("fmtid", &self.fmtid).field("clsid", &self.clsid).field("grfFlags", &self.grfFlags).field("mtime", &self.mtime).field("ctime", &self.ctime).field("atime", &self.atime).field("dwOSVersion", &self.dwOSVersion).finish()
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::windows::core::TypeKind for STATPROPSETSTG {
+    type TypeKind = ::windows::core::CopyType;
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::cmp::PartialEq for STATPROPSETSTG {
+    fn eq(&self, other: &Self) -> bool {
+        self.fmtid == other.fmtid && self.clsid == other.clsid && self.grfFlags == other.grfFlags && self.mtime == other.mtime && self.ctime == other.ctime && self.atime == other.atime && self.dwOSVersion == other.dwOSVersion
+    }
+}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::cmp::Eq for STATPROPSETSTG {}
+#[cfg(feature = "Win32_Foundation")]
+impl ::core::default::Default for STATPROPSETSTG {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct STATPROPSTG {
+    pub lpwstrName: ::windows::core::PWSTR,
+    pub propid: u32,
+    pub vt: super::VARENUM,
+}
+impl ::core::marker::Copy for STATPROPSTG {}
+impl ::core::clone::Clone for STATPROPSTG {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for STATPROPSTG {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("STATPROPSTG").field("lpwstrName", &self.lpwstrName).field("propid", &self.propid).field("vt", &self.vt).finish()
+    }
+}
+impl ::windows::core::TypeKind for STATPROPSTG {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for STATPROPSTG {
+    fn eq(&self, other: &Self) -> bool {
+        self.lpwstrName == other.lpwstrName && self.propid == other.propid && self.vt == other.vt
+    }
+}
+impl ::core::cmp::Eq for STATPROPSTG {}
+impl ::core::default::Default for STATPROPSTG {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct STGOPTIONS {
+    pub usVersion: u16,
+    pub reserved: u16,
+    pub ulSectorSize: u32,
+    pub pwcsTemplateFile: ::windows::core::PCWSTR,
+}
+impl ::core::marker::Copy for STGOPTIONS {}
+impl ::core::clone::Clone for STGOPTIONS {
+    fn clone(&self) -> Self {
+        *self
+    }
+}
+impl ::core::fmt::Debug for STGOPTIONS {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("STGOPTIONS").field("usVersion", &self.usVersion).field("reserved", &self.reserved).field("ulSectorSize", &self.ulSectorSize).field("pwcsTemplateFile", &self.pwcsTemplateFile).finish()
+    }
+}
+impl ::windows::core::TypeKind for STGOPTIONS {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for STGOPTIONS {
+    fn eq(&self, other: &Self) -> bool {
+        self.usVersion == other.usVersion && self.reserved == other.reserved && self.ulSectorSize == other.ulSectorSize && self.pwcsTemplateFile == other.pwcsTemplateFile
+    }
+}
+impl ::core::cmp::Eq for STGOPTIONS {}
+impl ::core::default::Default for STGOPTIONS {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[repr(C)]
+#[doc = "*Required features: `\"Win32_System_Com_StructuredStorage\"`*"]
+pub struct VERSIONEDSTREAM {
+    pub guidVersion: ::windows::core::GUID,
+    pub pStream: ::std::mem::ManuallyDrop<::core::option::Option<super::IStream>>,
+}
+impl ::core::clone::Clone for VERSIONEDSTREAM {
+    fn clone(&self) -> Self {
+        unsafe { ::core::mem::transmute_copy(self) }
+    }
+}
+impl ::core::fmt::Debug for VERSIONEDSTREAM {
+    fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
+        f.debug_struct("VERSIONEDSTREAM").field("guidVersion", &self.guidVersion).field("pStream", &self.pStream).finish()
+    }
+}
+impl ::windows::core::TypeKind for VERSIONEDSTREAM {
+    type TypeKind = ::windows::core::CopyType;
+}
+impl ::core::cmp::PartialEq for VERSIONEDSTREAM {
+    fn eq(&self, other: &Self) -> bool {
+        self.guidVersion == other.guidVersion && self.pStream == other.pStream
+    }
+}
+impl ::core::cmp::Eq for VERSIONEDSTREAM {}
+impl ::core::default::Default for VERSIONEDSTREAM {
+    fn default() -> Self {
+        unsafe { ::core::mem::zeroed() }
+    }
+}
+#[cfg(feature = "implement")]
+::core::include!("impl.rs");