#[cfg(feature = "Win32_UI_Shell_Common")]
pub mod Common;
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub mod PropertiesSystem;
#[inline]
pub unsafe fn AssocCreate<T>(clsid: windows_core::GUID) -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_core::link!("shlwapi.dll" "system" fn AssocCreate(clsid : windows_core::GUID, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { AssocCreate(core::mem::transmute(clsid), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn AssocCreateForClasses<T>(rgclasses: &[ASSOCIATIONELEMENT]) -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn AssocCreateForClasses(rgclasses : *const ASSOCIATIONELEMENT, cclasses : u32, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { AssocCreateForClasses(core::mem::transmute(rgclasses.as_ptr()), rgclasses.len().try_into().unwrap(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn AssocGetDetailsOfPropKey<P0>(psf: P0, pidl: *const Common::ITEMIDLIST, pkey: *const super::super::Foundation::PROPERTYKEY, pv: *mut super::super::System::Variant::VARIANT, pffoundpropkey: Option<*mut windows_core::BOOL>) -> windows_core::Result<()>
where
    P0: windows_core::Param<IShellFolder>,
{
    windows_core::link!("shell32.dll" "system" fn AssocGetDetailsOfPropKey(psf : * mut core::ffi::c_void, pidl : *const Common:: ITEMIDLIST, pkey : *const super::super::Foundation:: PROPERTYKEY, pv : *mut super::super::System::Variant:: VARIANT, pffoundpropkey : *mut windows_core::BOOL) -> windows_core::HRESULT);
    unsafe { AssocGetDetailsOfPropKey(psf.param().abi(), pidl, pkey, core::mem::transmute(pv), pffoundpropkey.unwrap_or(core::mem::zeroed()) as _).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn AssocGetPerceivedType<P0>(pszext: P0, ptype: *mut Common::PERCEIVED, pflag: *mut u32, ppsztype: Option<*mut windows_core::PWSTR>) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn AssocGetPerceivedType(pszext : windows_core::PCWSTR, ptype : *mut Common:: PERCEIVED, pflag : *mut u32, ppsztype : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe { AssocGetPerceivedType(pszext.param().abi(), ptype as _, pflag as _, ppsztype.unwrap_or(core::mem::zeroed()) as _).ok() }
}
#[inline]
pub unsafe fn AssocIsDangerous<P0>(pszassoc: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn AssocIsDangerous(pszassoc : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { AssocIsDangerous(pszassoc.param().abi()) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn AssocQueryKeyA<P2, P3>(flags: ASSOCF, key: ASSOCKEY, pszassoc: P2, pszextra: P3) -> windows_core::Result<super::super::System::Registry::HKEY>
where
    P2: windows_core::Param<windows_core::PCSTR>,
    P3: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn AssocQueryKeyA(flags : ASSOCF, key : ASSOCKEY, pszassoc : windows_core::PCSTR, pszextra : windows_core::PCSTR, phkeyout : *mut super::super::System::Registry:: HKEY) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        AssocQueryKeyA(flags, key, pszassoc.param().abi(), pszextra.param().abi(), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn AssocQueryKeyW<P2, P3>(flags: ASSOCF, key: ASSOCKEY, pszassoc: P2, pszextra: P3) -> windows_core::Result<super::super::System::Registry::HKEY>
where
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn AssocQueryKeyW(flags : ASSOCF, key : ASSOCKEY, pszassoc : windows_core::PCWSTR, pszextra : windows_core::PCWSTR, phkeyout : *mut super::super::System::Registry:: HKEY) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        AssocQueryKeyW(flags, key, pszassoc.param().abi(), pszextra.param().abi(), &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn AssocQueryStringA<P2, P3>(flags: ASSOCF, str: ASSOCSTR, pszassoc: P2, pszextra: P3, pszout: Option<windows_core::PSTR>, pcchout: *mut u32) -> windows_core::HRESULT
where
    P2: windows_core::Param<windows_core::PCSTR>,
    P3: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn AssocQueryStringA(flags : ASSOCF, str : ASSOCSTR, pszassoc : windows_core::PCSTR, pszextra : windows_core::PCSTR, pszout : windows_core::PSTR, pcchout : *mut u32) -> windows_core::HRESULT);
    unsafe { AssocQueryStringA(flags, str, pszassoc.param().abi(), pszextra.param().abi(), pszout.unwrap_or(core::mem::zeroed()) as _, pcchout as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn AssocQueryStringByKeyA<P3>(flags: ASSOCF, str: ASSOCSTR, hkassoc: super::super::System::Registry::HKEY, pszextra: P3, pszout: Option<windows_core::PSTR>, pcchout: *mut u32) -> windows_core::HRESULT
where
    P3: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn AssocQueryStringByKeyA(flags : ASSOCF, str : ASSOCSTR, hkassoc : super::super::System::Registry:: HKEY, pszextra : windows_core::PCSTR, pszout : windows_core::PSTR, pcchout : *mut u32) -> windows_core::HRESULT);
    unsafe { AssocQueryStringByKeyA(flags, str, hkassoc, pszextra.param().abi(), pszout.unwrap_or(core::mem::zeroed()) as _, pcchout as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn AssocQueryStringByKeyW<P3>(flags: ASSOCF, str: ASSOCSTR, hkassoc: super::super::System::Registry::HKEY, pszextra: P3, pszout: Option<windows_core::PWSTR>, pcchout: *mut u32) -> windows_core::HRESULT
where
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn AssocQueryStringByKeyW(flags : ASSOCF, str : ASSOCSTR, hkassoc : super::super::System::Registry:: HKEY, pszextra : windows_core::PCWSTR, pszout : windows_core::PWSTR, pcchout : *mut u32) -> windows_core::HRESULT);
    unsafe { AssocQueryStringByKeyW(flags, str, hkassoc, pszextra.param().abi(), pszout.unwrap_or(core::mem::zeroed()) as _, pcchout as _) }
}
#[inline]
pub unsafe fn AssocQueryStringW<P2, P3>(flags: ASSOCF, str: ASSOCSTR, pszassoc: P2, pszextra: P3, pszout: Option<windows_core::PWSTR>, pcchout: *mut u32) -> windows_core::HRESULT
where
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn AssocQueryStringW(flags : ASSOCF, str : ASSOCSTR, pszassoc : windows_core::PCWSTR, pszextra : windows_core::PCWSTR, pszout : windows_core::PWSTR, pcchout : *mut u32) -> windows_core::HRESULT);
    unsafe { AssocQueryStringW(flags, str, pszassoc.param().abi(), pszextra.param().abi(), pszout.unwrap_or(core::mem::zeroed()) as _, pcchout as _) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn CDefFolderMenu_Create2<P4>(pidlfolder: Option<*const Common::ITEMIDLIST>, hwnd: Option<super::super::Foundation::HWND>, apidl: Option<&[*const Common::ITEMIDLIST]>, psf: P4, pfn: LPFNDFMCALLBACK, ahkeys: Option<&[super::super::System::Registry::HKEY]>) -> windows_core::Result<IContextMenu>
where
    P4: windows_core::Param<IShellFolder>,
{
    windows_core::link!("shell32.dll" "system" fn CDefFolderMenu_Create2(pidlfolder : *const Common:: ITEMIDLIST, hwnd : super::super::Foundation:: HWND, cidl : u32, apidl : *const *const Common:: ITEMIDLIST, psf : * mut core::ffi::c_void, pfn : LPFNDFMCALLBACK, nkeys : u32, ahkeys : *const super::super::System::Registry:: HKEY, ppcm : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        CDefFolderMenu_Create2(pidlfolder.unwrap_or(core::mem::zeroed()) as _, hwnd.unwrap_or(core::mem::zeroed()) as _, apidl.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(apidl.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), psf.param().abi(), pfn, ahkeys.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(ahkeys.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn CIDLData_CreateFromIDArray(pidlfolder: *const Common::ITEMIDLIST, apidl: Option<&[*const Common::ITEMIDLIST]>) -> windows_core::Result<super::super::System::Com::IDataObject> {
    windows_core::link!("shell32.dll" "system" fn CIDLData_CreateFromIDArray(pidlfolder : *const Common:: ITEMIDLIST, cidl : u32, apidl : *const *const Common:: ITEMIDLIST, ppdtobj : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        CIDLData_CreateFromIDArray(pidlfolder, apidl.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(apidl.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[inline]
pub unsafe fn ChrCmpIA(w1: u16, w2: u16) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn ChrCmpIA(w1 : u16, w2 : u16) -> windows_core::BOOL);
    unsafe { ChrCmpIA(w1, w2) }
}
#[inline]
pub unsafe fn ChrCmpIW(w1: u16, w2: u16) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn ChrCmpIW(w1 : u16, w2 : u16) -> windows_core::BOOL);
    unsafe { ChrCmpIW(w1, w2) }
}
#[inline]
pub unsafe fn ColorAdjustLuma(clrrgb: super::super::Foundation::COLORREF, n: i32, fscale: bool) -> super::super::Foundation::COLORREF {
    windows_core::link!("shlwapi.dll" "system" fn ColorAdjustLuma(clrrgb : super::super::Foundation:: COLORREF, n : i32, fscale : windows_core::BOOL) -> super::super::Foundation:: COLORREF);
    unsafe { ColorAdjustLuma(clrrgb, n, fscale.into()) }
}
#[inline]
pub unsafe fn ColorHLSToRGB(whue: u16, wluminance: u16, wsaturation: u16) -> super::super::Foundation::COLORREF {
    windows_core::link!("shlwapi.dll" "system" fn ColorHLSToRGB(whue : u16, wluminance : u16, wsaturation : u16) -> super::super::Foundation:: COLORREF);
    unsafe { ColorHLSToRGB(whue, wluminance, wsaturation) }
}
#[inline]
pub unsafe fn ColorRGBToHLS(clrrgb: super::super::Foundation::COLORREF, pwhue: *mut u16, pwluminance: *mut u16, pwsaturation: *mut u16) {
    windows_core::link!("shlwapi.dll" "system" fn ColorRGBToHLS(clrrgb : super::super::Foundation:: COLORREF, pwhue : *mut u16, pwluminance : *mut u16, pwsaturation : *mut u16));
    unsafe { ColorRGBToHLS(clrrgb, pwhue as _, pwluminance as _, pwsaturation as _) }
}
#[inline]
pub unsafe fn CommandLineToArgvW<P0>(lpcmdline: P0, pnumargs: *mut i32) -> *mut windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn CommandLineToArgvW(lpcmdline : windows_core::PCWSTR, pnumargs : *mut i32) -> *mut windows_core::PWSTR);
    unsafe { CommandLineToArgvW(lpcmdline.param().abi(), pnumargs as _) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn ConnectToConnectionPoint<P0, P3>(punk: P0, riidevent: *const windows_core::GUID, fconnect: bool, punktarget: P3, pdwcookie: *mut u32, ppcpout: Option<*mut Option<super::super::System::Com::IConnectionPoint>>) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::IUnknown>,
    P3: windows_core::Param<windows_core::IUnknown>,
{
    windows_core::link!("shlwapi.dll" "system" fn ConnectToConnectionPoint(punk : * mut core::ffi::c_void, riidevent : *const windows_core::GUID, fconnect : windows_core::BOOL, punktarget : * mut core::ffi::c_void, pdwcookie : *mut u32, ppcpout : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { ConnectToConnectionPoint(punk.param().abi(), riidevent, fconnect.into(), punktarget.param().abi(), pdwcookie as _, ppcpout.unwrap_or(core::mem::zeroed()) as _).ok() }
}
#[inline]
pub unsafe fn CreateProfile<P0, P1>(pszusersid: P0, pszusername: P1, pszprofilepath: &mut [u16]) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("userenv.dll" "system" fn CreateProfile(pszusersid : windows_core::PCWSTR, pszusername : windows_core::PCWSTR, pszprofilepath : windows_core::PWSTR, cchprofilepath : u32) -> windows_core::HRESULT);
    unsafe { CreateProfile(pszusersid.param().abi(), pszusername.param().abi(), core::mem::transmute(pszprofilepath.as_ptr()), pszprofilepath.len().try_into().unwrap()).ok() }
}
#[inline]
pub unsafe fn DAD_AutoScroll(hwnd: super::super::Foundation::HWND, pad: *mut AUTO_SCROLL_DATA, pptnow: *const super::super::Foundation::POINT) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn DAD_AutoScroll(hwnd : super::super::Foundation:: HWND, pad : *mut AUTO_SCROLL_DATA, pptnow : *const super::super::Foundation:: POINT) -> windows_core::BOOL);
    unsafe { DAD_AutoScroll(hwnd, pad as _, pptnow) }
}
#[inline]
pub unsafe fn DAD_DragEnterEx(hwndtarget: super::super::Foundation::HWND, ptstart: super::super::Foundation::POINT) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn DAD_DragEnterEx(hwndtarget : super::super::Foundation:: HWND, ptstart : super::super::Foundation:: POINT) -> windows_core::BOOL);
    unsafe { DAD_DragEnterEx(hwndtarget, core::mem::transmute(ptstart)) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn DAD_DragEnterEx2<P2>(hwndtarget: super::super::Foundation::HWND, ptstart: super::super::Foundation::POINT, pdtobject: P2) -> windows_core::BOOL
where
    P2: windows_core::Param<super::super::System::Com::IDataObject>,
{
    windows_core::link!("shell32.dll" "system" fn DAD_DragEnterEx2(hwndtarget : super::super::Foundation:: HWND, ptstart : super::super::Foundation:: POINT, pdtobject : * mut core::ffi::c_void) -> windows_core::BOOL);
    unsafe { DAD_DragEnterEx2(hwndtarget, core::mem::transmute(ptstart), pdtobject.param().abi()) }
}
#[inline]
pub unsafe fn DAD_DragLeave() -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn DAD_DragLeave() -> windows_core::BOOL);
    unsafe { DAD_DragLeave() }
}
#[inline]
pub unsafe fn DAD_DragMove(pt: super::super::Foundation::POINT) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn DAD_DragMove(pt : super::super::Foundation:: POINT) -> windows_core::BOOL);
    unsafe { DAD_DragMove(core::mem::transmute(pt)) }
}
#[cfg(feature = "Win32_UI_Controls")]
#[inline]
pub unsafe fn DAD_SetDragImage(him: super::Controls::HIMAGELIST, pptoffset: *mut super::super::Foundation::POINT) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn DAD_SetDragImage(him : super::Controls:: HIMAGELIST, pptoffset : *mut super::super::Foundation:: POINT) -> windows_core::BOOL);
    unsafe { DAD_SetDragImage(him, pptoffset as _) }
}
#[inline]
pub unsafe fn DAD_ShowDragImage(fshow: bool) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn DAD_ShowDragImage(fshow : windows_core::BOOL) -> windows_core::BOOL);
    unsafe { DAD_ShowDragImage(fshow.into()) }
}
#[inline]
pub unsafe fn DefSubclassProc(hwnd: super::super::Foundation::HWND, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT {
    windows_core::link!("comctl32.dll" "system" fn DefSubclassProc(hwnd : super::super::Foundation:: HWND, umsg : u32, wparam : super::super::Foundation:: WPARAM, lparam : super::super::Foundation:: LPARAM) -> super::super::Foundation:: LRESULT);
    unsafe { DefSubclassProc(hwnd, umsg, wparam, lparam) }
}
#[inline]
pub unsafe fn DeleteProfileA<P0, P1, P2>(lpsidstring: P0, lpprofilepath: P1, lpcomputername: P2) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("userenv.dll" "system" fn DeleteProfileA(lpsidstring : windows_core::PCSTR, lpprofilepath : windows_core::PCSTR, lpcomputername : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { DeleteProfileA(lpsidstring.param().abi(), lpprofilepath.param().abi(), lpcomputername.param().abi()).ok() }
}
#[inline]
pub unsafe fn DeleteProfileW<P0, P1, P2>(lpsidstring: P0, lpprofilepath: P1, lpcomputername: P2) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("userenv.dll" "system" fn DeleteProfileW(lpsidstring : windows_core::PCWSTR, lpprofilepath : windows_core::PCWSTR, lpcomputername : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { DeleteProfileW(lpsidstring.param().abi(), lpprofilepath.param().abi(), lpcomputername.param().abi()).ok() }
}
#[inline]
pub unsafe fn DoEnvironmentSubstA(pszsrc: &mut [u8]) -> u32 {
    windows_core::link!("shell32.dll" "system" fn DoEnvironmentSubstA(pszsrc : windows_core::PSTR, cchsrc : u32) -> u32);
    unsafe { DoEnvironmentSubstA(core::mem::transmute(pszsrc.as_ptr()), pszsrc.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn DoEnvironmentSubstW(pszsrc: &mut [u16]) -> u32 {
    windows_core::link!("shell32.dll" "system" fn DoEnvironmentSubstW(pszsrc : windows_core::PWSTR, cchsrc : u32) -> u32);
    unsafe { DoEnvironmentSubstW(core::mem::transmute(pszsrc.as_ptr()), pszsrc.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn DragAcceptFiles(hwnd: super::super::Foundation::HWND, faccept: bool) {
    windows_core::link!("shell32.dll" "system" fn DragAcceptFiles(hwnd : super::super::Foundation:: HWND, faccept : windows_core::BOOL));
    unsafe { DragAcceptFiles(hwnd, faccept.into()) }
}
#[inline]
pub unsafe fn DragFinish(hdrop: HDROP) {
    windows_core::link!("shell32.dll" "system" fn DragFinish(hdrop : HDROP));
    unsafe { DragFinish(hdrop) }
}
#[inline]
pub unsafe fn DragQueryFileA(hdrop: HDROP, ifile: u32, lpszfile: Option<&mut [u8]>) -> u32 {
    windows_core::link!("shell32.dll" "system" fn DragQueryFileA(hdrop : HDROP, ifile : u32, lpszfile : windows_core::PSTR, cch : u32) -> u32);
    unsafe { DragQueryFileA(hdrop, ifile, core::mem::transmute(lpszfile.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), lpszfile.as_deref().map_or(0, |slice| slice.len().try_into().unwrap())) }
}
#[inline]
pub unsafe fn DragQueryFileW(hdrop: HDROP, ifile: u32, lpszfile: Option<&mut [u16]>) -> u32 {
    windows_core::link!("shell32.dll" "system" fn DragQueryFileW(hdrop : HDROP, ifile : u32, lpszfile : windows_core::PWSTR, cch : u32) -> u32);
    unsafe { DragQueryFileW(hdrop, ifile, core::mem::transmute(lpszfile.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), lpszfile.as_deref().map_or(0, |slice| slice.len().try_into().unwrap())) }
}
#[inline]
pub unsafe fn DragQueryPoint(hdrop: HDROP, ppt: *mut super::super::Foundation::POINT) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn DragQueryPoint(hdrop : HDROP, ppt : *mut super::super::Foundation:: POINT) -> windows_core::BOOL);
    unsafe { DragQueryPoint(hdrop, ppt as _) }
}
#[inline]
pub unsafe fn DriveType(idrive: i32) -> i32 {
    windows_core::link!("shell32.dll" "system" fn DriveType(idrive : i32) -> i32);
    unsafe { DriveType(idrive) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn DuplicateIcon(hinst: Option<super::super::Foundation::HINSTANCE>, hicon: super::WindowsAndMessaging::HICON) -> super::WindowsAndMessaging::HICON {
    windows_core::link!("shell32.dll" "system" fn DuplicateIcon(hinst : super::super::Foundation:: HINSTANCE, hicon : super::WindowsAndMessaging:: HICON) -> super::WindowsAndMessaging:: HICON);
    unsafe { DuplicateIcon(hinst.unwrap_or(core::mem::zeroed()) as _, hicon) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ExtractAssociatedIconA(hinst: Option<super::super::Foundation::HINSTANCE>, psziconpath: &mut [u8; 128], piicon: *mut u16) -> super::WindowsAndMessaging::HICON {
    windows_core::link!("shell32.dll" "system" fn ExtractAssociatedIconA(hinst : super::super::Foundation:: HINSTANCE, psziconpath : windows_core::PSTR, piicon : *mut u16) -> super::WindowsAndMessaging:: HICON);
    unsafe { ExtractAssociatedIconA(hinst.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(psziconpath.as_ptr()), piicon as _) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ExtractAssociatedIconExA(hinst: Option<super::super::Foundation::HINSTANCE>, psziconpath: &mut [u8; 128], piiconindex: *mut u16, piiconid: *mut u16) -> super::WindowsAndMessaging::HICON {
    windows_core::link!("shell32.dll" "system" fn ExtractAssociatedIconExA(hinst : super::super::Foundation:: HINSTANCE, psziconpath : windows_core::PSTR, piiconindex : *mut u16, piiconid : *mut u16) -> super::WindowsAndMessaging:: HICON);
    unsafe { ExtractAssociatedIconExA(hinst.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(psziconpath.as_ptr()), piiconindex as _, piiconid as _) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ExtractAssociatedIconExW(hinst: Option<super::super::Foundation::HINSTANCE>, psziconpath: &mut [u16; 128], piiconindex: *mut u16, piiconid: *mut u16) -> super::WindowsAndMessaging::HICON {
    windows_core::link!("shell32.dll" "system" fn ExtractAssociatedIconExW(hinst : super::super::Foundation:: HINSTANCE, psziconpath : windows_core::PWSTR, piiconindex : *mut u16, piiconid : *mut u16) -> super::WindowsAndMessaging:: HICON);
    unsafe { ExtractAssociatedIconExW(hinst.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(psziconpath.as_ptr()), piiconindex as _, piiconid as _) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ExtractAssociatedIconW(hinst: Option<super::super::Foundation::HINSTANCE>, psziconpath: &mut [u16; 128], piicon: *mut u16) -> super::WindowsAndMessaging::HICON {
    windows_core::link!("shell32.dll" "system" fn ExtractAssociatedIconW(hinst : super::super::Foundation:: HINSTANCE, psziconpath : windows_core::PWSTR, piicon : *mut u16) -> super::WindowsAndMessaging:: HICON);
    unsafe { ExtractAssociatedIconW(hinst.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(psziconpath.as_ptr()), piicon as _) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ExtractIconA<P1>(hinst: Option<super::super::Foundation::HINSTANCE>, pszexefilename: P1, niconindex: u32) -> super::WindowsAndMessaging::HICON
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn ExtractIconA(hinst : super::super::Foundation:: HINSTANCE, pszexefilename : windows_core::PCSTR, niconindex : u32) -> super::WindowsAndMessaging:: HICON);
    unsafe { ExtractIconA(hinst.unwrap_or(core::mem::zeroed()) as _, pszexefilename.param().abi(), niconindex) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ExtractIconExA<P0>(lpszfile: P0, niconindex: i32, phiconlarge: Option<*mut super::WindowsAndMessaging::HICON>, phiconsmall: Option<*mut super::WindowsAndMessaging::HICON>, nicons: u32) -> u32
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn ExtractIconExA(lpszfile : windows_core::PCSTR, niconindex : i32, phiconlarge : *mut super::WindowsAndMessaging:: HICON, phiconsmall : *mut super::WindowsAndMessaging:: HICON, nicons : u32) -> u32);
    unsafe { ExtractIconExA(lpszfile.param().abi(), niconindex, phiconlarge.unwrap_or(core::mem::zeroed()) as _, phiconsmall.unwrap_or(core::mem::zeroed()) as _, nicons) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ExtractIconExW<P0>(lpszfile: P0, niconindex: i32, phiconlarge: Option<*mut super::WindowsAndMessaging::HICON>, phiconsmall: Option<*mut super::WindowsAndMessaging::HICON>, nicons: u32) -> u32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn ExtractIconExW(lpszfile : windows_core::PCWSTR, niconindex : i32, phiconlarge : *mut super::WindowsAndMessaging:: HICON, phiconsmall : *mut super::WindowsAndMessaging:: HICON, nicons : u32) -> u32);
    unsafe { ExtractIconExW(lpszfile.param().abi(), niconindex, phiconlarge.unwrap_or(core::mem::zeroed()) as _, phiconsmall.unwrap_or(core::mem::zeroed()) as _, nicons) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ExtractIconW<P1>(hinst: Option<super::super::Foundation::HINSTANCE>, pszexefilename: P1, niconindex: u32) -> super::WindowsAndMessaging::HICON
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn ExtractIconW(hinst : super::super::Foundation:: HINSTANCE, pszexefilename : windows_core::PCWSTR, niconindex : u32) -> super::WindowsAndMessaging:: HICON);
    unsafe { ExtractIconW(hinst.unwrap_or(core::mem::zeroed()) as _, pszexefilename.param().abi(), niconindex) }
}
#[inline]
pub unsafe fn FindExecutableA<P0, P1>(lpfile: P0, lpdirectory: P1, lpresult: &mut [u8; 260]) -> super::super::Foundation::HINSTANCE
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn FindExecutableA(lpfile : windows_core::PCSTR, lpdirectory : windows_core::PCSTR, lpresult : windows_core::PSTR) -> super::super::Foundation:: HINSTANCE);
    unsafe { FindExecutableA(lpfile.param().abi(), lpdirectory.param().abi(), core::mem::transmute(lpresult.as_ptr())) }
}
#[inline]
pub unsafe fn FindExecutableW<P0, P1>(lpfile: P0, lpdirectory: P1, lpresult: &mut [u16; 260]) -> super::super::Foundation::HINSTANCE
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn FindExecutableW(lpfile : windows_core::PCWSTR, lpdirectory : windows_core::PCWSTR, lpresult : windows_core::PWSTR) -> super::super::Foundation:: HINSTANCE);
    unsafe { FindExecutableW(lpfile.param().abi(), lpdirectory.param().abi(), core::mem::transmute(lpresult.as_ptr())) }
}
#[inline]
pub unsafe fn GetAcceptLanguagesA(pszlanguages: windows_core::PSTR, pcchlanguages: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn GetAcceptLanguagesA(pszlanguages : windows_core::PSTR, pcchlanguages : *mut u32) -> windows_core::HRESULT);
    unsafe { GetAcceptLanguagesA(core::mem::transmute(pszlanguages), pcchlanguages as _).ok() }
}
#[inline]
pub unsafe fn GetAcceptLanguagesW(pszlanguages: windows_core::PWSTR, pcchlanguages: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn GetAcceptLanguagesW(pszlanguages : windows_core::PWSTR, pcchlanguages : *mut u32) -> windows_core::HRESULT);
    unsafe { GetAcceptLanguagesW(core::mem::transmute(pszlanguages), pcchlanguages as _).ok() }
}
#[inline]
pub unsafe fn GetAllUsersProfileDirectoryA(lpprofiledir: Option<windows_core::PSTR>, lpcchsize: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn GetAllUsersProfileDirectoryA(lpprofiledir : windows_core::PSTR, lpcchsize : *mut u32) -> windows_core::BOOL);
    unsafe { GetAllUsersProfileDirectoryA(lpprofiledir.unwrap_or(core::mem::zeroed()) as _, lpcchsize as _).ok() }
}
#[inline]
pub unsafe fn GetAllUsersProfileDirectoryW(lpprofiledir: Option<windows_core::PWSTR>, lpcchsize: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn GetAllUsersProfileDirectoryW(lpprofiledir : windows_core::PWSTR, lpcchsize : *mut u32) -> windows_core::BOOL);
    unsafe { GetAllUsersProfileDirectoryW(lpprofiledir.unwrap_or(core::mem::zeroed()) as _, lpcchsize as _).ok() }
}
#[inline]
pub unsafe fn GetCurrentProcessExplicitAppUserModelID() -> windows_core::Result<windows_core::PWSTR> {
    windows_core::link!("shell32.dll" "system" fn GetCurrentProcessExplicitAppUserModelID(appid : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        GetCurrentProcessExplicitAppUserModelID(&mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn GetDefaultUserProfileDirectoryA(lpprofiledir: Option<windows_core::PSTR>, lpcchsize: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn GetDefaultUserProfileDirectoryA(lpprofiledir : windows_core::PSTR, lpcchsize : *mut u32) -> windows_core::BOOL);
    unsafe { GetDefaultUserProfileDirectoryA(lpprofiledir.unwrap_or(core::mem::zeroed()) as _, lpcchsize as _).ok() }
}
#[inline]
pub unsafe fn GetDefaultUserProfileDirectoryW(lpprofiledir: Option<windows_core::PWSTR>, lpcchsize: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn GetDefaultUserProfileDirectoryW(lpprofiledir : windows_core::PWSTR, lpcchsize : *mut u32) -> windows_core::BOOL);
    unsafe { GetDefaultUserProfileDirectoryW(lpprofiledir.unwrap_or(core::mem::zeroed()) as _, lpcchsize as _).ok() }
}
#[inline]
pub unsafe fn GetDpiForShellUIComponent(param0: SHELL_UI_COMPONENT) -> u32 {
    windows_core::link!("api-ms-win-shcore-scaling-l1-1-2.dll" "system" fn GetDpiForShellUIComponent(param0 : SHELL_UI_COMPONENT) -> u32);
    unsafe { GetDpiForShellUIComponent(param0) }
}
#[inline]
pub unsafe fn GetFileNameFromBrowse<P3, P4, P5, P6>(hwnd: Option<super::super::Foundation::HWND>, pszfilepath: &mut [u16], pszworkingdir: P3, pszdefext: P4, pszfilters: P5, psztitle: P6) -> windows_core::BOOL
where
    P3: windows_core::Param<windows_core::PCWSTR>,
    P4: windows_core::Param<windows_core::PCWSTR>,
    P5: windows_core::Param<windows_core::PCWSTR>,
    P6: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn GetFileNameFromBrowse(hwnd : super::super::Foundation:: HWND, pszfilepath : windows_core::PWSTR, cchfilepath : u32, pszworkingdir : windows_core::PCWSTR, pszdefext : windows_core::PCWSTR, pszfilters : windows_core::PCWSTR, psztitle : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { GetFileNameFromBrowse(hwnd.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszfilepath.as_ptr()), pszfilepath.len().try_into().unwrap(), pszworkingdir.param().abi(), pszdefext.param().abi(), pszfilters.param().abi(), psztitle.param().abi()) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn GetMenuContextHelpId(param0: super::WindowsAndMessaging::HMENU) -> u32 {
    windows_core::link!("user32.dll" "system" fn GetMenuContextHelpId(param0 : super::WindowsAndMessaging:: HMENU) -> u32);
    unsafe { GetMenuContextHelpId(param0) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn GetMenuPosFromID(hmenu: super::WindowsAndMessaging::HMENU, id: u32) -> i32 {
    windows_core::link!("shlwapi.dll" "system" fn GetMenuPosFromID(hmenu : super::WindowsAndMessaging:: HMENU, id : u32) -> i32);
    unsafe { GetMenuPosFromID(hmenu, id) }
}
#[inline]
pub unsafe fn GetProfileType(dwflags: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn GetProfileType(dwflags : *mut u32) -> windows_core::BOOL);
    unsafe { GetProfileType(dwflags as _).ok() }
}
#[inline]
pub unsafe fn GetProfilesDirectoryA(lpprofiledir: Option<windows_core::PSTR>, lpcchsize: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn GetProfilesDirectoryA(lpprofiledir : windows_core::PSTR, lpcchsize : *mut u32) -> windows_core::BOOL);
    unsafe { GetProfilesDirectoryA(lpprofiledir.unwrap_or(core::mem::zeroed()) as _, lpcchsize as _).ok() }
}
#[inline]
pub unsafe fn GetProfilesDirectoryW(lpprofiledir: Option<windows_core::PWSTR>, lpcchsize: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn GetProfilesDirectoryW(lpprofiledir : windows_core::PWSTR, lpcchsize : *mut u32) -> windows_core::BOOL);
    unsafe { GetProfilesDirectoryW(lpprofiledir.unwrap_or(core::mem::zeroed()) as _, lpcchsize as _).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn GetScaleFactorForDevice(devicetype: DISPLAY_DEVICE_TYPE) -> Common::DEVICE_SCALE_FACTOR {
    windows_core::link!("api-ms-win-shcore-scaling-l1-1-0.dll" "system" fn GetScaleFactorForDevice(devicetype : DISPLAY_DEVICE_TYPE) -> Common:: DEVICE_SCALE_FACTOR);
    unsafe { GetScaleFactorForDevice(devicetype) }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn GetScaleFactorForMonitor(hmon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<Common::DEVICE_SCALE_FACTOR> {
    windows_core::link!("api-ms-win-shcore-scaling-l1-1-1.dll" "system" fn GetScaleFactorForMonitor(hmon : super::super::Graphics::Gdi:: HMONITOR, pscale : *mut Common:: DEVICE_SCALE_FACTOR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        GetScaleFactorForMonitor(hmon, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn GetUserProfileDirectoryA(htoken: super::super::Foundation::HANDLE, lpprofiledir: Option<windows_core::PSTR>, lpcchsize: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn GetUserProfileDirectoryA(htoken : super::super::Foundation:: HANDLE, lpprofiledir : windows_core::PSTR, lpcchsize : *mut u32) -> windows_core::BOOL);
    unsafe { GetUserProfileDirectoryA(htoken, lpprofiledir.unwrap_or(core::mem::zeroed()) as _, lpcchsize as _).ok() }
}
#[inline]
pub unsafe fn GetUserProfileDirectoryW(htoken: super::super::Foundation::HANDLE, lpprofiledir: Option<windows_core::PWSTR>, lpcchsize: *mut u32) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn GetUserProfileDirectoryW(htoken : super::super::Foundation:: HANDLE, lpprofiledir : windows_core::PWSTR, lpcchsize : *mut u32) -> windows_core::BOOL);
    unsafe { GetUserProfileDirectoryW(htoken, lpprofiledir.unwrap_or(core::mem::zeroed()) as _, lpcchsize as _).ok() }
}
#[inline]
pub unsafe fn GetWindowContextHelpId(param0: super::super::Foundation::HWND) -> u32 {
    windows_core::link!("user32.dll" "system" fn GetWindowContextHelpId(param0 : super::super::Foundation:: HWND) -> u32);
    unsafe { GetWindowContextHelpId(param0) }
}
#[inline]
pub unsafe fn GetWindowSubclass(hwnd: super::super::Foundation::HWND, pfnsubclass: SUBCLASSPROC, uidsubclass: usize, pdwrefdata: Option<*mut usize>) -> windows_core::BOOL {
    windows_core::link!("comctl32.dll" "system" fn GetWindowSubclass(hwnd : super::super::Foundation:: HWND, pfnsubclass : SUBCLASSPROC, uidsubclass : usize, pdwrefdata : *mut usize) -> windows_core::BOOL);
    unsafe { GetWindowSubclass(hwnd, pfnsubclass, uidsubclass, pdwrefdata.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn HMONITOR_UserFree(param0: *const u32, param1: *const super::super::Graphics::Gdi::HMONITOR) {
    windows_core::link!("ole32.dll" "system" fn HMONITOR_UserFree(param0 : *const u32, param1 : *const super::super::Graphics::Gdi:: HMONITOR));
    unsafe { HMONITOR_UserFree(param0, param1) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn HMONITOR_UserFree64(param0: *const u32, param1: *const super::super::Graphics::Gdi::HMONITOR) {
    windows_core::link!("ole32.dll" "system" fn HMONITOR_UserFree64(param0 : *const u32, param1 : *const super::super::Graphics::Gdi:: HMONITOR));
    unsafe { HMONITOR_UserFree64(param0, param1) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn HMONITOR_UserMarshal(param0: *const u32, param1: *mut u8, param2: *const super::super::Graphics::Gdi::HMONITOR) -> *mut u8 {
    windows_core::link!("ole32.dll" "system" fn HMONITOR_UserMarshal(param0 : *const u32, param1 : *mut u8, param2 : *const super::super::Graphics::Gdi:: HMONITOR) -> *mut u8);
    unsafe { HMONITOR_UserMarshal(param0, param1 as _, param2) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn HMONITOR_UserMarshal64(param0: *const u32, param1: *mut u8, param2: *const super::super::Graphics::Gdi::HMONITOR) -> *mut u8 {
    windows_core::link!("ole32.dll" "system" fn HMONITOR_UserMarshal64(param0 : *const u32, param1 : *mut u8, param2 : *const super::super::Graphics::Gdi:: HMONITOR) -> *mut u8);
    unsafe { HMONITOR_UserMarshal64(param0, param1 as _, param2) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn HMONITOR_UserSize(param0: *const u32, param1: u32, param2: *const super::super::Graphics::Gdi::HMONITOR) -> u32 {
    windows_core::link!("ole32.dll" "system" fn HMONITOR_UserSize(param0 : *const u32, param1 : u32, param2 : *const super::super::Graphics::Gdi:: HMONITOR) -> u32);
    unsafe { HMONITOR_UserSize(param0, param1, param2) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn HMONITOR_UserSize64(param0: *const u32, param1: u32, param2: *const super::super::Graphics::Gdi::HMONITOR) -> u32 {
    windows_core::link!("ole32.dll" "system" fn HMONITOR_UserSize64(param0 : *const u32, param1 : u32, param2 : *const super::super::Graphics::Gdi:: HMONITOR) -> u32);
    unsafe { HMONITOR_UserSize64(param0, param1, param2) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn HMONITOR_UserUnmarshal(param0: *const u32, param1: *const u8, param2: *mut super::super::Graphics::Gdi::HMONITOR) -> *mut u8 {
    windows_core::link!("ole32.dll" "system" fn HMONITOR_UserUnmarshal(param0 : *const u32, param1 : *const u8, param2 : *mut super::super::Graphics::Gdi:: HMONITOR) -> *mut u8);
    unsafe { HMONITOR_UserUnmarshal(param0, param1, param2 as _) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn HMONITOR_UserUnmarshal64(param0: *const u32, param1: *const u8, param2: *mut super::super::Graphics::Gdi::HMONITOR) -> *mut u8 {
    windows_core::link!("ole32.dll" "system" fn HMONITOR_UserUnmarshal64(param0 : *const u32, param1 : *const u8, param2 : *mut super::super::Graphics::Gdi:: HMONITOR) -> *mut u8);
    unsafe { HMONITOR_UserUnmarshal64(param0, param1, param2 as _) }
}
#[inline]
pub unsafe fn HashData(pbdata: &[u8], pbhash: &mut [u8]) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn HashData(pbdata : *const u8, cbdata : u32, pbhash : *mut u8, cbhash : u32) -> windows_core::HRESULT);
    unsafe { HashData(core::mem::transmute(pbdata.as_ptr()), pbdata.len().try_into().unwrap(), core::mem::transmute(pbhash.as_ptr()), pbhash.len().try_into().unwrap()).ok() }
}
#[inline]
pub unsafe fn HlinkClone<P0, P2, T>(pihl: P0, pihlsiteforclone: P2, dwsitedata: u32) -> windows_core::Result<T>
where
    P0: windows_core::Param<IHlink>,
    P2: windows_core::Param<IHlinkSite>,
    T: windows_core::Interface,
{
    windows_core::link!("hlink.dll" "system" fn HlinkClone(pihl : * mut core::ffi::c_void, riid : *const windows_core::GUID, pihlsiteforclone : * mut core::ffi::c_void, dwsitedata : u32, ppvobj : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { HlinkClone(pihl.param().abi(), &T::IID, pihlsiteforclone.param().abi(), dwsitedata, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn HlinkCreateBrowseContext<P0, T>(piunkouter: P0) -> windows_core::Result<T>
where
    P0: windows_core::Param<windows_core::IUnknown>,
    T: windows_core::Interface,
{
    windows_core::link!("hlink.dll" "system" fn HlinkCreateBrowseContext(piunkouter : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppvobj : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { HlinkCreateBrowseContext(piunkouter.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn HlinkCreateExtensionServices<P0, P2, P3, P4, T>(pwzadditionalheaders: P0, phwnd: super::super::Foundation::HWND, pszusername: P2, pszpassword: P3, piunkouter: P4) -> windows_core::Result<T>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
    P4: windows_core::Param<windows_core::IUnknown>,
    T: windows_core::Interface,
{
    windows_core::link!("hlink.dll" "system" fn HlinkCreateExtensionServices(pwzadditionalheaders : windows_core::PCWSTR, phwnd : super::super::Foundation:: HWND, pszusername : windows_core::PCWSTR, pszpassword : windows_core::PCWSTR, piunkouter : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppvobj : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { HlinkCreateExtensionServices(pwzadditionalheaders.param().abi(), phwnd, pszusername.param().abi(), pszpassword.param().abi(), piunkouter.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkCreateFromData<P0, P1, P3, T>(pidataobj: P0, pihlsite: P1, dwsitedata: u32, piunkouter: P3) -> windows_core::Result<T>
where
    P0: windows_core::Param<super::super::System::Com::IDataObject>,
    P1: windows_core::Param<IHlinkSite>,
    P3: windows_core::Param<windows_core::IUnknown>,
    T: windows_core::Interface,
{
    windows_core::link!("hlink.dll" "system" fn HlinkCreateFromData(pidataobj : * mut core::ffi::c_void, pihlsite : * mut core::ffi::c_void, dwsitedata : u32, piunkouter : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppvobj : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { HlinkCreateFromData(pidataobj.param().abi(), pihlsite.param().abi(), dwsitedata, piunkouter.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkCreateFromMoniker<P0, P1, P2, P3, P5, T>(pimktrgt: P0, pwzlocation: P1, pwzfriendlyname: P2, pihlsite: P3, dwsitedata: u32, piunkouter: P5) -> windows_core::Result<T>
where
    P0: windows_core::Param<super::super::System::Com::IMoniker>,
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<IHlinkSite>,
    P5: windows_core::Param<windows_core::IUnknown>,
    T: windows_core::Interface,
{
    windows_core::link!("hlink.dll" "system" fn HlinkCreateFromMoniker(pimktrgt : * mut core::ffi::c_void, pwzlocation : windows_core::PCWSTR, pwzfriendlyname : windows_core::PCWSTR, pihlsite : * mut core::ffi::c_void, dwsitedata : u32, piunkouter : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppvobj : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { HlinkCreateFromMoniker(pimktrgt.param().abi(), pwzlocation.param().abi(), pwzfriendlyname.param().abi(), pihlsite.param().abi(), dwsitedata, piunkouter.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn HlinkCreateFromString<P0, P1, P2, P3, P5, T>(pwztarget: P0, pwzlocation: P1, pwzfriendlyname: P2, pihlsite: P3, dwsitedata: u32, piunkouter: P5) -> windows_core::Result<T>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<IHlinkSite>,
    P5: windows_core::Param<windows_core::IUnknown>,
    T: windows_core::Interface,
{
    windows_core::link!("hlink.dll" "system" fn HlinkCreateFromString(pwztarget : windows_core::PCWSTR, pwzlocation : windows_core::PCWSTR, pwzfriendlyname : windows_core::PCWSTR, pihlsite : * mut core::ffi::c_void, dwsitedata : u32, piunkouter : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppvobj : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { HlinkCreateFromString(pwztarget.param().abi(), pwzlocation.param().abi(), pwzfriendlyname.param().abi(), pihlsite.param().abi(), dwsitedata, piunkouter.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn HlinkCreateShortcut<P1, P2, P3>(grfhlshortcutf: u32, pihl: P1, pwzdir: P2, pwzfilename: P3, ppwzshortcutfile: *mut windows_core::PWSTR, dwreserved: u32) -> windows_core::Result<()>
where
    P1: windows_core::Param<IHlink>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkCreateShortcut(grfhlshortcutf : u32, pihl : * mut core::ffi::c_void, pwzdir : windows_core::PCWSTR, pwzfilename : windows_core::PCWSTR, ppwzshortcutfile : *mut windows_core::PWSTR, dwreserved : u32) -> windows_core::HRESULT);
    unsafe { HlinkCreateShortcut(grfhlshortcutf, pihl.param().abi(), pwzdir.param().abi(), pwzfilename.param().abi(), ppwzshortcutfile as _, dwreserved).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkCreateShortcutFromMoniker<P1, P2, P3, P4>(grfhlshortcutf: u32, pimktarget: P1, pwzlocation: P2, pwzdir: P3, pwzfilename: P4, ppwzshortcutfile: *mut windows_core::PWSTR, dwreserved: u32) -> windows_core::Result<()>
where
    P1: windows_core::Param<super::super::System::Com::IMoniker>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
    P4: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkCreateShortcutFromMoniker(grfhlshortcutf : u32, pimktarget : * mut core::ffi::c_void, pwzlocation : windows_core::PCWSTR, pwzdir : windows_core::PCWSTR, pwzfilename : windows_core::PCWSTR, ppwzshortcutfile : *mut windows_core::PWSTR, dwreserved : u32) -> windows_core::HRESULT);
    unsafe { HlinkCreateShortcutFromMoniker(grfhlshortcutf, pimktarget.param().abi(), pwzlocation.param().abi(), pwzdir.param().abi(), pwzfilename.param().abi(), ppwzshortcutfile as _, dwreserved).ok() }
}
#[inline]
pub unsafe fn HlinkCreateShortcutFromString<P1, P2, P3, P4>(grfhlshortcutf: u32, pwztarget: P1, pwzlocation: P2, pwzdir: P3, pwzfilename: P4, ppwzshortcutfile: *mut windows_core::PWSTR, dwreserved: u32) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
    P4: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkCreateShortcutFromString(grfhlshortcutf : u32, pwztarget : windows_core::PCWSTR, pwzlocation : windows_core::PCWSTR, pwzdir : windows_core::PCWSTR, pwzfilename : windows_core::PCWSTR, ppwzshortcutfile : *mut windows_core::PWSTR, dwreserved : u32) -> windows_core::HRESULT);
    unsafe { HlinkCreateShortcutFromString(grfhlshortcutf, pwztarget.param().abi(), pwzlocation.param().abi(), pwzdir.param().abi(), pwzfilename.param().abi(), ppwzshortcutfile as _, dwreserved).ok() }
}
#[inline]
pub unsafe fn HlinkGetSpecialReference(ureference: u32) -> windows_core::Result<windows_core::PWSTR> {
    windows_core::link!("hlink.dll" "system" fn HlinkGetSpecialReference(ureference : u32, ppwzreference : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        HlinkGetSpecialReference(ureference, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn HlinkGetValueFromParams<P0, P1>(pwzparams: P0, pwzname: P1) -> windows_core::Result<windows_core::PWSTR>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkGetValueFromParams(pwzparams : windows_core::PCWSTR, pwzname : windows_core::PCWSTR, ppwzvalue : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        HlinkGetValueFromParams(pwzparams.param().abi(), pwzname.param().abi(), &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn HlinkIsShortcut<P0>(pwzfilename: P0) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkIsShortcut(pwzfilename : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { HlinkIsShortcut(pwzfilename.param().abi()).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkNavigate<P0, P1, P3, P4, P5>(pihl: P0, pihlframe: P1, grfhlnf: u32, pbc: P3, pibsc: P4, pihlbc: P5) -> windows_core::Result<()>
where
    P0: windows_core::Param<IHlink>,
    P1: windows_core::Param<IHlinkFrame>,
    P3: windows_core::Param<super::super::System::Com::IBindCtx>,
    P4: windows_core::Param<super::super::System::Com::IBindStatusCallback>,
    P5: windows_core::Param<IHlinkBrowseContext>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkNavigate(pihl : * mut core::ffi::c_void, pihlframe : * mut core::ffi::c_void, grfhlnf : u32, pbc : * mut core::ffi::c_void, pibsc : * mut core::ffi::c_void, pihlbc : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { HlinkNavigate(pihl.param().abi(), pihlframe.param().abi(), grfhlnf, pbc.param().abi(), pibsc.param().abi(), pihlbc.param().abi()).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkNavigateToStringReference<P0, P1, P2, P4, P6, P7, P8>(pwztarget: P0, pwzlocation: P1, pihlsite: P2, dwsitedata: u32, pihlframe: P4, grfhlnf: u32, pibc: P6, pibsc: P7, pihlbc: P8) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<IHlinkSite>,
    P4: windows_core::Param<IHlinkFrame>,
    P6: windows_core::Param<super::super::System::Com::IBindCtx>,
    P7: windows_core::Param<super::super::System::Com::IBindStatusCallback>,
    P8: windows_core::Param<IHlinkBrowseContext>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkNavigateToStringReference(pwztarget : windows_core::PCWSTR, pwzlocation : windows_core::PCWSTR, pihlsite : * mut core::ffi::c_void, dwsitedata : u32, pihlframe : * mut core::ffi::c_void, grfhlnf : u32, pibc : * mut core::ffi::c_void, pibsc : * mut core::ffi::c_void, pihlbc : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { HlinkNavigateToStringReference(pwztarget.param().abi(), pwzlocation.param().abi(), pihlsite.param().abi(), dwsitedata, pihlframe.param().abi(), grfhlnf, pibc.param().abi(), pibsc.param().abi(), pihlbc.param().abi()).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkOnNavigate<P0, P1, P3, P4, P5>(pihlframe: P0, pihlbc: P1, grfhlnf: u32, pimktarget: P3, pwzlocation: P4, pwzfriendlyname: P5, puhlid: *mut u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<IHlinkFrame>,
    P1: windows_core::Param<IHlinkBrowseContext>,
    P3: windows_core::Param<super::super::System::Com::IMoniker>,
    P4: windows_core::Param<windows_core::PCWSTR>,
    P5: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkOnNavigate(pihlframe : * mut core::ffi::c_void, pihlbc : * mut core::ffi::c_void, grfhlnf : u32, pimktarget : * mut core::ffi::c_void, pwzlocation : windows_core::PCWSTR, pwzfriendlyname : windows_core::PCWSTR, puhlid : *mut u32) -> windows_core::HRESULT);
    unsafe { HlinkOnNavigate(pihlframe.param().abi(), pihlbc.param().abi(), grfhlnf, pimktarget.param().abi(), pwzlocation.param().abi(), pwzfriendlyname.param().abi(), puhlid as _).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkOnRenameDocument<P1, P2, P3>(dwreserved: u32, pihlbc: P1, pimkold: P2, pimknew: P3) -> windows_core::Result<()>
where
    P1: windows_core::Param<IHlinkBrowseContext>,
    P2: windows_core::Param<super::super::System::Com::IMoniker>,
    P3: windows_core::Param<super::super::System::Com::IMoniker>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkOnRenameDocument(dwreserved : u32, pihlbc : * mut core::ffi::c_void, pimkold : * mut core::ffi::c_void, pimknew : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { HlinkOnRenameDocument(dwreserved, pihlbc.param().abi(), pimkold.param().abi(), pimknew.param().abi()).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkParseDisplayName<P0, P1>(pibc: P0, pwzdisplayname: P1, fnoforceabs: bool, pccheaten: *mut u32, ppimk: *mut Option<super::super::System::Com::IMoniker>) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IBindCtx>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkParseDisplayName(pibc : * mut core::ffi::c_void, pwzdisplayname : windows_core::PCWSTR, fnoforceabs : windows_core::BOOL, pccheaten : *mut u32, ppimk : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { HlinkParseDisplayName(pibc.param().abi(), pwzdisplayname.param().abi(), fnoforceabs.into(), pccheaten as _, core::mem::transmute(ppimk)).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkPreprocessMoniker<P0, P1>(pibc: P0, pimkin: P1) -> windows_core::Result<super::super::System::Com::IMoniker>
where
    P0: windows_core::Param<super::super::System::Com::IBindCtx>,
    P1: windows_core::Param<super::super::System::Com::IMoniker>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkPreprocessMoniker(pibc : * mut core::ffi::c_void, pimkin : * mut core::ffi::c_void, ppimkout : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        HlinkPreprocessMoniker(pibc.param().abi(), pimkin.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkQueryCreateFromData<P0>(pidataobj: P0) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IDataObject>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkQueryCreateFromData(pidataobj : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { HlinkQueryCreateFromData(pidataobj.param().abi()).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkResolveMonikerForData<P0, P2, P5, P6>(pimkreference: P0, reserved: u32, pibc: P2, cfmtetc: u32, rgfmtetc: *mut super::super::System::Com::FORMATETC, pibsc: P5, pimkbase: P6) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IMoniker>,
    P2: windows_core::Param<super::super::System::Com::IBindCtx>,
    P5: windows_core::Param<super::super::System::Com::IBindStatusCallback>,
    P6: windows_core::Param<super::super::System::Com::IMoniker>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkResolveMonikerForData(pimkreference : * mut core::ffi::c_void, reserved : u32, pibc : * mut core::ffi::c_void, cfmtetc : u32, rgfmtetc : *mut super::super::System::Com:: FORMATETC, pibsc : * mut core::ffi::c_void, pimkbase : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { HlinkResolveMonikerForData(pimkreference.param().abi(), reserved, pibc.param().abi(), cfmtetc, rgfmtetc as _, pibsc.param().abi(), pimkbase.param().abi()).ok() }
}
#[inline]
pub unsafe fn HlinkResolveShortcut<P0, P1, P3>(pwzshortcutfilename: P0, pihlsite: P1, dwsitedata: u32, piunkouter: P3, riid: *const windows_core::GUID, ppvobj: *mut *mut core::ffi::c_void) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<IHlinkSite>,
    P3: windows_core::Param<windows_core::IUnknown>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkResolveShortcut(pwzshortcutfilename : windows_core::PCWSTR, pihlsite : * mut core::ffi::c_void, dwsitedata : u32, piunkouter : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppvobj : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { HlinkResolveShortcut(pwzshortcutfilename.param().abi(), pihlsite.param().abi(), dwsitedata, piunkouter.param().abi(), riid, ppvobj as _).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkResolveShortcutToMoniker<P0>(pwzshortcutfilename: P0, ppimktarget: *mut Option<super::super::System::Com::IMoniker>, ppwzlocation: *mut windows_core::PWSTR) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkResolveShortcutToMoniker(pwzshortcutfilename : windows_core::PCWSTR, ppimktarget : *mut * mut core::ffi::c_void, ppwzlocation : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe { HlinkResolveShortcutToMoniker(pwzshortcutfilename.param().abi(), core::mem::transmute(ppimktarget), ppwzlocation as _).ok() }
}
#[inline]
pub unsafe fn HlinkResolveShortcutToString<P0>(pwzshortcutfilename: P0, ppwztarget: *mut windows_core::PWSTR, ppwzlocation: *mut windows_core::PWSTR) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkResolveShortcutToString(pwzshortcutfilename : windows_core::PCWSTR, ppwztarget : *mut windows_core::PWSTR, ppwzlocation : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe { HlinkResolveShortcutToString(pwzshortcutfilename.param().abi(), ppwztarget as _, ppwzlocation as _).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkResolveStringForData<P0, P2, P5, P6>(pwzreference: P0, reserved: u32, pibc: P2, cfmtetc: u32, rgfmtetc: *mut super::super::System::Com::FORMATETC, pibsc: P5, pimkbase: P6) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<super::super::System::Com::IBindCtx>,
    P5: windows_core::Param<super::super::System::Com::IBindStatusCallback>,
    P6: windows_core::Param<super::super::System::Com::IMoniker>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkResolveStringForData(pwzreference : windows_core::PCWSTR, reserved : u32, pibc : * mut core::ffi::c_void, cfmtetc : u32, rgfmtetc : *mut super::super::System::Com:: FORMATETC, pibsc : * mut core::ffi::c_void, pimkbase : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { HlinkResolveStringForData(pwzreference.param().abi(), reserved, pibc.param().abi(), cfmtetc, rgfmtetc as _, pibsc.param().abi(), pimkbase.param().abi()).ok() }
}
#[inline]
pub unsafe fn HlinkSetSpecialReference<P1>(ureference: u32, pwzreference: P1) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkSetSpecialReference(ureference : u32, pwzreference : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { HlinkSetSpecialReference(ureference, pwzreference.param().abi()).ok() }
}
#[inline]
pub unsafe fn HlinkTranslateURL<P0>(pwzurl: P0, grfflags: u32) -> windows_core::Result<windows_core::PWSTR>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkTranslateURL(pwzurl : windows_core::PCWSTR, grfflags : u32, ppwztranslatedurl : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        HlinkTranslateURL(pwzurl.param().abi(), grfflags, &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn HlinkUpdateStackItem<P0, P1, P3, P4, P5>(pihlframe: P0, pihlbc: P1, uhlid: u32, pimktrgt: P3, pwzlocation: P4, pwzfriendlyname: P5) -> windows_core::Result<()>
where
    P0: windows_core::Param<IHlinkFrame>,
    P1: windows_core::Param<IHlinkBrowseContext>,
    P3: windows_core::Param<super::super::System::Com::IMoniker>,
    P4: windows_core::Param<windows_core::PCWSTR>,
    P5: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("hlink.dll" "system" fn HlinkUpdateStackItem(pihlframe : * mut core::ffi::c_void, pihlbc : * mut core::ffi::c_void, uhlid : u32, pimktrgt : * mut core::ffi::c_void, pwzlocation : windows_core::PCWSTR, pwzfriendlyname : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { HlinkUpdateStackItem(pihlframe.param().abi(), pihlbc.param().abi(), uhlid, pimktrgt.param().abi(), pwzlocation.param().abi(), pwzfriendlyname.param().abi()).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILAppendID(pidl: Option<*const Common::ITEMIDLIST>, pmkid: *const Common::SHITEMID, fappend: bool) -> *mut Common::ITEMIDLIST {
    windows_core::link!("shell32.dll" "system" fn ILAppendID(pidl : *const Common:: ITEMIDLIST, pmkid : *const Common:: SHITEMID, fappend : windows_core::BOOL) -> *mut Common:: ITEMIDLIST);
    unsafe { ILAppendID(pidl.unwrap_or(core::mem::zeroed()) as _, pmkid, fappend.into()) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILClone(pidl: *const Common::ITEMIDLIST) -> *mut Common::ITEMIDLIST {
    windows_core::link!("shell32.dll" "system" fn ILClone(pidl : *const Common:: ITEMIDLIST) -> *mut Common:: ITEMIDLIST);
    unsafe { ILClone(pidl) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILCloneFirst(pidl: *const Common::ITEMIDLIST) -> *mut Common::ITEMIDLIST {
    windows_core::link!("shell32.dll" "system" fn ILCloneFirst(pidl : *const Common:: ITEMIDLIST) -> *mut Common:: ITEMIDLIST);
    unsafe { ILCloneFirst(pidl) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILCombine(pidl1: Option<*const Common::ITEMIDLIST>, pidl2: Option<*const Common::ITEMIDLIST>) -> *mut Common::ITEMIDLIST {
    windows_core::link!("shell32.dll" "system" fn ILCombine(pidl1 : *const Common:: ITEMIDLIST, pidl2 : *const Common:: ITEMIDLIST) -> *mut Common:: ITEMIDLIST);
    unsafe { ILCombine(pidl1.unwrap_or(core::mem::zeroed()) as _, pidl2.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILCreateFromPathA<P0>(pszpath: P0) -> *mut Common::ITEMIDLIST
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn ILCreateFromPathA(pszpath : windows_core::PCSTR) -> *mut Common:: ITEMIDLIST);
    unsafe { ILCreateFromPathA(pszpath.param().abi()) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILCreateFromPathW<P0>(pszpath: P0) -> *mut Common::ITEMIDLIST
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn ILCreateFromPathW(pszpath : windows_core::PCWSTR) -> *mut Common:: ITEMIDLIST);
    unsafe { ILCreateFromPathW(pszpath.param().abi()) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILFindChild(pidlparent: *const Common::ITEMIDLIST, pidlchild: *const Common::ITEMIDLIST) -> *mut Common::ITEMIDLIST {
    windows_core::link!("shell32.dll" "system" fn ILFindChild(pidlparent : *const Common:: ITEMIDLIST, pidlchild : *const Common:: ITEMIDLIST) -> *mut Common:: ITEMIDLIST);
    unsafe { ILFindChild(pidlparent, pidlchild) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILFindLastID(pidl: *const Common::ITEMIDLIST) -> *mut Common::ITEMIDLIST {
    windows_core::link!("shell32.dll" "system" fn ILFindLastID(pidl : *const Common:: ITEMIDLIST) -> *mut Common:: ITEMIDLIST);
    unsafe { ILFindLastID(pidl) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILFree(pidl: Option<*const Common::ITEMIDLIST>) {
    windows_core::link!("shell32.dll" "system" fn ILFree(pidl : *const Common:: ITEMIDLIST));
    unsafe { ILFree(pidl.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILGetNext(pidl: Option<*const Common::ITEMIDLIST>) -> *mut Common::ITEMIDLIST {
    windows_core::link!("shell32.dll" "system" fn ILGetNext(pidl : *const Common:: ITEMIDLIST) -> *mut Common:: ITEMIDLIST);
    unsafe { ILGetNext(pidl.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILGetSize(pidl: Option<*const Common::ITEMIDLIST>) -> u32 {
    windows_core::link!("shell32.dll" "system" fn ILGetSize(pidl : *const Common:: ITEMIDLIST) -> u32);
    unsafe { ILGetSize(pidl.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILIsEqual(pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn ILIsEqual(pidl1 : *const Common:: ITEMIDLIST, pidl2 : *const Common:: ITEMIDLIST) -> windows_core::BOOL);
    unsafe { ILIsEqual(pidl1, pidl2) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILIsParent(pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST, fimmediate: bool) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn ILIsParent(pidl1 : *const Common:: ITEMIDLIST, pidl2 : *const Common:: ITEMIDLIST, fimmediate : windows_core::BOOL) -> windows_core::BOOL);
    unsafe { ILIsParent(pidl1, pidl2, fimmediate.into()) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn ILLoadFromStreamEx<P0>(pstm: P0) -> windows_core::Result<*mut Common::ITEMIDLIST>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shell32.dll" "system" fn ILLoadFromStreamEx(pstm : * mut core::ffi::c_void, pidl : *mut *mut Common:: ITEMIDLIST) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        ILLoadFromStreamEx(pstm.param().abi(), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn ILRemoveLastID(pidl: Option<*mut Common::ITEMIDLIST>) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn ILRemoveLastID(pidl : *mut Common:: ITEMIDLIST) -> windows_core::BOOL);
    unsafe { ILRemoveLastID(pidl.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn ILSaveToStream<P0>(pstm: P0, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shell32.dll" "system" fn ILSaveToStream(pstm : * mut core::ffi::c_void, pidl : *const Common:: ITEMIDLIST) -> windows_core::HRESULT);
    unsafe { ILSaveToStream(pstm.param().abi(), pidl).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn IStream_Copy<P0, P1>(pstmfrom: P0, pstmto: P1, cb: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
    P1: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shlwapi.dll" "system" fn IStream_Copy(pstmfrom : * mut core::ffi::c_void, pstmto : * mut core::ffi::c_void, cb : u32) -> windows_core::HRESULT);
    unsafe { IStream_Copy(pstmfrom.param().abi(), pstmto.param().abi(), cb).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn IStream_Read<P0>(pstm: P0, pv: *mut core::ffi::c_void, cb: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shlwapi.dll" "system" fn IStream_Read(pstm : * mut core::ffi::c_void, pv : *mut core::ffi::c_void, cb : u32) -> windows_core::HRESULT);
    unsafe { IStream_Read(pstm.param().abi(), pv as _, cb).ok() }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn IStream_ReadPidl<P0>(pstm: P0) -> windows_core::Result<*mut Common::ITEMIDLIST>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shlwapi.dll" "system" fn IStream_ReadPidl(pstm : * mut core::ffi::c_void, ppidlout : *mut *mut Common:: ITEMIDLIST) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        IStream_ReadPidl(pstm.param().abi(), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn IStream_ReadStr<P0>(pstm: P0) -> windows_core::Result<windows_core::PWSTR>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shlwapi.dll" "system" fn IStream_ReadStr(pstm : * mut core::ffi::c_void, ppsz : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        IStream_ReadStr(pstm.param().abi(), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn IStream_Reset<P0>(pstm: P0) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shlwapi.dll" "system" fn IStream_Reset(pstm : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { IStream_Reset(pstm.param().abi()).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn IStream_Size<P0>(pstm: P0) -> windows_core::Result<u64>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shlwapi.dll" "system" fn IStream_Size(pstm : * mut core::ffi::c_void, pui : *mut u64) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        IStream_Size(pstm.param().abi(), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn IStream_Write<P0>(pstm: P0, pv: *const core::ffi::c_void, cb: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shlwapi.dll" "system" fn IStream_Write(pstm : * mut core::ffi::c_void, pv : *const core::ffi::c_void, cb : u32) -> windows_core::HRESULT);
    unsafe { IStream_Write(pstm.param().abi(), pv, cb).ok() }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn IStream_WritePidl<P0>(pstm: P0, pidlwrite: *const Common::ITEMIDLIST) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shlwapi.dll" "system" fn IStream_WritePidl(pstm : * mut core::ffi::c_void, pidlwrite : *const Common:: ITEMIDLIST) -> windows_core::HRESULT);
    unsafe { IStream_WritePidl(pstm.param().abi(), pidlwrite).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn IStream_WriteStr<P0, P1>(pstm: P0, psz: P1) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IStream>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn IStream_WriteStr(pstm : * mut core::ffi::c_void, psz : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { IStream_WriteStr(pstm.param().abi(), psz.param().abi()).ok() }
}
#[inline]
pub unsafe fn IUnknown_AtomicRelease(ppunk: Option<*mut *mut core::ffi::c_void>) {
    windows_core::link!("shlwapi.dll" "system" fn IUnknown_AtomicRelease(ppunk : *mut *mut core::ffi::c_void));
    unsafe { IUnknown_AtomicRelease(ppunk.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn IUnknown_GetSite<P0, T>(punk: P0) -> windows_core::Result<T>
where
    P0: windows_core::Param<windows_core::IUnknown>,
    T: windows_core::Interface,
{
    windows_core::link!("shlwapi.dll" "system" fn IUnknown_GetSite(punk : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { IUnknown_GetSite(punk.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn IUnknown_GetWindow<P0>(punk: P0) -> windows_core::Result<super::super::Foundation::HWND>
where
    P0: windows_core::Param<windows_core::IUnknown>,
{
    windows_core::link!("shlwapi.dll" "system" fn IUnknown_GetWindow(punk : * mut core::ffi::c_void, phwnd : *mut super::super::Foundation:: HWND) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        IUnknown_GetWindow(punk.param().abi(), &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn IUnknown_QueryService<P0, T>(punk: P0, guidservice: *const windows_core::GUID) -> windows_core::Result<T>
where
    P0: windows_core::Param<windows_core::IUnknown>,
    T: windows_core::Interface,
{
    windows_core::link!("shlwapi.dll" "system" fn IUnknown_QueryService(punk : * mut core::ffi::c_void, guidservice : *const windows_core::GUID, riid : *const windows_core::GUID, ppvout : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { IUnknown_QueryService(punk.param().abi(), guidservice, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn IUnknown_Set<P1>(ppunk: *mut Option<windows_core::IUnknown>, punk: P1)
where
    P1: windows_core::Param<windows_core::IUnknown>,
{
    windows_core::link!("shlwapi.dll" "system" fn IUnknown_Set(ppunk : *mut * mut core::ffi::c_void, punk : * mut core::ffi::c_void));
    unsafe { IUnknown_Set(core::mem::transmute(ppunk), punk.param().abi()) }
}
#[inline]
pub unsafe fn IUnknown_SetSite<P0, P1>(punk: P0, punksite: P1) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::IUnknown>,
    P1: windows_core::Param<windows_core::IUnknown>,
{
    windows_core::link!("shlwapi.dll" "system" fn IUnknown_SetSite(punk : * mut core::ffi::c_void, punksite : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { IUnknown_SetSite(punk.param().abi(), punksite.param().abi()).ok() }
}
#[inline]
pub unsafe fn ImportPrivacySettings<P0>(pszfilename: P0, pfparseprivacypreferences: *mut windows_core::BOOL, pfparsepersiterules: *mut windows_core::BOOL) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shdocvw.dll" "system" fn ImportPrivacySettings(pszfilename : windows_core::PCWSTR, pfparseprivacypreferences : *mut windows_core::BOOL, pfparsepersiterules : *mut windows_core::BOOL) -> windows_core::BOOL);
    unsafe { ImportPrivacySettings(pszfilename.param().abi(), pfparseprivacypreferences as _, pfparsepersiterules as _) }
}
#[inline]
pub unsafe fn InitNetworkAddressControl() -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn InitNetworkAddressControl() -> windows_core::BOOL);
    unsafe { InitNetworkAddressControl() }
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn InitPropVariantFromStrRet(pstrret: *mut Common::STRRET, pidl: Option<*const Common::ITEMIDLIST>, ppropvar: *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::Result<()> {
    windows_core::link!("propsys.dll" "system" fn InitPropVariantFromStrRet(pstrret : *mut Common:: STRRET, pidl : *const Common:: ITEMIDLIST, ppropvar : *mut super::super::System::Com::StructuredStorage:: PROPVARIANT) -> windows_core::HRESULT);
    unsafe { InitPropVariantFromStrRet(pstrret as _, pidl.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(ppropvar)).ok() }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn InitVariantFromStrRet(pstrret: *const Common::STRRET, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<super::super::System::Variant::VARIANT> {
    windows_core::link!("propsys.dll" "system" fn InitVariantFromStrRet(pstrret : *const Common:: STRRET, pidl : *const Common:: ITEMIDLIST, pvar : *mut super::super::System::Variant:: VARIANT) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        InitVariantFromStrRet(pstrret, pidl, &mut result__).map(|| core::mem::transmute(result__))
    }
}
#[inline]
pub unsafe fn IntlStrEqWorkerA<P1, P2>(fcasesens: bool, lpstring1: P1, lpstring2: P2, nchar: i32) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn IntlStrEqWorkerA(fcasesens : windows_core::BOOL, lpstring1 : windows_core::PCSTR, lpstring2 : windows_core::PCSTR, nchar : i32) -> windows_core::BOOL);
    unsafe { IntlStrEqWorkerA(fcasesens.into(), lpstring1.param().abi(), lpstring2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn IntlStrEqWorkerW<P1, P2>(fcasesens: bool, lpstring1: P1, lpstring2: P2, nchar: i32) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn IntlStrEqWorkerW(fcasesens : windows_core::BOOL, lpstring1 : windows_core::PCWSTR, lpstring2 : windows_core::PCWSTR, nchar : i32) -> windows_core::BOOL);
    unsafe { IntlStrEqWorkerW(fcasesens.into(), lpstring1.param().abi(), lpstring2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn IsCharSpaceA(wch: i8) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn IsCharSpaceA(wch : i8) -> windows_core::BOOL);
    unsafe { IsCharSpaceA(wch) }
}
#[inline]
pub unsafe fn IsCharSpaceW(wch: u16) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn IsCharSpaceW(wch : u16) -> windows_core::BOOL);
    unsafe { IsCharSpaceW(wch) }
}
#[inline]
pub unsafe fn IsInternetESCEnabled() -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn IsInternetESCEnabled() -> windows_core::BOOL);
    unsafe { IsInternetESCEnabled() }
}
#[inline]
pub unsafe fn IsLFNDriveA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn IsLFNDriveA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { IsLFNDriveA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn IsLFNDriveW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn IsLFNDriveW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { IsLFNDriveW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn IsNetDrive(idrive: i32) -> i32 {
    windows_core::link!("shell32.dll" "system" fn IsNetDrive(idrive : i32) -> i32);
    unsafe { IsNetDrive(idrive) }
}
#[inline]
pub unsafe fn IsOS(dwos: OS) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn IsOS(dwos : OS) -> windows_core::BOOL);
    unsafe { IsOS(dwos) }
}
#[inline]
pub unsafe fn IsUserAnAdmin() -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn IsUserAnAdmin() -> windows_core::BOOL);
    unsafe { IsUserAnAdmin() }
}
#[inline]
pub unsafe fn LoadUserProfileA(htoken: super::super::Foundation::HANDLE, lpprofileinfo: *mut PROFILEINFOA) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn LoadUserProfileA(htoken : super::super::Foundation:: HANDLE, lpprofileinfo : *mut PROFILEINFOA) -> windows_core::BOOL);
    unsafe { LoadUserProfileA(htoken, lpprofileinfo as _).ok() }
}
#[inline]
pub unsafe fn LoadUserProfileW(htoken: super::super::Foundation::HANDLE, lpprofileinfo: *mut PROFILEINFOW) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn LoadUserProfileW(htoken : super::super::Foundation:: HANDLE, lpprofileinfo : *mut PROFILEINFOW) -> windows_core::BOOL);
    unsafe { LoadUserProfileW(htoken, lpprofileinfo as _).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn OleSaveToStreamEx<P0, P1>(piunk: P0, pistm: P1, fcleardirty: bool) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::IUnknown>,
    P1: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("hlink.dll" "system" fn OleSaveToStreamEx(piunk : * mut core::ffi::c_void, pistm : * mut core::ffi::c_void, fcleardirty : windows_core::BOOL) -> windows_core::HRESULT);
    unsafe { OleSaveToStreamEx(piunk.param().abi(), pistm.param().abi(), fcleardirty.into()).ok() }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry"))]
#[inline]
pub unsafe fn OpenRegStream<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, grfmode: u32) -> Option<super::super::System::Com::IStream>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn OpenRegStream(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCWSTR, pszvalue : windows_core::PCWSTR, grfmode : u32) -> Option < super::super::System::Com:: IStream >);
    unsafe { OpenRegStream(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), grfmode) }
}
#[inline]
pub unsafe fn ParseURLA<P0>(pcszurl: P0, ppu: *mut PARSEDURLA) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn ParseURLA(pcszurl : windows_core::PCSTR, ppu : *mut PARSEDURLA) -> windows_core::HRESULT);
    unsafe { ParseURLA(pcszurl.param().abi(), ppu as _).ok() }
}
#[inline]
pub unsafe fn ParseURLW<P0>(pcszurl: P0, ppu: *mut PARSEDURLW) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn ParseURLW(pcszurl : windows_core::PCWSTR, ppu : *mut PARSEDURLW) -> windows_core::HRESULT);
    unsafe { ParseURLW(pcszurl.param().abi(), ppu as _).ok() }
}
#[inline]
pub unsafe fn PathAddBackslashA(pszpath: &mut [u8; 260]) -> windows_core::PSTR {
    windows_core::link!("shlwapi.dll" "system" fn PathAddBackslashA(pszpath : windows_core::PSTR) -> windows_core::PSTR);
    unsafe { PathAddBackslashA(core::mem::transmute(pszpath.as_ptr())) }
}
#[inline]
pub unsafe fn PathAddBackslashW(pszpath: &mut [u16; 260]) -> windows_core::PWSTR {
    windows_core::link!("shlwapi.dll" "system" fn PathAddBackslashW(pszpath : windows_core::PWSTR) -> windows_core::PWSTR);
    unsafe { PathAddBackslashW(core::mem::transmute(pszpath.as_ptr())) }
}
#[inline]
pub unsafe fn PathAddExtensionA<P1>(pszpath: &mut [u8; 260], pszext: P1) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathAddExtensionA(pszpath : windows_core::PSTR, pszext : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathAddExtensionA(core::mem::transmute(pszpath.as_ptr()), pszext.param().abi()) }
}
#[inline]
pub unsafe fn PathAddExtensionW<P1>(pszpath: &mut [u16; 260], pszext: P1) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathAddExtensionW(pszpath : windows_core::PWSTR, pszext : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathAddExtensionW(core::mem::transmute(pszpath.as_ptr()), pszext.param().abi()) }
}
#[inline]
pub unsafe fn PathAllocCanonicalize<P0>(pszpathin: P0, dwflags: PATHCCH_OPTIONS) -> windows_core::Result<windows_core::PWSTR>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathAllocCanonicalize(pszpathin : windows_core::PCWSTR, dwflags : PATHCCH_OPTIONS, ppszpathout : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        PathAllocCanonicalize(pszpathin.param().abi(), dwflags, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn PathAllocCombine<P0, P1>(pszpathin: P0, pszmore: P1, dwflags: PATHCCH_OPTIONS) -> windows_core::Result<windows_core::PWSTR>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathAllocCombine(pszpathin : windows_core::PCWSTR, pszmore : windows_core::PCWSTR, dwflags : PATHCCH_OPTIONS, ppszpathout : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        PathAllocCombine(pszpathin.param().abi(), pszmore.param().abi(), dwflags, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn PathAppendA<P1>(pszpath: &mut [u8; 260], pszmore: P1) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathAppendA(pszpath : windows_core::PSTR, pszmore : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathAppendA(core::mem::transmute(pszpath.as_ptr()), pszmore.param().abi()) }
}
#[inline]
pub unsafe fn PathAppendW<P1>(pszpath: &mut [u16; 260], pszmore: P1) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathAppendW(pszpath : windows_core::PWSTR, pszmore : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathAppendW(core::mem::transmute(pszpath.as_ptr()), pszmore.param().abi()) }
}
#[inline]
pub unsafe fn PathBuildRootA(pszroot: &mut [u8; 4], idrive: i32) -> windows_core::PSTR {
    windows_core::link!("shlwapi.dll" "system" fn PathBuildRootA(pszroot : windows_core::PSTR, idrive : i32) -> windows_core::PSTR);
    unsafe { PathBuildRootA(core::mem::transmute(pszroot.as_ptr()), idrive) }
}
#[inline]
pub unsafe fn PathBuildRootW(pszroot: &mut [u16; 4], idrive: i32) -> windows_core::PWSTR {
    windows_core::link!("shlwapi.dll" "system" fn PathBuildRootW(pszroot : windows_core::PWSTR, idrive : i32) -> windows_core::PWSTR);
    unsafe { PathBuildRootW(core::mem::transmute(pszroot.as_ptr()), idrive) }
}
#[inline]
pub unsafe fn PathCanonicalizeA<P1>(pszbuf: &mut [u8; 260], pszpath: P1) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCanonicalizeA(pszbuf : windows_core::PSTR, pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathCanonicalizeA(core::mem::transmute(pszbuf.as_ptr()), pszpath.param().abi()).ok() }
}
#[inline]
pub unsafe fn PathCanonicalizeW<P1>(pszbuf: &mut [u16; 260], pszpath: P1) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCanonicalizeW(pszbuf : windows_core::PWSTR, pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathCanonicalizeW(core::mem::transmute(pszbuf.as_ptr()), pszpath.param().abi()).ok() }
}
#[inline]
pub unsafe fn PathCchAddBackslash(pszpath: &mut [u16]) -> windows_core::HRESULT {
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchAddBackslash(pszpath : windows_core::PWSTR, cchpath : usize) -> windows_core::HRESULT);
    unsafe { PathCchAddBackslash(core::mem::transmute(pszpath.as_ptr()), pszpath.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn PathCchAddBackslashEx(pszpath: &mut [u16], ppszend: Option<*mut windows_core::PWSTR>, pcchremaining: Option<*mut usize>) -> windows_core::HRESULT {
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchAddBackslashEx(pszpath : windows_core::PWSTR, cchpath : usize, ppszend : *mut windows_core::PWSTR, pcchremaining : *mut usize) -> windows_core::HRESULT);
    unsafe { PathCchAddBackslashEx(core::mem::transmute(pszpath.as_ptr()), pszpath.len().try_into().unwrap(), ppszend.unwrap_or(core::mem::zeroed()) as _, pcchremaining.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn PathCchAddExtension<P2>(pszpath: &mut [u16], pszext: P2) -> windows_core::Result<()>
where
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchAddExtension(pszpath : windows_core::PWSTR, cchpath : usize, pszext : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { PathCchAddExtension(core::mem::transmute(pszpath.as_ptr()), pszpath.len().try_into().unwrap(), pszext.param().abi()).ok() }
}
#[inline]
pub unsafe fn PathCchAppend<P2>(pszpath: &mut [u16], pszmore: P2) -> windows_core::Result<()>
where
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchAppend(pszpath : windows_core::PWSTR, cchpath : usize, pszmore : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { PathCchAppend(core::mem::transmute(pszpath.as_ptr()), pszpath.len().try_into().unwrap(), pszmore.param().abi()).ok() }
}
#[inline]
pub unsafe fn PathCchAppendEx<P2>(pszpath: &mut [u16], pszmore: P2, dwflags: PATHCCH_OPTIONS) -> windows_core::Result<()>
where
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchAppendEx(pszpath : windows_core::PWSTR, cchpath : usize, pszmore : windows_core::PCWSTR, dwflags : PATHCCH_OPTIONS) -> windows_core::HRESULT);
    unsafe { PathCchAppendEx(core::mem::transmute(pszpath.as_ptr()), pszpath.len().try_into().unwrap(), pszmore.param().abi(), dwflags).ok() }
}
#[inline]
pub unsafe fn PathCchCanonicalize<P2>(pszpathout: &mut [u16], pszpathin: P2) -> windows_core::Result<()>
where
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchCanonicalize(pszpathout : windows_core::PWSTR, cchpathout : usize, pszpathin : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { PathCchCanonicalize(core::mem::transmute(pszpathout.as_ptr()), pszpathout.len().try_into().unwrap(), pszpathin.param().abi()).ok() }
}
#[inline]
pub unsafe fn PathCchCanonicalizeEx<P2>(pszpathout: &mut [u16], pszpathin: P2, dwflags: PATHCCH_OPTIONS) -> windows_core::Result<()>
where
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchCanonicalizeEx(pszpathout : windows_core::PWSTR, cchpathout : usize, pszpathin : windows_core::PCWSTR, dwflags : PATHCCH_OPTIONS) -> windows_core::HRESULT);
    unsafe { PathCchCanonicalizeEx(core::mem::transmute(pszpathout.as_ptr()), pszpathout.len().try_into().unwrap(), pszpathin.param().abi(), dwflags).ok() }
}
#[inline]
pub unsafe fn PathCchCombine<P2, P3>(pszpathout: &mut [u16], pszpathin: P2, pszmore: P3) -> windows_core::Result<()>
where
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchCombine(pszpathout : windows_core::PWSTR, cchpathout : usize, pszpathin : windows_core::PCWSTR, pszmore : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { PathCchCombine(core::mem::transmute(pszpathout.as_ptr()), pszpathout.len().try_into().unwrap(), pszpathin.param().abi(), pszmore.param().abi()).ok() }
}
#[inline]
pub unsafe fn PathCchCombineEx<P2, P3>(pszpathout: &mut [u16], pszpathin: P2, pszmore: P3, dwflags: PATHCCH_OPTIONS) -> windows_core::Result<()>
where
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchCombineEx(pszpathout : windows_core::PWSTR, cchpathout : usize, pszpathin : windows_core::PCWSTR, pszmore : windows_core::PCWSTR, dwflags : PATHCCH_OPTIONS) -> windows_core::HRESULT);
    unsafe { PathCchCombineEx(core::mem::transmute(pszpathout.as_ptr()), pszpathout.len().try_into().unwrap(), pszpathin.param().abi(), pszmore.param().abi(), dwflags).ok() }
}
#[inline]
pub unsafe fn PathCchFindExtension<P0>(pszpath: P0, cchpath: usize) -> windows_core::Result<windows_core::PCWSTR>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchFindExtension(pszpath : windows_core::PCWSTR, cchpath : usize, ppszext : *mut windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        PathCchFindExtension(pszpath.param().abi(), cchpath, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn PathCchIsRoot<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchIsRoot(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathCchIsRoot(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathCchRemoveBackslash(pszpath: &mut [u16]) -> windows_core::HRESULT {
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchRemoveBackslash(pszpath : windows_core::PWSTR, cchpath : usize) -> windows_core::HRESULT);
    unsafe { PathCchRemoveBackslash(core::mem::transmute(pszpath.as_ptr()), pszpath.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn PathCchRemoveBackslashEx(pszpath: windows_core::PWSTR, cchpath: usize, ppszend: Option<*mut windows_core::PWSTR>, pcchremaining: Option<*mut usize>) -> windows_core::Result<()> {
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchRemoveBackslashEx(pszpath : windows_core::PWSTR, cchpath : usize, ppszend : *mut windows_core::PWSTR, pcchremaining : *mut usize) -> windows_core::HRESULT);
    unsafe { PathCchRemoveBackslashEx(core::mem::transmute(pszpath), cchpath, ppszend.unwrap_or(core::mem::zeroed()) as _, pcchremaining.unwrap_or(core::mem::zeroed()) as _).ok() }
}
#[inline]
pub unsafe fn PathCchRemoveExtension(pszpath: windows_core::PWSTR, cchpath: usize) -> windows_core::Result<()> {
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchRemoveExtension(pszpath : windows_core::PWSTR, cchpath : usize) -> windows_core::HRESULT);
    unsafe { PathCchRemoveExtension(core::mem::transmute(pszpath), cchpath).ok() }
}
#[inline]
pub unsafe fn PathCchRemoveFileSpec(pszpath: windows_core::PWSTR, cchpath: usize) -> windows_core::Result<()> {
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchRemoveFileSpec(pszpath : windows_core::PWSTR, cchpath : usize) -> windows_core::HRESULT);
    unsafe { PathCchRemoveFileSpec(core::mem::transmute(pszpath), cchpath).ok() }
}
#[inline]
pub unsafe fn PathCchRenameExtension<P2>(pszpath: &mut [u16], pszext: P2) -> windows_core::Result<()>
where
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchRenameExtension(pszpath : windows_core::PWSTR, cchpath : usize, pszext : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { PathCchRenameExtension(core::mem::transmute(pszpath.as_ptr()), pszpath.len().try_into().unwrap(), pszext.param().abi()).ok() }
}
#[inline]
pub unsafe fn PathCchSkipRoot<P0>(pszpath: P0) -> windows_core::Result<windows_core::PCWSTR>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchSkipRoot(pszpath : windows_core::PCWSTR, ppszrootend : *mut windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        PathCchSkipRoot(pszpath.param().abi(), &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn PathCchStripPrefix(pszpath: &mut [u16]) -> windows_core::HRESULT {
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchStripPrefix(pszpath : windows_core::PWSTR, cchpath : usize) -> windows_core::HRESULT);
    unsafe { PathCchStripPrefix(core::mem::transmute(pszpath.as_ptr()), pszpath.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn PathCchStripToRoot(pszpath: windows_core::PWSTR, cchpath: usize) -> windows_core::HRESULT {
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathCchStripToRoot(pszpath : windows_core::PWSTR, cchpath : usize) -> windows_core::HRESULT);
    unsafe { PathCchStripToRoot(core::mem::transmute(pszpath), cchpath) }
}
#[inline]
pub unsafe fn PathCleanupSpec<P0>(pszdir: P0, pszspec: windows_core::PWSTR) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn PathCleanupSpec(pszdir : windows_core::PCWSTR, pszspec : windows_core::PWSTR) -> i32);
    unsafe { PathCleanupSpec(pszdir.param().abi(), core::mem::transmute(pszspec)) }
}
#[inline]
pub unsafe fn PathCombineA<P1, P2>(pszdest: &mut [u8; 260], pszdir: P1, pszfile: P2) -> windows_core::PSTR
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCombineA(pszdest : windows_core::PSTR, pszdir : windows_core::PCSTR, pszfile : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { PathCombineA(core::mem::transmute(pszdest.as_ptr()), pszdir.param().abi(), pszfile.param().abi()) }
}
#[inline]
pub unsafe fn PathCombineW<P1, P2>(pszdest: &mut [u16; 260], pszdir: P1, pszfile: P2) -> windows_core::PWSTR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCombineW(pszdest : windows_core::PWSTR, pszdir : windows_core::PCWSTR, pszfile : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { PathCombineW(core::mem::transmute(pszdest.as_ptr()), pszdir.param().abi(), pszfile.param().abi()) }
}
#[inline]
pub unsafe fn PathCommonPrefixA<P0, P1>(pszfile1: P0, pszfile2: P1, achpath: Option<&mut [u8; 260]>) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCommonPrefixA(pszfile1 : windows_core::PCSTR, pszfile2 : windows_core::PCSTR, achpath : windows_core::PSTR) -> i32);
    unsafe { PathCommonPrefixA(pszfile1.param().abi(), pszfile2.param().abi(), core::mem::transmute(achpath.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr()))) }
}
#[inline]
pub unsafe fn PathCommonPrefixW<P0, P1>(pszfile1: P0, pszfile2: P1, achpath: Option<&mut [u16; 260]>) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCommonPrefixW(pszfile1 : windows_core::PCWSTR, pszfile2 : windows_core::PCWSTR, achpath : windows_core::PWSTR) -> i32);
    unsafe { PathCommonPrefixW(pszfile1.param().abi(), pszfile2.param().abi(), core::mem::transmute(achpath.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr()))) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn PathCompactPathA(hdc: Option<super::super::Graphics::Gdi::HDC>, pszpath: &mut [u8; 260], dx: u32) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathCompactPathA(hdc : super::super::Graphics::Gdi:: HDC, pszpath : windows_core::PSTR, dx : u32) -> windows_core::BOOL);
    unsafe { PathCompactPathA(hdc.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszpath.as_ptr()), dx) }
}
#[inline]
pub unsafe fn PathCompactPathExA<P1>(pszout: &mut [u8], pszsrc: P1, dwflags: u32) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCompactPathExA(pszout : windows_core::PSTR, pszsrc : windows_core::PCSTR, cchmax : u32, dwflags : u32) -> windows_core::BOOL);
    unsafe { PathCompactPathExA(core::mem::transmute(pszout.as_ptr()), pszsrc.param().abi(), pszout.len().try_into().unwrap(), dwflags) }
}
#[inline]
pub unsafe fn PathCompactPathExW<P1>(pszout: &mut [u16], pszsrc: P1, dwflags: u32) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCompactPathExW(pszout : windows_core::PWSTR, pszsrc : windows_core::PCWSTR, cchmax : u32, dwflags : u32) -> windows_core::BOOL);
    unsafe { PathCompactPathExW(core::mem::transmute(pszout.as_ptr()), pszsrc.param().abi(), pszout.len().try_into().unwrap(), dwflags) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn PathCompactPathW(hdc: Option<super::super::Graphics::Gdi::HDC>, pszpath: &mut [u16; 260], dx: u32) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathCompactPathW(hdc : super::super::Graphics::Gdi:: HDC, pszpath : windows_core::PWSTR, dx : u32) -> windows_core::BOOL);
    unsafe { PathCompactPathW(hdc.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszpath.as_ptr()), dx) }
}
#[inline]
pub unsafe fn PathCreateFromUrlA<P0>(pszurl: P0, pszpath: windows_core::PSTR, pcchpath: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCreateFromUrlA(pszurl : windows_core::PCSTR, pszpath : windows_core::PSTR, pcchpath : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { PathCreateFromUrlA(pszurl.param().abi(), core::mem::transmute(pszpath), pcchpath as _, dwflags).ok() }
}
#[inline]
pub unsafe fn PathCreateFromUrlAlloc<P0>(pszin: P0, ppszout: *mut windows_core::PWSTR, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCreateFromUrlAlloc(pszin : windows_core::PCWSTR, ppszout : *mut windows_core::PWSTR, dwflags : u32) -> windows_core::HRESULT);
    unsafe { PathCreateFromUrlAlloc(pszin.param().abi(), ppszout as _, dwflags).ok() }
}
#[inline]
pub unsafe fn PathCreateFromUrlW<P0>(pszurl: P0, pszpath: windows_core::PWSTR, pcchpath: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathCreateFromUrlW(pszurl : windows_core::PCWSTR, pszpath : windows_core::PWSTR, pcchpath : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { PathCreateFromUrlW(pszurl.param().abi(), core::mem::transmute(pszpath), pcchpath as _, dwflags).ok() }
}
#[inline]
pub unsafe fn PathFileExistsA<P0>(pszpath: P0) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathFileExistsA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathFileExistsA(pszpath.param().abi()).ok() }
}
#[inline]
pub unsafe fn PathFileExistsW<P0>(pszpath: P0) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathFileExistsW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathFileExistsW(pszpath.param().abi()).ok() }
}
#[inline]
pub unsafe fn PathFindExtensionA<P0>(pszpath: P0) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathFindExtensionA(pszpath : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { PathFindExtensionA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathFindExtensionW<P0>(pszpath: P0) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathFindExtensionW(pszpath : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { PathFindExtensionW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathFindFileNameA<P0>(pszpath: P0) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathFindFileNameA(pszpath : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { PathFindFileNameA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathFindFileNameW<P0>(pszpath: P0) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathFindFileNameW(pszpath : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { PathFindFileNameW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathFindNextComponentA<P0>(pszpath: P0) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathFindNextComponentA(pszpath : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { PathFindNextComponentA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathFindNextComponentW<P0>(pszpath: P0) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathFindNextComponentW(pszpath : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { PathFindNextComponentW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathFindOnPathA(pszpath: &mut [u8; 260], ppszotherdirs: Option<*const *const i8>) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathFindOnPathA(pszpath : windows_core::PSTR, ppszotherdirs : *const *const i8) -> windows_core::BOOL);
    unsafe { PathFindOnPathA(core::mem::transmute(pszpath.as_ptr()), ppszotherdirs.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn PathFindOnPathW(pszpath: &mut [u16; 260], ppszotherdirs: Option<*const *const u16>) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathFindOnPathW(pszpath : windows_core::PWSTR, ppszotherdirs : *const *const u16) -> windows_core::BOOL);
    unsafe { PathFindOnPathW(core::mem::transmute(pszpath.as_ptr()), ppszotherdirs.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn PathFindSuffixArrayA<P0>(pszpath: P0, apszsuffix: &[windows_core::PCSTR]) -> windows_core::PCSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathFindSuffixArrayA(pszpath : windows_core::PCSTR, apszsuffix : *const windows_core::PCSTR, iarraysize : i32) -> windows_core::PCSTR);
    unsafe { PathFindSuffixArrayA(pszpath.param().abi(), core::mem::transmute(apszsuffix.as_ptr()), apszsuffix.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn PathFindSuffixArrayW<P0>(pszpath: P0, apszsuffix: &[windows_core::PCWSTR]) -> windows_core::PCWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathFindSuffixArrayW(pszpath : windows_core::PCWSTR, apszsuffix : *const windows_core::PCWSTR, iarraysize : i32) -> windows_core::PCWSTR);
    unsafe { PathFindSuffixArrayW(pszpath.param().abi(), core::mem::transmute(apszsuffix.as_ptr()), apszsuffix.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn PathGetArgsA<P0>(pszpath: P0) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathGetArgsA(pszpath : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { PathGetArgsA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathGetArgsW<P0>(pszpath: P0) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathGetArgsW(pszpath : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { PathGetArgsW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathGetCharTypeA(ch: u8) -> u32 {
    windows_core::link!("shlwapi.dll" "system" fn PathGetCharTypeA(ch : u8) -> u32);
    unsafe { PathGetCharTypeA(ch) }
}
#[inline]
pub unsafe fn PathGetCharTypeW(ch: u16) -> u32 {
    windows_core::link!("shlwapi.dll" "system" fn PathGetCharTypeW(ch : u16) -> u32);
    unsafe { PathGetCharTypeW(ch) }
}
#[inline]
pub unsafe fn PathGetDriveNumberA<P0>(pszpath: P0) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathGetDriveNumberA(pszpath : windows_core::PCSTR) -> i32);
    unsafe { PathGetDriveNumberA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathGetDriveNumberW<P0>(pszpath: P0) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathGetDriveNumberW(pszpath : windows_core::PCWSTR) -> i32);
    unsafe { PathGetDriveNumberW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathGetShortPath(pszlongpath: &mut [u16; 260]) {
    windows_core::link!("shell32.dll" "system" fn PathGetShortPath(pszlongpath : windows_core::PWSTR));
    unsafe { PathGetShortPath(core::mem::transmute(pszlongpath.as_ptr())) }
}
#[inline]
pub unsafe fn PathIsContentTypeA<P0, P1>(pszpath: P0, pszcontenttype: P1) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsContentTypeA(pszpath : windows_core::PCSTR, pszcontenttype : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsContentTypeA(pszpath.param().abi(), pszcontenttype.param().abi()) }
}
#[inline]
pub unsafe fn PathIsContentTypeW<P0, P1>(pszpath: P0, pszcontenttype: P1) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsContentTypeW(pszpath : windows_core::PCWSTR, pszcontenttype : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsContentTypeW(pszpath.param().abi(), pszcontenttype.param().abi()) }
}
#[inline]
pub unsafe fn PathIsDirectoryA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsDirectoryA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsDirectoryA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsDirectoryEmptyA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsDirectoryEmptyA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsDirectoryEmptyA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsDirectoryEmptyW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsDirectoryEmptyW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsDirectoryEmptyW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsDirectoryW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsDirectoryW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsDirectoryW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsExe<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn PathIsExe(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsExe(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsFileSpecA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsFileSpecA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsFileSpecA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsFileSpecW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsFileSpecW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsFileSpecW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsLFNFileSpecA<P0>(pszname: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsLFNFileSpecA(pszname : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsLFNFileSpecA(pszname.param().abi()) }
}
#[inline]
pub unsafe fn PathIsLFNFileSpecW<P0>(pszname: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsLFNFileSpecW(pszname : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsLFNFileSpecW(pszname.param().abi()) }
}
#[inline]
pub unsafe fn PathIsNetworkPathA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsNetworkPathA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsNetworkPathA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsNetworkPathW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsNetworkPathW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsNetworkPathW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsPrefixA<P0, P1>(pszprefix: P0, pszpath: P1) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsPrefixA(pszprefix : windows_core::PCSTR, pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsPrefixA(pszprefix.param().abi(), pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsPrefixW<P0, P1>(pszprefix: P0, pszpath: P1) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsPrefixW(pszprefix : windows_core::PCWSTR, pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsPrefixW(pszprefix.param().abi(), pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsRelativeA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsRelativeA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsRelativeA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsRelativeW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsRelativeW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsRelativeW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsRootA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsRootA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsRootA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsRootW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsRootW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsRootW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsSameRootA<P0, P1>(pszpath1: P0, pszpath2: P1) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsSameRootA(pszpath1 : windows_core::PCSTR, pszpath2 : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsSameRootA(pszpath1.param().abi(), pszpath2.param().abi()) }
}
#[inline]
pub unsafe fn PathIsSameRootW<P0, P1>(pszpath1: P0, pszpath2: P1) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsSameRootW(pszpath1 : windows_core::PCWSTR, pszpath2 : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsSameRootW(pszpath1.param().abi(), pszpath2.param().abi()) }
}
#[inline]
pub unsafe fn PathIsSlowA<P0>(pszfile: P0, dwattr: u32) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn PathIsSlowA(pszfile : windows_core::PCSTR, dwattr : u32) -> windows_core::BOOL);
    unsafe { PathIsSlowA(pszfile.param().abi(), dwattr) }
}
#[inline]
pub unsafe fn PathIsSlowW<P0>(pszfile: P0, dwattr: u32) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn PathIsSlowW(pszfile : windows_core::PCWSTR, dwattr : u32) -> windows_core::BOOL);
    unsafe { PathIsSlowW(pszfile.param().abi(), dwattr) }
}
#[inline]
pub unsafe fn PathIsSystemFolderA<P0>(pszpath: P0, dwattrb: u32) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsSystemFolderA(pszpath : windows_core::PCSTR, dwattrb : u32) -> windows_core::BOOL);
    unsafe { PathIsSystemFolderA(pszpath.param().abi(), dwattrb) }
}
#[inline]
pub unsafe fn PathIsSystemFolderW<P0>(pszpath: P0, dwattrb: u32) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsSystemFolderW(pszpath : windows_core::PCWSTR, dwattrb : u32) -> windows_core::BOOL);
    unsafe { PathIsSystemFolderW(pszpath.param().abi(), dwattrb) }
}
#[inline]
pub unsafe fn PathIsUNCA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsUNCA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsUNCA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsUNCEx<P0>(pszpath: P0, ppszserver: Option<*mut windows_core::PCWSTR>) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("api-ms-win-core-path-l1-1-0.dll" "system" fn PathIsUNCEx(pszpath : windows_core::PCWSTR, ppszserver : *mut windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsUNCEx(pszpath.param().abi(), ppszserver.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn PathIsUNCServerA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsUNCServerA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsUNCServerA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsUNCServerShareA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsUNCServerShareA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsUNCServerShareA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsUNCServerShareW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsUNCServerShareW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsUNCServerShareW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsUNCServerW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsUNCServerW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsUNCServerW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsUNCW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsUNCW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsUNCW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsURLA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsURLA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathIsURLA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathIsURLW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathIsURLW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathIsURLW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathMakePrettyA(pszpath: windows_core::PSTR) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathMakePrettyA(pszpath : windows_core::PSTR) -> windows_core::BOOL);
    unsafe { PathMakePrettyA(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathMakePrettyW(pszpath: windows_core::PWSTR) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathMakePrettyW(pszpath : windows_core::PWSTR) -> windows_core::BOOL);
    unsafe { PathMakePrettyW(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathMakeSystemFolderA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathMakeSystemFolderA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathMakeSystemFolderA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathMakeSystemFolderW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathMakeSystemFolderW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathMakeSystemFolderW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathMakeUniqueName<P2, P3, P4>(pszuniquename: &mut [u16], psztemplate: P2, pszlongplate: P3, pszdir: P4) -> windows_core::BOOL
where
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
    P4: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn PathMakeUniqueName(pszuniquename : windows_core::PWSTR, cchmax : u32, psztemplate : windows_core::PCWSTR, pszlongplate : windows_core::PCWSTR, pszdir : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathMakeUniqueName(core::mem::transmute(pszuniquename.as_ptr()), pszuniquename.len().try_into().unwrap(), psztemplate.param().abi(), pszlongplate.param().abi(), pszdir.param().abi()) }
}
#[inline]
pub unsafe fn PathMatchSpecA<P0, P1>(pszfile: P0, pszspec: P1) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathMatchSpecA(pszfile : windows_core::PCSTR, pszspec : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathMatchSpecA(pszfile.param().abi(), pszspec.param().abi()) }
}
#[inline]
pub unsafe fn PathMatchSpecExA<P0, P1>(pszfile: P0, pszspec: P1, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathMatchSpecExA(pszfile : windows_core::PCSTR, pszspec : windows_core::PCSTR, dwflags : u32) -> windows_core::HRESULT);
    unsafe { PathMatchSpecExA(pszfile.param().abi(), pszspec.param().abi(), dwflags).ok() }
}
#[inline]
pub unsafe fn PathMatchSpecExW<P0, P1>(pszfile: P0, pszspec: P1, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathMatchSpecExW(pszfile : windows_core::PCWSTR, pszspec : windows_core::PCWSTR, dwflags : u32) -> windows_core::HRESULT);
    unsafe { PathMatchSpecExW(pszfile.param().abi(), pszspec.param().abi(), dwflags).ok() }
}
#[inline]
pub unsafe fn PathMatchSpecW<P0, P1>(pszfile: P0, pszspec: P1) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathMatchSpecW(pszfile : windows_core::PCWSTR, pszspec : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathMatchSpecW(pszfile.param().abi(), pszspec.param().abi()) }
}
#[inline]
pub unsafe fn PathParseIconLocationA(psziconfile: windows_core::PSTR) -> i32 {
    windows_core::link!("shlwapi.dll" "system" fn PathParseIconLocationA(psziconfile : windows_core::PSTR) -> i32);
    unsafe { PathParseIconLocationA(core::mem::transmute(psziconfile)) }
}
#[inline]
pub unsafe fn PathParseIconLocationW(psziconfile: windows_core::PWSTR) -> i32 {
    windows_core::link!("shlwapi.dll" "system" fn PathParseIconLocationW(psziconfile : windows_core::PWSTR) -> i32);
    unsafe { PathParseIconLocationW(core::mem::transmute(psziconfile)) }
}
#[inline]
pub unsafe fn PathQualify(psz: windows_core::PWSTR) {
    windows_core::link!("shell32.dll" "system" fn PathQualify(psz : windows_core::PWSTR));
    unsafe { PathQualify(core::mem::transmute(psz)) }
}
#[inline]
pub unsafe fn PathQuoteSpacesA(lpsz: &mut [u8; 260]) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathQuoteSpacesA(lpsz : windows_core::PSTR) -> windows_core::BOOL);
    unsafe { PathQuoteSpacesA(core::mem::transmute(lpsz.as_ptr())) }
}
#[inline]
pub unsafe fn PathQuoteSpacesW(lpsz: &mut [u16; 260]) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathQuoteSpacesW(lpsz : windows_core::PWSTR) -> windows_core::BOOL);
    unsafe { PathQuoteSpacesW(core::mem::transmute(lpsz.as_ptr())) }
}
#[inline]
pub unsafe fn PathRelativePathToA<P1, P3>(pszpath: &mut [u8; 260], pszfrom: P1, dwattrfrom: u32, pszto: P3, dwattrto: u32) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P3: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathRelativePathToA(pszpath : windows_core::PSTR, pszfrom : windows_core::PCSTR, dwattrfrom : u32, pszto : windows_core::PCSTR, dwattrto : u32) -> windows_core::BOOL);
    unsafe { PathRelativePathToA(core::mem::transmute(pszpath.as_ptr()), pszfrom.param().abi(), dwattrfrom, pszto.param().abi(), dwattrto) }
}
#[inline]
pub unsafe fn PathRelativePathToW<P1, P3>(pszpath: &mut [u16; 260], pszfrom: P1, dwattrfrom: u32, pszto: P3, dwattrto: u32) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathRelativePathToW(pszpath : windows_core::PWSTR, pszfrom : windows_core::PCWSTR, dwattrfrom : u32, pszto : windows_core::PCWSTR, dwattrto : u32) -> windows_core::BOOL);
    unsafe { PathRelativePathToW(core::mem::transmute(pszpath.as_ptr()), pszfrom.param().abi(), dwattrfrom, pszto.param().abi(), dwattrto) }
}
#[inline]
pub unsafe fn PathRemoveArgsA(pszpath: windows_core::PSTR) {
    windows_core::link!("shlwapi.dll" "system" fn PathRemoveArgsA(pszpath : windows_core::PSTR));
    unsafe { PathRemoveArgsA(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathRemoveArgsW(pszpath: windows_core::PWSTR) {
    windows_core::link!("shlwapi.dll" "system" fn PathRemoveArgsW(pszpath : windows_core::PWSTR));
    unsafe { PathRemoveArgsW(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathRemoveBackslashA(pszpath: windows_core::PSTR) -> windows_core::PSTR {
    windows_core::link!("shlwapi.dll" "system" fn PathRemoveBackslashA(pszpath : windows_core::PSTR) -> windows_core::PSTR);
    unsafe { PathRemoveBackslashA(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathRemoveBackslashW(pszpath: windows_core::PWSTR) -> windows_core::PWSTR {
    windows_core::link!("shlwapi.dll" "system" fn PathRemoveBackslashW(pszpath : windows_core::PWSTR) -> windows_core::PWSTR);
    unsafe { PathRemoveBackslashW(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathRemoveBlanksA(pszpath: windows_core::PSTR) {
    windows_core::link!("shlwapi.dll" "system" fn PathRemoveBlanksA(pszpath : windows_core::PSTR));
    unsafe { PathRemoveBlanksA(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathRemoveBlanksW(pszpath: windows_core::PWSTR) {
    windows_core::link!("shlwapi.dll" "system" fn PathRemoveBlanksW(pszpath : windows_core::PWSTR));
    unsafe { PathRemoveBlanksW(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathRemoveExtensionA(pszpath: windows_core::PSTR) {
    windows_core::link!("shlwapi.dll" "system" fn PathRemoveExtensionA(pszpath : windows_core::PSTR));
    unsafe { PathRemoveExtensionA(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathRemoveExtensionW(pszpath: windows_core::PWSTR) {
    windows_core::link!("shlwapi.dll" "system" fn PathRemoveExtensionW(pszpath : windows_core::PWSTR));
    unsafe { PathRemoveExtensionW(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathRemoveFileSpecA(pszpath: windows_core::PSTR) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathRemoveFileSpecA(pszpath : windows_core::PSTR) -> windows_core::BOOL);
    unsafe { PathRemoveFileSpecA(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathRemoveFileSpecW(pszpath: windows_core::PWSTR) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathRemoveFileSpecW(pszpath : windows_core::PWSTR) -> windows_core::BOOL);
    unsafe { PathRemoveFileSpecW(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathRenameExtensionA<P1>(pszpath: &mut [u8; 260], pszext: P1) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathRenameExtensionA(pszpath : windows_core::PSTR, pszext : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathRenameExtensionA(core::mem::transmute(pszpath.as_ptr()), pszext.param().abi()) }
}
#[inline]
pub unsafe fn PathRenameExtensionW<P1>(pszpath: &mut [u16; 260], pszext: P1) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathRenameExtensionW(pszpath : windows_core::PWSTR, pszext : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathRenameExtensionW(core::mem::transmute(pszpath.as_ptr()), pszext.param().abi()) }
}
#[inline]
pub unsafe fn PathResolve(pszpath: &mut [u16; 260], dirs: Option<*const *const u16>, fflags: PRF_FLAGS) -> i32 {
    windows_core::link!("shell32.dll" "system" fn PathResolve(pszpath : windows_core::PWSTR, dirs : *const *const u16, fflags : u32) -> i32);
    unsafe { PathResolve(core::mem::transmute(pszpath.as_ptr()), dirs.unwrap_or(core::mem::zeroed()) as _, fflags.0 as _) }
}
#[inline]
pub unsafe fn PathSearchAndQualifyA<P0>(pszpath: P0, pszbuf: &mut [u8]) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathSearchAndQualifyA(pszpath : windows_core::PCSTR, pszbuf : windows_core::PSTR, cchbuf : u32) -> windows_core::BOOL);
    unsafe { PathSearchAndQualifyA(pszpath.param().abi(), core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn PathSearchAndQualifyW<P0>(pszpath: P0, pszbuf: &mut [u16]) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathSearchAndQualifyW(pszpath : windows_core::PCWSTR, pszbuf : windows_core::PWSTR, cchbuf : u32) -> windows_core::BOOL);
    unsafe { PathSearchAndQualifyW(pszpath.param().abi(), core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn PathSetDlgItemPathA<P2>(hdlg: super::super::Foundation::HWND, id: i32, pszpath: P2)
where
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathSetDlgItemPathA(hdlg : super::super::Foundation:: HWND, id : i32, pszpath : windows_core::PCSTR));
    unsafe { PathSetDlgItemPathA(hdlg, id, pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathSetDlgItemPathW<P2>(hdlg: super::super::Foundation::HWND, id: i32, pszpath: P2)
where
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathSetDlgItemPathW(hdlg : super::super::Foundation:: HWND, id : i32, pszpath : windows_core::PCWSTR));
    unsafe { PathSetDlgItemPathW(hdlg, id, pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathSkipRootA<P0>(pszpath: P0) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathSkipRootA(pszpath : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { PathSkipRootA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathSkipRootW<P0>(pszpath: P0) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathSkipRootW(pszpath : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { PathSkipRootW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathStripPathA(pszpath: windows_core::PSTR) {
    windows_core::link!("shlwapi.dll" "system" fn PathStripPathA(pszpath : windows_core::PSTR));
    unsafe { PathStripPathA(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathStripPathW(pszpath: windows_core::PWSTR) {
    windows_core::link!("shlwapi.dll" "system" fn PathStripPathW(pszpath : windows_core::PWSTR));
    unsafe { PathStripPathW(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathStripToRootA(pszpath: windows_core::PSTR) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathStripToRootA(pszpath : windows_core::PSTR) -> windows_core::BOOL);
    unsafe { PathStripToRootA(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathStripToRootW(pszpath: windows_core::PWSTR) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathStripToRootW(pszpath : windows_core::PWSTR) -> windows_core::BOOL);
    unsafe { PathStripToRootW(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathUnExpandEnvStringsA<P0>(pszpath: P0, pszbuf: &mut [u8]) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathUnExpandEnvStringsA(pszpath : windows_core::PCSTR, pszbuf : windows_core::PSTR, cchbuf : u32) -> windows_core::BOOL);
    unsafe { PathUnExpandEnvStringsA(pszpath.param().abi(), core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn PathUnExpandEnvStringsW<P0>(pszpath: P0, pszbuf: &mut [u16]) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathUnExpandEnvStringsW(pszpath : windows_core::PCWSTR, pszbuf : windows_core::PWSTR, cchbuf : u32) -> windows_core::BOOL);
    unsafe { PathUnExpandEnvStringsW(pszpath.param().abi(), core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn PathUndecorateA(pszpath: windows_core::PSTR) {
    windows_core::link!("shlwapi.dll" "system" fn PathUndecorateA(pszpath : windows_core::PSTR));
    unsafe { PathUndecorateA(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathUndecorateW(pszpath: windows_core::PWSTR) {
    windows_core::link!("shlwapi.dll" "system" fn PathUndecorateW(pszpath : windows_core::PWSTR));
    unsafe { PathUndecorateW(core::mem::transmute(pszpath)) }
}
#[inline]
pub unsafe fn PathUnmakeSystemFolderA<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathUnmakeSystemFolderA(pszpath : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { PathUnmakeSystemFolderA(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathUnmakeSystemFolderW<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn PathUnmakeSystemFolderW(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathUnmakeSystemFolderW(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn PathUnquoteSpacesA(lpsz: windows_core::PSTR) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathUnquoteSpacesA(lpsz : windows_core::PSTR) -> windows_core::BOOL);
    unsafe { PathUnquoteSpacesA(core::mem::transmute(lpsz)) }
}
#[inline]
pub unsafe fn PathUnquoteSpacesW(lpsz: windows_core::PWSTR) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn PathUnquoteSpacesW(lpsz : windows_core::PWSTR) -> windows_core::BOOL);
    unsafe { PathUnquoteSpacesW(core::mem::transmute(lpsz)) }
}
#[inline]
pub unsafe fn PathYetAnotherMakeUniqueName<P1, P2, P3>(pszuniquename: &mut [u16; 260], pszpath: P1, pszshort: P2, pszfilespec: P3) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn PathYetAnotherMakeUniqueName(pszuniquename : windows_core::PWSTR, pszpath : windows_core::PCWSTR, pszshort : windows_core::PCWSTR, pszfilespec : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { PathYetAnotherMakeUniqueName(core::mem::transmute(pszuniquename.as_ptr()), pszpath.param().abi(), pszshort.param().abi(), pszfilespec.param().abi()) }
}
#[inline]
pub unsafe fn PickIconDlg(hwnd: Option<super::super::Foundation::HWND>, psziconpath: &mut [u16], piiconindex: Option<*mut i32>) -> i32 {
    windows_core::link!("shell32.dll" "system" fn PickIconDlg(hwnd : super::super::Foundation:: HWND, psziconpath : windows_core::PWSTR, cchiconpath : u32, piiconindex : *mut i32) -> i32);
    unsafe { PickIconDlg(hwnd.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(psziconpath.as_ptr()), psziconpath.len().try_into().unwrap(), piiconindex.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn PropVariantToStrRet(propvar: *const super::super::System::Com::StructuredStorage::PROPVARIANT, pstrret: *mut Common::STRRET) -> windows_core::Result<()> {
    windows_core::link!("propsys.dll" "system" fn PropVariantToStrRet(propvar : *const super::super::System::Com::StructuredStorage:: PROPVARIANT, pstrret : *mut Common:: STRRET) -> windows_core::HRESULT);
    unsafe { PropVariantToStrRet(core::mem::transmute(propvar), pstrret as _).ok() }
}
#[inline]
pub unsafe fn QISearch<T>(that: *mut core::ffi::c_void, pqit: *const QITAB) -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_core::link!("shlwapi.dll" "system" fn QISearch(that : *mut core::ffi::c_void, pqit : *const QITAB, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { QISearch(that as _, pqit, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn ReadCabinetState(pcs: *mut CABINETSTATE, clength: i32) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn ReadCabinetState(pcs : *mut CABINETSTATE, clength : i32) -> windows_core::BOOL);
    unsafe { ReadCabinetState(pcs as _, clength) }
}
#[inline]
pub unsafe fn RealDriveType(idrive: i32, foktohitnet: bool) -> i32 {
    windows_core::link!("shell32.dll" "system" fn RealDriveType(idrive : i32, foktohitnet : windows_core::BOOL) -> i32);
    unsafe { RealDriveType(idrive, foktohitnet.into()) }
}
#[inline]
pub unsafe fn RegisterAppConstrainedChangeNotification(routine: PAPPCONSTRAIN_CHANGE_ROUTINE, context: Option<*const core::ffi::c_void>, registration: *mut PAPPCONSTRAIN_REGISTRATION) -> u32 {
    windows_core::link!("api-ms-win-core-psm-appnotify-l1-1-1.dll" "system" fn RegisterAppConstrainedChangeNotification(routine : PAPPCONSTRAIN_CHANGE_ROUTINE, context : *const core::ffi::c_void, registration : *mut PAPPCONSTRAIN_REGISTRATION) -> u32);
    unsafe { RegisterAppConstrainedChangeNotification(routine, context.unwrap_or(core::mem::zeroed()) as _, registration as _) }
}
#[inline]
pub unsafe fn RegisterAppStateChangeNotification(routine: PAPPSTATE_CHANGE_ROUTINE, context: Option<*const core::ffi::c_void>, registration: *mut PAPPSTATE_REGISTRATION) -> u32 {
    windows_core::link!("api-ms-win-core-psm-appnotify-l1-1-0.dll" "system" fn RegisterAppStateChangeNotification(routine : PAPPSTATE_CHANGE_ROUTINE, context : *const core::ffi::c_void, registration : *mut PAPPSTATE_REGISTRATION) -> u32);
    unsafe { RegisterAppStateChangeNotification(routine, context.unwrap_or(core::mem::zeroed()) as _, registration as _) }
}
#[inline]
pub unsafe fn RegisterScaleChangeEvent(hevent: super::super::Foundation::HANDLE) -> windows_core::Result<usize> {
    windows_core::link!("api-ms-win-shcore-scaling-l1-1-1.dll" "system" fn RegisterScaleChangeEvent(hevent : super::super::Foundation:: HANDLE, pdwcookie : *mut usize) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        RegisterScaleChangeEvent(hevent, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn RegisterScaleChangeNotifications(displaydevice: DISPLAY_DEVICE_TYPE, hwndnotify: super::super::Foundation::HWND, umsgnotify: u32) -> windows_core::Result<u32> {
    windows_core::link!("api-ms-win-shcore-scaling-l1-1-0.dll" "system" fn RegisterScaleChangeNotifications(displaydevice : DISPLAY_DEVICE_TYPE, hwndnotify : super::super::Foundation:: HWND, umsgnotify : u32, pdwcookie : *mut u32) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        RegisterScaleChangeNotifications(displaydevice, hwndnotify, umsgnotify, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn RemoveWindowSubclass(hwnd: super::super::Foundation::HWND, pfnsubclass: SUBCLASSPROC, uidsubclass: usize) -> windows_core::BOOL {
    windows_core::link!("comctl32.dll" "system" fn RemoveWindowSubclass(hwnd : super::super::Foundation:: HWND, pfnsubclass : SUBCLASSPROC, uidsubclass : usize) -> windows_core::BOOL);
    unsafe { RemoveWindowSubclass(hwnd, pfnsubclass, uidsubclass) }
}
#[inline]
pub unsafe fn RestartDialog<P1>(hwnd: Option<super::super::Foundation::HWND>, pszprompt: P1, dwreturn: u32) -> i32
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn RestartDialog(hwnd : super::super::Foundation:: HWND, pszprompt : windows_core::PCWSTR, dwreturn : u32) -> i32);
    unsafe { RestartDialog(hwnd.unwrap_or(core::mem::zeroed()) as _, pszprompt.param().abi(), dwreturn) }
}
#[inline]
pub unsafe fn RestartDialogEx<P1>(hwnd: Option<super::super::Foundation::HWND>, pszprompt: P1, dwreturn: u32, dwreasoncode: u32) -> i32
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn RestartDialogEx(hwnd : super::super::Foundation:: HWND, pszprompt : windows_core::PCWSTR, dwreturn : u32, dwreasoncode : u32) -> i32);
    unsafe { RestartDialogEx(hwnd.unwrap_or(core::mem::zeroed()) as _, pszprompt.param().abi(), dwreturn, dwreasoncode) }
}
#[inline]
pub unsafe fn RevokeScaleChangeNotifications(displaydevice: DISPLAY_DEVICE_TYPE, dwcookie: u32) -> windows_core::Result<()> {
    windows_core::link!("api-ms-win-shcore-scaling-l1-1-0.dll" "system" fn RevokeScaleChangeNotifications(displaydevice : DISPLAY_DEVICE_TYPE, dwcookie : u32) -> windows_core::HRESULT);
    unsafe { RevokeScaleChangeNotifications(displaydevice, dwcookie).ok() }
}
#[cfg(feature = "Win32_UI_Controls")]
#[inline]
pub unsafe fn SHAddFromPropSheetExtArray(hpsxa: HPSXA, lpfnaddpage: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> u32 {
    windows_core::link!("shell32.dll" "system" fn SHAddFromPropSheetExtArray(hpsxa : HPSXA, lpfnaddpage : super::Controls:: LPFNSVADDPROPSHEETPAGE, lparam : super::super::Foundation:: LPARAM) -> u32);
    unsafe { SHAddFromPropSheetExtArray(hpsxa, lpfnaddpage, lparam) }
}
#[inline]
pub unsafe fn SHAddToRecentDocs(uflags: u32, pv: Option<*const core::ffi::c_void>) {
    windows_core::link!("shell32.dll" "system" fn SHAddToRecentDocs(uflags : u32, pv : *const core::ffi::c_void));
    unsafe { SHAddToRecentDocs(uflags, pv.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHAlloc(cb: usize) -> *mut core::ffi::c_void {
    windows_core::link!("shell32.dll" "system" fn SHAlloc(cb : usize) -> *mut core::ffi::c_void);
    unsafe { SHAlloc(cb) }
}
#[inline]
pub unsafe fn SHAllocShared(pvdata: Option<*const core::ffi::c_void>, dwsize: u32, dwprocessid: u32) -> super::super::Foundation::HANDLE {
    windows_core::link!("shlwapi.dll" "system" fn SHAllocShared(pvdata : *const core::ffi::c_void, dwsize : u32, dwprocessid : u32) -> super::super::Foundation:: HANDLE);
    unsafe { SHAllocShared(pvdata.unwrap_or(core::mem::zeroed()) as _, dwsize, dwprocessid) }
}
#[inline]
pub unsafe fn SHAnsiToAnsi<P0>(pszsrc: P0, pszdst: &mut [u8]) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHAnsiToAnsi(pszsrc : windows_core::PCSTR, pszdst : windows_core::PSTR, cchbuf : i32) -> i32);
    unsafe { SHAnsiToAnsi(pszsrc.param().abi(), core::mem::transmute(pszdst.as_ptr()), pszdst.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn SHAnsiToUnicode<P0>(pszsrc: P0, pwszdst: &mut [u16]) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHAnsiToUnicode(pszsrc : windows_core::PCSTR, pwszdst : windows_core::PWSTR, cwchbuf : i32) -> i32);
    unsafe { SHAnsiToUnicode(pszsrc.param().abi(), core::mem::transmute(pwszdst.as_ptr()), pwszdst.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn SHAppBarMessage(dwmessage: u32, pdata: *mut APPBARDATA) -> usize {
    windows_core::link!("shell32.dll" "system" fn SHAppBarMessage(dwmessage : u32, pdata : *mut APPBARDATA) -> usize);
    unsafe { SHAppBarMessage(dwmessage, pdata as _) }
}
#[inline]
pub unsafe fn SHAssocEnumHandlers<P0>(pszextra: P0, affilter: ASSOC_FILTER) -> windows_core::Result<IEnumAssocHandlers>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHAssocEnumHandlers(pszextra : windows_core::PCWSTR, affilter : ASSOC_FILTER, ppenumhandler : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHAssocEnumHandlers(pszextra.param().abi(), affilter, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[inline]
pub unsafe fn SHAssocEnumHandlersForProtocolByApplication<P0, T>(protocol: P0) -> windows_core::Result<T>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHAssocEnumHandlersForProtocolByApplication(protocol : windows_core::PCWSTR, riid : *const windows_core::GUID, enumhandlers : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHAssocEnumHandlersForProtocolByApplication(protocol.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn SHAutoComplete(hwndedit: super::super::Foundation::HWND, dwflags: SHELL_AUTOCOMPLETE_FLAGS) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn SHAutoComplete(hwndedit : super::super::Foundation:: HWND, dwflags : SHELL_AUTOCOMPLETE_FLAGS) -> windows_core::HRESULT);
    unsafe { SHAutoComplete(hwndedit, dwflags).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHBindToFolderIDListParent<P0, T>(psfroot: P0, pidl: *const Common::ITEMIDLIST, ppidllast: Option<*mut *mut Common::ITEMIDLIST>) -> windows_core::Result<T>
where
    P0: windows_core::Param<IShellFolder>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHBindToFolderIDListParent(psfroot : * mut core::ffi::c_void, pidl : *const Common:: ITEMIDLIST, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void, ppidllast : *mut *mut Common:: ITEMIDLIST) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHBindToFolderIDListParent(psfroot.param().abi(), pidl, &T::IID, &mut result__, ppidllast.unwrap_or(core::mem::zeroed()) as _).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn SHBindToFolderIDListParentEx<P0, P2, T>(psfroot: P0, pidl: *const Common::ITEMIDLIST, ppbc: P2, ppidllast: Option<*mut *mut Common::ITEMIDLIST>) -> windows_core::Result<T>
where
    P0: windows_core::Param<IShellFolder>,
    P2: windows_core::Param<super::super::System::Com::IBindCtx>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHBindToFolderIDListParentEx(psfroot : * mut core::ffi::c_void, pidl : *const Common:: ITEMIDLIST, ppbc : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void, ppidllast : *mut *mut Common:: ITEMIDLIST) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHBindToFolderIDListParentEx(psfroot.param().abi(), pidl, ppbc.param().abi(), &T::IID, &mut result__, ppidllast.unwrap_or(core::mem::zeroed()) as _).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn SHBindToObject<P0, P2, T>(psf: P0, pidl: *const Common::ITEMIDLIST, pbc: P2) -> windows_core::Result<T>
where
    P0: windows_core::Param<IShellFolder>,
    P2: windows_core::Param<super::super::System::Com::IBindCtx>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHBindToObject(psf : * mut core::ffi::c_void, pidl : *const Common:: ITEMIDLIST, pbc : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHBindToObject(psf.param().abi(), pidl, pbc.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHBindToParent<T>(pidl: *const Common::ITEMIDLIST, ppidllast: Option<*mut *mut Common::ITEMIDLIST>) -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHBindToParent(pidl : *const Common:: ITEMIDLIST, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void, ppidllast : *mut *mut Common:: ITEMIDLIST) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHBindToParent(pidl, &T::IID, &mut result__, ppidllast.unwrap_or(core::mem::zeroed()) as _).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHBrowseForFolderA(lpbi: *const BROWSEINFOA) -> *mut Common::ITEMIDLIST {
    windows_core::link!("shell32.dll" "system" fn SHBrowseForFolderA(lpbi : *const BROWSEINFOA) -> *mut Common:: ITEMIDLIST);
    unsafe { SHBrowseForFolderA(lpbi) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHBrowseForFolderW(lpbi: *const BROWSEINFOW) -> *mut Common::ITEMIDLIST {
    windows_core::link!("shell32.dll" "system" fn SHBrowseForFolderW(lpbi : *const BROWSEINFOW) -> *mut Common:: ITEMIDLIST);
    unsafe { SHBrowseForFolderW(lpbi) }
}
#[inline]
pub unsafe fn SHCLSIDFromString<P0>(psz: P0) -> windows_core::Result<windows_core::GUID>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHCLSIDFromString(psz : windows_core::PCWSTR, pclsid : *mut windows_core::GUID) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCLSIDFromString(psz.param().abi(), &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHChangeNotification_Lock(hchange: super::super::Foundation::HANDLE, dwprocid: u32, pppidl: Option<*mut *mut *mut Common::ITEMIDLIST>, plevent: Option<*mut i32>) -> super::super::Foundation::HANDLE {
    windows_core::link!("shell32.dll" "system" fn SHChangeNotification_Lock(hchange : super::super::Foundation:: HANDLE, dwprocid : u32, pppidl : *mut *mut *mut Common:: ITEMIDLIST, plevent : *mut i32) -> super::super::Foundation:: HANDLE);
    unsafe { SHChangeNotification_Lock(hchange, dwprocid, pppidl.unwrap_or(core::mem::zeroed()) as _, plevent.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHChangeNotification_Unlock(hlock: super::super::Foundation::HANDLE) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SHChangeNotification_Unlock(hlock : super::super::Foundation:: HANDLE) -> windows_core::BOOL);
    unsafe { SHChangeNotification_Unlock(hlock) }
}
#[inline]
pub unsafe fn SHChangeNotify(weventid: SHCNE_ID, uflags: SHCNF_FLAGS, dwitem1: Option<*const core::ffi::c_void>, dwitem2: Option<*const core::ffi::c_void>) {
    windows_core::link!("shell32.dll" "system" fn SHChangeNotify(weventid : i32, uflags : SHCNF_FLAGS, dwitem1 : *const core::ffi::c_void, dwitem2 : *const core::ffi::c_void));
    unsafe { SHChangeNotify(weventid.0 as _, uflags, dwitem1.unwrap_or(core::mem::zeroed()) as _, dwitem2.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHChangeNotifyDeregister(ulid: u32) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SHChangeNotifyDeregister(ulid : u32) -> windows_core::BOOL);
    unsafe { SHChangeNotifyDeregister(ulid) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHChangeNotifyRegister(hwnd: super::super::Foundation::HWND, fsources: SHCNRF_SOURCE, fevents: i32, wmsg: u32, centries: i32, pshcne: *const SHChangeNotifyEntry) -> u32 {
    windows_core::link!("shell32.dll" "system" fn SHChangeNotifyRegister(hwnd : super::super::Foundation:: HWND, fsources : SHCNRF_SOURCE, fevents : i32, wmsg : u32, centries : i32, pshcne : *const SHChangeNotifyEntry) -> u32);
    unsafe { SHChangeNotifyRegister(hwnd, fsources, fevents, wmsg, centries, pshcne) }
}
#[inline]
pub unsafe fn SHChangeNotifyRegisterThread(status: SCNRT_STATUS) {
    windows_core::link!("shell32.dll" "system" fn SHChangeNotifyRegisterThread(status : SCNRT_STATUS));
    unsafe { SHChangeNotifyRegisterThread(status) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHCloneSpecialIDList(hwnd: Option<super::super::Foundation::HWND>, csidl: i32, fcreate: bool) -> *mut Common::ITEMIDLIST {
    windows_core::link!("shell32.dll" "system" fn SHCloneSpecialIDList(hwnd : super::super::Foundation:: HWND, csidl : i32, fcreate : windows_core::BOOL) -> *mut Common:: ITEMIDLIST);
    unsafe { SHCloneSpecialIDList(hwnd.unwrap_or(core::mem::zeroed()) as _, csidl, fcreate.into()) }
}
#[inline]
pub unsafe fn SHCoCreateInstance<P0, P2, T>(pszclsid: P0, pclsid: Option<*const windows_core::GUID>, punkouter: P2) -> windows_core::Result<T>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::IUnknown>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCoCreateInstance(pszclsid : windows_core::PCWSTR, pclsid : *const windows_core::GUID, punkouter : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCoCreateInstance(pszclsid.param().abi(), pclsid.unwrap_or(core::mem::zeroed()) as _, punkouter.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHCopyKeyA<P1>(hkeysrc: super::super::System::Registry::HKEY, pszsrcsubkey: P1, hkeydest: super::super::System::Registry::HKEY, freserved: Option<u32>) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHCopyKeyA(hkeysrc : super::super::System::Registry:: HKEY, pszsrcsubkey : windows_core::PCSTR, hkeydest : super::super::System::Registry:: HKEY, freserved : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHCopyKeyA(hkeysrc, pszsrcsubkey.param().abi(), hkeydest, freserved.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHCopyKeyW<P1>(hkeysrc: super::super::System::Registry::HKEY, pszsrcsubkey: P1, hkeydest: super::super::System::Registry::HKEY, freserved: Option<u32>) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHCopyKeyW(hkeysrc : super::super::System::Registry:: HKEY, pszsrcsubkey : windows_core::PCWSTR, hkeydest : super::super::System::Registry:: HKEY, freserved : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHCopyKeyW(hkeysrc, pszsrcsubkey.param().abi(), hkeydest, freserved.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHCreateAssociationRegistration<T>() -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateAssociationRegistration(riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateAssociationRegistration(&T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn SHCreateDataObject<P3, T>(pidlfolder: Option<*const Common::ITEMIDLIST>, apidl: Option<&[*const Common::ITEMIDLIST]>, pdtinner: P3) -> windows_core::Result<T>
where
    P3: windows_core::Param<super::super::System::Com::IDataObject>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateDataObject(pidlfolder : *const Common:: ITEMIDLIST, cidl : u32, apidl : *const *const Common:: ITEMIDLIST, pdtinner : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateDataObject(pidlfolder.unwrap_or(core::mem::zeroed()) as _, apidl.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(apidl.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), pdtinner.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn SHCreateDefaultContextMenu<T>(pdcm: *const DEFCONTEXTMENU) -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateDefaultContextMenu(pdcm : *const DEFCONTEXTMENU, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateDefaultContextMenu(core::mem::transmute(pdcm), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn SHCreateDefaultExtractIcon<T>() -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateDefaultExtractIcon(riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateDefaultExtractIcon(&T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn SHCreateDefaultPropertiesOp<P0>(psi: P0) -> windows_core::Result<IFileOperation>
where
    P0: windows_core::Param<IShellItem>,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateDefaultPropertiesOp(psi : * mut core::ffi::c_void, ppfileop : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateDefaultPropertiesOp(psi.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[inline]
pub unsafe fn SHCreateDirectory<P1>(hwnd: Option<super::super::Foundation::HWND>, pszpath: P1) -> i32
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateDirectory(hwnd : super::super::Foundation:: HWND, pszpath : windows_core::PCWSTR) -> i32);
    unsafe { SHCreateDirectory(hwnd.unwrap_or(core::mem::zeroed()) as _, pszpath.param().abi()) }
}
#[cfg(feature = "Win32_Security")]
#[inline]
pub unsafe fn SHCreateDirectoryExA<P1>(hwnd: Option<super::super::Foundation::HWND>, pszpath: P1, psa: Option<*const super::super::Security::SECURITY_ATTRIBUTES>) -> i32
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateDirectoryExA(hwnd : super::super::Foundation:: HWND, pszpath : windows_core::PCSTR, psa : *const super::super::Security:: SECURITY_ATTRIBUTES) -> i32);
    unsafe { SHCreateDirectoryExA(hwnd.unwrap_or(core::mem::zeroed()) as _, pszpath.param().abi(), psa.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_Security")]
#[inline]
pub unsafe fn SHCreateDirectoryExW<P1>(hwnd: Option<super::super::Foundation::HWND>, pszpath: P1, psa: Option<*const super::super::Security::SECURITY_ATTRIBUTES>) -> i32
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateDirectoryExW(hwnd : super::super::Foundation:: HWND, pszpath : windows_core::PCWSTR, psa : *const super::super::Security:: SECURITY_ATTRIBUTES) -> i32);
    unsafe { SHCreateDirectoryExW(hwnd.unwrap_or(core::mem::zeroed()) as _, pszpath.param().abi(), psa.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHCreateFileExtractIconW<P0, T>(pszfile: P0, dwfileattributes: u32) -> windows_core::Result<T>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateFileExtractIconW(pszfile : windows_core::PCWSTR, dwfileattributes : u32, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateFileExtractIconW(pszfile.param().abi(), dwfileattributes, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHCreateItemFromIDList<T>(pidl: *const Common::ITEMIDLIST) -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateItemFromIDList(pidl : *const Common:: ITEMIDLIST, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateItemFromIDList(pidl, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHCreateItemFromParsingName<P0, P1, T>(pszpath: P0, pbc: P1) -> windows_core::Result<T>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<super::super::System::Com::IBindCtx>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateItemFromParsingName(pszpath : windows_core::PCWSTR, pbc : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateItemFromParsingName(pszpath.param().abi(), pbc.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHCreateItemFromRelativeName<P0, P1, P2, T>(psiparent: P0, pszname: P1, pbc: P2) -> windows_core::Result<T>
where
    P0: windows_core::Param<IShellItem>,
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<super::super::System::Com::IBindCtx>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateItemFromRelativeName(psiparent : * mut core::ffi::c_void, pszname : windows_core::PCWSTR, pbc : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateItemFromRelativeName(psiparent.param().abi(), pszname.param().abi(), pbc.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn SHCreateItemInKnownFolder<P2, T>(kfid: *const windows_core::GUID, dwkfflags: KNOWN_FOLDER_FLAG, pszitem: P2) -> windows_core::Result<T>
where
    P2: windows_core::Param<windows_core::PCWSTR>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateItemInKnownFolder(kfid : *const windows_core::GUID, dwkfflags : u32, pszitem : windows_core::PCWSTR, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateItemInKnownFolder(kfid, dwkfflags.0 as _, pszitem.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHCreateItemWithParent<P1, T>(pidlparent: Option<*const Common::ITEMIDLIST>, psfparent: P1, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<T>
where
    P1: windows_core::Param<IShellFolder>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateItemWithParent(pidlparent : *const Common:: ITEMIDLIST, psfparent : * mut core::ffi::c_void, pidl : *const Common:: ITEMIDLIST, riid : *const windows_core::GUID, ppvitem : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateItemWithParent(pidlparent.unwrap_or(core::mem::zeroed()) as _, psfparent.param().abi(), pidl, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHCreateMemStream(pinit: Option<&[u8]>) -> Option<super::super::System::Com::IStream> {
    windows_core::link!("shlwapi.dll" "system" fn SHCreateMemStream(pinit : *const u8, cbinit : u32) -> Option < super::super::System::Com:: IStream >);
    unsafe { SHCreateMemStream(core::mem::transmute(pinit.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), pinit.as_deref().map_or(0, |slice| slice.len().try_into().unwrap())) }
}
#[cfg(all(feature = "Win32_Security", feature = "Win32_System_Threading"))]
#[inline]
pub unsafe fn SHCreateProcessAsUserW(pscpi: *mut SHCREATEPROCESSINFOW) -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn SHCreateProcessAsUserW(pscpi : *mut SHCREATEPROCESSINFOW) -> windows_core::BOOL);
    unsafe { SHCreateProcessAsUserW(pscpi as _).ok() }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHCreatePropSheetExtArray<P1>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, max_iface: u32) -> HPSXA
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHCreatePropSheetExtArray(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCWSTR, max_iface : u32) -> HPSXA);
    unsafe { SHCreatePropSheetExtArray(hkey, pszsubkey.param().abi(), max_iface) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHCreateQueryCancelAutoPlayMoniker() -> windows_core::Result<super::super::System::Com::IMoniker> {
    windows_core::link!("shell32.dll" "system" fn SHCreateQueryCancelAutoPlayMoniker(ppmoniker : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateQueryCancelAutoPlayMoniker(&mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[inline]
pub unsafe fn SHCreateShellFolderView(pcsfv: *const SFV_CREATE) -> windows_core::Result<IShellView> {
    windows_core::link!("shell32.dll" "system" fn SHCreateShellFolderView(pcsfv : *const SFV_CREATE, ppsv : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateShellFolderView(core::mem::transmute(pcsfv), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn SHCreateShellFolderViewEx(pcsfv: *const CSFV) -> windows_core::Result<IShellView> {
    windows_core::link!("shell32.dll" "system" fn SHCreateShellFolderViewEx(pcsfv : *const CSFV, ppsv : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateShellFolderViewEx(core::mem::transmute(pcsfv), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHCreateShellItem<P1>(pidlparent: Option<*const Common::ITEMIDLIST>, psfparent: P1, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<IShellItem>
where
    P1: windows_core::Param<IShellFolder>,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateShellItem(pidlparent : *const Common:: ITEMIDLIST, psfparent : * mut core::ffi::c_void, pidl : *const Common:: ITEMIDLIST, ppsi : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateShellItem(pidlparent.unwrap_or(core::mem::zeroed()) as _, psfparent.param().abi(), pidl, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHCreateShellItemArray<P1>(pidlparent: Option<*const Common::ITEMIDLIST>, psf: P1, ppidl: Option<&[*const Common::ITEMIDLIST]>) -> windows_core::Result<IShellItemArray>
where
    P1: windows_core::Param<IShellFolder>,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateShellItemArray(pidlparent : *const Common:: ITEMIDLIST, psf : * mut core::ffi::c_void, cidl : u32, ppidl : *const *const Common:: ITEMIDLIST, ppsiitemarray : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateShellItemArray(pidlparent.unwrap_or(core::mem::zeroed()) as _, psf.param().abi(), ppidl.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(ppidl.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHCreateShellItemArrayFromDataObject<P0, T>(pdo: P0) -> windows_core::Result<T>
where
    P0: windows_core::Param<super::super::System::Com::IDataObject>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateShellItemArrayFromDataObject(pdo : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateShellItemArrayFromDataObject(pdo.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHCreateShellItemArrayFromIDLists(rgpidl: &[*const Common::ITEMIDLIST]) -> windows_core::Result<IShellItemArray> {
    windows_core::link!("shell32.dll" "system" fn SHCreateShellItemArrayFromIDLists(cidl : u32, rgpidl : *const *const Common:: ITEMIDLIST, ppsiitemarray : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateShellItemArrayFromIDLists(rgpidl.len().try_into().unwrap(), core::mem::transmute(rgpidl.as_ptr()), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[inline]
pub unsafe fn SHCreateShellItemArrayFromShellItem<P0, T>(psi: P0) -> windows_core::Result<T>
where
    P0: windows_core::Param<IShellItem>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHCreateShellItemArrayFromShellItem(psi : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHCreateShellItemArrayFromShellItem(psi.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
#[inline]
pub unsafe fn SHCreateShellPalette(hdc: Option<super::super::Graphics::Gdi::HDC>) -> super::super::Graphics::Gdi::HPALETTE {
    windows_core::link!("shlwapi.dll" "system" fn SHCreateShellPalette(hdc : super::super::Graphics::Gdi:: HDC) -> super::super::Graphics::Gdi:: HPALETTE);
    unsafe { SHCreateShellPalette(hdc.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHCreateStdEnumFmtEtc(afmt: &[super::super::System::Com::FORMATETC]) -> windows_core::Result<super::super::System::Com::IEnumFORMATETC> {
    windows_core::link!("shell32.dll" "system" fn SHCreateStdEnumFmtEtc(cfmt : u32, afmt : *const super::super::System::Com:: FORMATETC, ppenumformatetc : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateStdEnumFmtEtc(afmt.len().try_into().unwrap(), core::mem::transmute(afmt.as_ptr()), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHCreateStreamOnFileA<P0>(pszfile: P0, grfmode: u32) -> windows_core::Result<super::super::System::Com::IStream>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHCreateStreamOnFileA(pszfile : windows_core::PCSTR, grfmode : u32, ppstm : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateStreamOnFileA(pszfile.param().abi(), grfmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHCreateStreamOnFileEx<P0, P4>(pszfile: P0, grfmode: u32, dwattributes: u32, fcreate: bool, pstmtemplate: P4) -> windows_core::Result<super::super::System::Com::IStream>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P4: windows_core::Param<super::super::System::Com::IStream>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHCreateStreamOnFileEx(pszfile : windows_core::PCWSTR, grfmode : u32, dwattributes : u32, fcreate : windows_core::BOOL, pstmtemplate : * mut core::ffi::c_void, ppstm : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateStreamOnFileEx(pszfile.param().abi(), grfmode, dwattributes, fcreate.into(), pstmtemplate.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHCreateStreamOnFileW<P0>(pszfile: P0, grfmode: u32) -> windows_core::Result<super::super::System::Com::IStream>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHCreateStreamOnFileW(pszfile : windows_core::PCWSTR, grfmode : u32, ppstm : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHCreateStreamOnFileW(pszfile.param().abi(), grfmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Threading")]
#[inline]
pub unsafe fn SHCreateThread(pfnthreadproc: super::super::System::Threading::LPTHREAD_START_ROUTINE, pdata: Option<*const core::ffi::c_void>, flags: u32, pfncallback: super::super::System::Threading::LPTHREAD_START_ROUTINE) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn SHCreateThread(pfnthreadproc : super::super::System::Threading:: LPTHREAD_START_ROUTINE, pdata : *const core::ffi::c_void, flags : u32, pfncallback : super::super::System::Threading:: LPTHREAD_START_ROUTINE) -> windows_core::BOOL);
    unsafe { SHCreateThread(pfnthreadproc, pdata.unwrap_or(core::mem::zeroed()) as _, flags, pfncallback).ok() }
}
#[inline]
pub unsafe fn SHCreateThreadRef(pcref: *mut i32, ppunk: *mut Option<windows_core::IUnknown>) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn SHCreateThreadRef(pcref : *mut i32, ppunk : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { SHCreateThreadRef(pcref as _, core::mem::transmute(ppunk)).ok() }
}
#[cfg(feature = "Win32_System_Threading")]
#[inline]
pub unsafe fn SHCreateThreadWithHandle(pfnthreadproc: super::super::System::Threading::LPTHREAD_START_ROUTINE, pdata: Option<*const core::ffi::c_void>, flags: u32, pfncallback: super::super::System::Threading::LPTHREAD_START_ROUTINE, phandle: Option<*mut super::super::Foundation::HANDLE>) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn SHCreateThreadWithHandle(pfnthreadproc : super::super::System::Threading:: LPTHREAD_START_ROUTINE, pdata : *const core::ffi::c_void, flags : u32, pfncallback : super::super::System::Threading:: LPTHREAD_START_ROUTINE, phandle : *mut super::super::Foundation:: HANDLE) -> windows_core::BOOL);
    unsafe { SHCreateThreadWithHandle(pfnthreadproc, pdata.unwrap_or(core::mem::zeroed()) as _, flags, pfncallback, phandle.unwrap_or(core::mem::zeroed()) as _).ok() }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn SHDefExtractIconA<P0>(psziconfile: P0, iindex: i32, uflags: u32, phiconlarge: Option<*mut super::WindowsAndMessaging::HICON>, phiconsmall: Option<*mut super::WindowsAndMessaging::HICON>, niconsize: u32) -> windows_core::HRESULT
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHDefExtractIconA(psziconfile : windows_core::PCSTR, iindex : i32, uflags : u32, phiconlarge : *mut super::WindowsAndMessaging:: HICON, phiconsmall : *mut super::WindowsAndMessaging:: HICON, niconsize : u32) -> windows_core::HRESULT);
    unsafe { SHDefExtractIconA(psziconfile.param().abi(), iindex, uflags, phiconlarge.unwrap_or(core::mem::zeroed()) as _, phiconsmall.unwrap_or(core::mem::zeroed()) as _, niconsize) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn SHDefExtractIconW<P0>(psziconfile: P0, iindex: i32, uflags: u32, phiconlarge: Option<*mut super::WindowsAndMessaging::HICON>, phiconsmall: Option<*mut super::WindowsAndMessaging::HICON>, niconsize: u32) -> windows_core::HRESULT
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHDefExtractIconW(psziconfile : windows_core::PCWSTR, iindex : i32, uflags : u32, phiconlarge : *mut super::WindowsAndMessaging:: HICON, phiconsmall : *mut super::WindowsAndMessaging:: HICON, niconsize : u32) -> windows_core::HRESULT);
    unsafe { SHDefExtractIconW(psziconfile.param().abi(), iindex, uflags, phiconlarge.unwrap_or(core::mem::zeroed()) as _, phiconsmall.unwrap_or(core::mem::zeroed()) as _, niconsize) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHDeleteEmptyKeyA<P1>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHDeleteEmptyKeyA(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCSTR) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHDeleteEmptyKeyA(hkey, pszsubkey.param().abi()) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHDeleteEmptyKeyW<P1>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHDeleteEmptyKeyW(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCWSTR) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHDeleteEmptyKeyW(hkey, pszsubkey.param().abi()) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHDeleteKeyA<P1>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHDeleteKeyA(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCSTR) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHDeleteKeyA(hkey, pszsubkey.param().abi()) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHDeleteKeyW<P1>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHDeleteKeyW(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCWSTR) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHDeleteKeyW(hkey, pszsubkey.param().abi()) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHDeleteValueA<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHDeleteValueA(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCSTR, pszvalue : windows_core::PCSTR) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHDeleteValueA(hkey, pszsubkey.param().abi(), pszvalue.param().abi()) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHDeleteValueW<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHDeleteValueW(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCWSTR, pszvalue : windows_core::PCWSTR) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHDeleteValueW(hkey, pszsubkey.param().abi(), pszvalue.param().abi()) }
}
#[inline]
pub unsafe fn SHDestroyPropSheetExtArray(hpsxa: HPSXA) {
    windows_core::link!("shell32.dll" "system" fn SHDestroyPropSheetExtArray(hpsxa : HPSXA));
    unsafe { SHDestroyPropSheetExtArray(hpsxa) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
#[inline]
pub unsafe fn SHDoDragDrop<P1, P2>(hwnd: Option<super::super::Foundation::HWND>, pdata: P1, pdsrc: P2, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::Result<super::super::System::Ole::DROPEFFECT>
where
    P1: windows_core::Param<super::super::System::Com::IDataObject>,
    P2: windows_core::Param<super::super::System::Ole::IDropSource>,
{
    windows_core::link!("shell32.dll" "system" fn SHDoDragDrop(hwnd : super::super::Foundation:: HWND, pdata : * mut core::ffi::c_void, pdsrc : * mut core::ffi::c_void, dweffect : super::super::System::Ole:: DROPEFFECT, pdweffect : *mut super::super::System::Ole:: DROPEFFECT) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHDoDragDrop(hwnd.unwrap_or(core::mem::zeroed()) as _, pdata.param().abi(), pdsrc.param().abi(), dweffect, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn SHEmptyRecycleBinA<P1>(hwnd: Option<super::super::Foundation::HWND>, pszrootpath: P1, dwflags: u32) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHEmptyRecycleBinA(hwnd : super::super::Foundation:: HWND, pszrootpath : windows_core::PCSTR, dwflags : u32) -> windows_core::HRESULT);
    unsafe { SHEmptyRecycleBinA(hwnd.unwrap_or(core::mem::zeroed()) as _, pszrootpath.param().abi(), dwflags).ok() }
}
#[inline]
pub unsafe fn SHEmptyRecycleBinW<P1>(hwnd: Option<super::super::Foundation::HWND>, pszrootpath: P1, dwflags: u32) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHEmptyRecycleBinW(hwnd : super::super::Foundation:: HWND, pszrootpath : windows_core::PCWSTR, dwflags : u32) -> windows_core::HRESULT);
    unsafe { SHEmptyRecycleBinW(hwnd.unwrap_or(core::mem::zeroed()) as _, pszrootpath.param().abi(), dwflags).ok() }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHEnumKeyExA(hkey: super::super::System::Registry::HKEY, dwindex: u32, pszname: windows_core::PSTR, pcchname: *mut u32) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHEnumKeyExA(hkey : super::super::System::Registry:: HKEY, dwindex : u32, pszname : windows_core::PSTR, pcchname : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHEnumKeyExA(hkey, dwindex, core::mem::transmute(pszname), pcchname as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHEnumKeyExW(hkey: super::super::System::Registry::HKEY, dwindex: u32, pszname: windows_core::PWSTR, pcchname: *mut u32) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHEnumKeyExW(hkey : super::super::System::Registry:: HKEY, dwindex : u32, pszname : windows_core::PWSTR, pcchname : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHEnumKeyExW(hkey, dwindex, core::mem::transmute(pszname), pcchname as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHEnumValueA(hkey: super::super::System::Registry::HKEY, dwindex: u32, pszvaluename: Option<windows_core::PSTR>, pcchvaluename: Option<*mut u32>, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHEnumValueA(hkey : super::super::System::Registry:: HKEY, dwindex : u32, pszvaluename : windows_core::PSTR, pcchvaluename : *mut u32, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHEnumValueA(hkey, dwindex, pszvaluename.unwrap_or(core::mem::zeroed()) as _, pcchvaluename.unwrap_or(core::mem::zeroed()) as _, pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHEnumValueW(hkey: super::super::System::Registry::HKEY, dwindex: u32, pszvaluename: Option<windows_core::PWSTR>, pcchvaluename: Option<*mut u32>, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHEnumValueW(hkey : super::super::System::Registry:: HKEY, dwindex : u32, pszvaluename : windows_core::PWSTR, pcchvaluename : *mut u32, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHEnumValueW(hkey, dwindex, pszvaluename.unwrap_or(core::mem::zeroed()) as _, pcchvaluename.unwrap_or(core::mem::zeroed()) as _, pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHEnumerateUnreadMailAccountsW(hkeyuser: Option<super::super::System::Registry::HKEY>, dwindex: u32, pszmailaddress: &mut [u16]) -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn SHEnumerateUnreadMailAccountsW(hkeyuser : super::super::System::Registry:: HKEY, dwindex : u32, pszmailaddress : windows_core::PWSTR, cchmailaddress : i32) -> windows_core::HRESULT);
    unsafe { SHEnumerateUnreadMailAccountsW(hkeyuser.unwrap_or(core::mem::zeroed()) as _, dwindex, core::mem::transmute(pszmailaddress.as_ptr()), pszmailaddress.len().try_into().unwrap()).ok() }
}
#[inline]
pub unsafe fn SHEvaluateSystemCommandTemplate<P0>(pszcmdtemplate: P0, ppszapplication: *mut windows_core::PWSTR, ppszcommandline: Option<*mut windows_core::PWSTR>, ppszparameters: Option<*mut windows_core::PWSTR>) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHEvaluateSystemCommandTemplate(pszcmdtemplate : windows_core::PCWSTR, ppszapplication : *mut windows_core::PWSTR, ppszcommandline : *mut windows_core::PWSTR, ppszparameters : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe { SHEvaluateSystemCommandTemplate(pszcmdtemplate.param().abi(), ppszapplication as _, ppszcommandline.unwrap_or(core::mem::zeroed()) as _, ppszparameters.unwrap_or(core::mem::zeroed()) as _).ok() }
}
#[inline]
pub unsafe fn SHFileOperationA(lpfileop: *mut SHFILEOPSTRUCTA) -> i32 {
    windows_core::link!("shell32.dll" "system" fn SHFileOperationA(lpfileop : *mut SHFILEOPSTRUCTA) -> i32);
    unsafe { SHFileOperationA(lpfileop as _) }
}
#[inline]
pub unsafe fn SHFileOperationW(lpfileop: *mut SHFILEOPSTRUCTW) -> i32 {
    windows_core::link!("shell32.dll" "system" fn SHFileOperationW(lpfileop : *mut SHFILEOPSTRUCTW) -> i32);
    unsafe { SHFileOperationW(lpfileop as _) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHFindFiles(pidlfolder: Option<*const Common::ITEMIDLIST>, pidlsavefile: Option<*const Common::ITEMIDLIST>) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SHFindFiles(pidlfolder : *const Common:: ITEMIDLIST, pidlsavefile : *const Common:: ITEMIDLIST) -> windows_core::BOOL);
    unsafe { SHFindFiles(pidlfolder.unwrap_or(core::mem::zeroed()) as _, pidlsavefile.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn SHFind_InitMenuPopup(hmenu: super::WindowsAndMessaging::HMENU, hwndowner: Option<super::super::Foundation::HWND>, idcmdfirst: u32, idcmdlast: u32) -> Option<IContextMenu> {
    windows_core::link!("shell32.dll" "system" fn SHFind_InitMenuPopup(hmenu : super::WindowsAndMessaging:: HMENU, hwndowner : super::super::Foundation:: HWND, idcmdfirst : u32, idcmdlast : u32) -> Option < IContextMenu >);
    unsafe { SHFind_InitMenuPopup(hmenu, hwndowner.unwrap_or(core::mem::zeroed()) as _, idcmdfirst, idcmdlast) }
}
#[inline]
pub unsafe fn SHFlushSFCache() {
    windows_core::link!("shell32.dll" "system" fn SHFlushSFCache());
    unsafe { SHFlushSFCache() }
}
#[inline]
pub unsafe fn SHFormatDateTimeA(pft: *const super::super::Foundation::FILETIME, pdwflags: Option<*mut u32>, pszbuf: &mut [u8]) -> i32 {
    windows_core::link!("shlwapi.dll" "system" fn SHFormatDateTimeA(pft : *const super::super::Foundation:: FILETIME, pdwflags : *mut u32, pszbuf : windows_core::PSTR, cchbuf : u32) -> i32);
    unsafe { SHFormatDateTimeA(pft, pdwflags.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn SHFormatDateTimeW(pft: *const super::super::Foundation::FILETIME, pdwflags: Option<*mut u32>, pszbuf: &mut [u16]) -> i32 {
    windows_core::link!("shlwapi.dll" "system" fn SHFormatDateTimeW(pft : *const super::super::Foundation:: FILETIME, pdwflags : *mut u32, pszbuf : windows_core::PWSTR, cchbuf : u32) -> i32);
    unsafe { SHFormatDateTimeW(pft, pdwflags.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn SHFormatDrive(hwnd: super::super::Foundation::HWND, drive: u32, fmtid: SHFMT_ID, options: SHFMT_OPT) -> u32 {
    windows_core::link!("shell32.dll" "system" fn SHFormatDrive(hwnd : super::super::Foundation:: HWND, drive : u32, fmtid : SHFMT_ID, options : u32) -> u32);
    unsafe { SHFormatDrive(hwnd, drive, fmtid, options.0 as _) }
}
#[inline]
pub unsafe fn SHFree(pv: Option<*const core::ffi::c_void>) {
    windows_core::link!("shell32.dll" "system" fn SHFree(pv : *const core::ffi::c_void));
    unsafe { SHFree(pv.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHFreeNameMappings(hnamemappings: Option<super::super::Foundation::HANDLE>) {
    windows_core::link!("shell32.dll" "system" fn SHFreeNameMappings(hnamemappings : super::super::Foundation:: HANDLE));
    unsafe { SHFreeNameMappings(hnamemappings.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHFreeShared(hdata: super::super::Foundation::HANDLE, dwprocessid: u32) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn SHFreeShared(hdata : super::super::Foundation:: HANDLE, dwprocessid : u32) -> windows_core::BOOL);
    unsafe { SHFreeShared(hdata, dwprocessid).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHGetAttributesFromDataObject<P0>(pdo: P0, dwattributemask: u32, pdwattributes: Option<*mut u32>, pcitems: Option<*mut u32>) -> windows_core::HRESULT
where
    P0: windows_core::Param<super::super::System::Com::IDataObject>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetAttributesFromDataObject(pdo : * mut core::ffi::c_void, dwattributemask : u32, pdwattributes : *mut u32, pcitems : *mut u32) -> windows_core::HRESULT);
    unsafe { SHGetAttributesFromDataObject(pdo.param().abi(), dwattributemask, pdwattributes.unwrap_or(core::mem::zeroed()) as _, pcitems.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetDataFromIDListA<P0>(psf: P0, pidl: *const Common::ITEMIDLIST, nformat: SHGDFIL_FORMAT, pv: *mut core::ffi::c_void, cb: i32) -> windows_core::Result<()>
where
    P0: windows_core::Param<IShellFolder>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetDataFromIDListA(psf : * mut core::ffi::c_void, pidl : *const Common:: ITEMIDLIST, nformat : SHGDFIL_FORMAT, pv : *mut core::ffi::c_void, cb : i32) -> windows_core::HRESULT);
    unsafe { SHGetDataFromIDListA(psf.param().abi(), pidl, nformat, pv as _, cb).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetDataFromIDListW<P0>(psf: P0, pidl: *const Common::ITEMIDLIST, nformat: SHGDFIL_FORMAT, pv: *mut core::ffi::c_void, cb: i32) -> windows_core::Result<()>
where
    P0: windows_core::Param<IShellFolder>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetDataFromIDListW(psf : * mut core::ffi::c_void, pidl : *const Common:: ITEMIDLIST, nformat : SHGDFIL_FORMAT, pv : *mut core::ffi::c_void, cb : i32) -> windows_core::HRESULT);
    unsafe { SHGetDataFromIDListW(psf.param().abi(), pidl, nformat, pv as _, cb).ok() }
}
#[inline]
pub unsafe fn SHGetDesktopFolder() -> windows_core::Result<IShellFolder> {
    windows_core::link!("shell32.dll" "system" fn SHGetDesktopFolder(ppshf : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetDesktopFolder(&mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[inline]
pub unsafe fn SHGetDiskFreeSpaceExA<P0>(pszdirectoryname: P0, pulfreebytesavailabletocaller: Option<*mut u64>, pultotalnumberofbytes: Option<*mut u64>, pultotalnumberoffreebytes: Option<*mut u64>) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetDiskFreeSpaceExA(pszdirectoryname : windows_core::PCSTR, pulfreebytesavailabletocaller : *mut u64, pultotalnumberofbytes : *mut u64, pultotalnumberoffreebytes : *mut u64) -> windows_core::BOOL);
    unsafe { SHGetDiskFreeSpaceExA(pszdirectoryname.param().abi(), pulfreebytesavailabletocaller.unwrap_or(core::mem::zeroed()) as _, pultotalnumberofbytes.unwrap_or(core::mem::zeroed()) as _, pultotalnumberoffreebytes.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHGetDiskFreeSpaceExW<P0>(pszdirectoryname: P0, pulfreebytesavailabletocaller: Option<*mut u64>, pultotalnumberofbytes: Option<*mut u64>, pultotalnumberoffreebytes: Option<*mut u64>) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetDiskFreeSpaceExW(pszdirectoryname : windows_core::PCWSTR, pulfreebytesavailabletocaller : *mut u64, pultotalnumberofbytes : *mut u64, pultotalnumberoffreebytes : *mut u64) -> windows_core::BOOL);
    unsafe { SHGetDiskFreeSpaceExW(pszdirectoryname.param().abi(), pulfreebytesavailabletocaller.unwrap_or(core::mem::zeroed()) as _, pultotalnumberofbytes.unwrap_or(core::mem::zeroed()) as _, pultotalnumberoffreebytes.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHGetDriveMedia<P0>(pszdrive: P0) -> windows_core::Result<u32>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetDriveMedia(pszdrive : windows_core::PCWSTR, pdwmediacontent : *mut u32) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetDriveMedia(pszdrive.param().abi(), &mut result__).map(|| result__)
    }
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_WindowsAndMessaging"))]
#[inline]
pub unsafe fn SHGetFileInfoA<P0>(pszpath: P0, dwfileattributes: super::super::Storage::FileSystem::FILE_FLAGS_AND_ATTRIBUTES, psfi: Option<*mut SHFILEINFOA>, cbfileinfo: u32, uflags: SHGFI_FLAGS) -> usize
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetFileInfoA(pszpath : windows_core::PCSTR, dwfileattributes : super::super::Storage::FileSystem:: FILE_FLAGS_AND_ATTRIBUTES, psfi : *mut SHFILEINFOA, cbfileinfo : u32, uflags : SHGFI_FLAGS) -> usize);
    unsafe { SHGetFileInfoA(pszpath.param().abi(), dwfileattributes, psfi.unwrap_or(core::mem::zeroed()) as _, cbfileinfo, uflags) }
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_WindowsAndMessaging"))]
#[inline]
pub unsafe fn SHGetFileInfoW<P0>(pszpath: P0, dwfileattributes: super::super::Storage::FileSystem::FILE_FLAGS_AND_ATTRIBUTES, psfi: Option<*mut SHFILEINFOW>, cbfileinfo: u32, uflags: SHGFI_FLAGS) -> usize
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetFileInfoW(pszpath : windows_core::PCWSTR, dwfileattributes : super::super::Storage::FileSystem:: FILE_FLAGS_AND_ATTRIBUTES, psfi : *mut SHFILEINFOW, cbfileinfo : u32, uflags : SHGFI_FLAGS) -> usize);
    unsafe { SHGetFileInfoW(pszpath.param().abi(), dwfileattributes, psfi.unwrap_or(core::mem::zeroed()) as _, cbfileinfo, uflags) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetFolderLocation(hwnd: Option<super::super::Foundation::HWND>, csidl: i32, htoken: Option<super::super::Foundation::HANDLE>, dwflags: u32) -> windows_core::Result<*mut Common::ITEMIDLIST> {
    windows_core::link!("shell32.dll" "system" fn SHGetFolderLocation(hwnd : super::super::Foundation:: HWND, csidl : i32, htoken : super::super::Foundation:: HANDLE, dwflags : u32, ppidl : *mut *mut Common:: ITEMIDLIST) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetFolderLocation(hwnd.unwrap_or(core::mem::zeroed()) as _, csidl, htoken.unwrap_or(core::mem::zeroed()) as _, dwflags, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn SHGetFolderPathA(hwnd: Option<super::super::Foundation::HWND>, csidl: i32, htoken: Option<super::super::Foundation::HANDLE>, dwflags: u32, pszpath: &mut [u8; 260]) -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn SHGetFolderPathA(hwnd : super::super::Foundation:: HWND, csidl : i32, htoken : super::super::Foundation:: HANDLE, dwflags : u32, pszpath : windows_core::PSTR) -> windows_core::HRESULT);
    unsafe { SHGetFolderPathA(hwnd.unwrap_or(core::mem::zeroed()) as _, csidl, htoken.unwrap_or(core::mem::zeroed()) as _, dwflags, core::mem::transmute(pszpath.as_ptr())).ok() }
}
#[inline]
pub unsafe fn SHGetFolderPathAndSubDirA<P4>(hwnd: Option<super::super::Foundation::HWND>, csidl: i32, htoken: Option<super::super::Foundation::HANDLE>, dwflags: u32, pszsubdir: P4, pszpath: &mut [u8; 260]) -> windows_core::Result<()>
where
    P4: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetFolderPathAndSubDirA(hwnd : super::super::Foundation:: HWND, csidl : i32, htoken : super::super::Foundation:: HANDLE, dwflags : u32, pszsubdir : windows_core::PCSTR, pszpath : windows_core::PSTR) -> windows_core::HRESULT);
    unsafe { SHGetFolderPathAndSubDirA(hwnd.unwrap_or(core::mem::zeroed()) as _, csidl, htoken.unwrap_or(core::mem::zeroed()) as _, dwflags, pszsubdir.param().abi(), core::mem::transmute(pszpath.as_ptr())).ok() }
}
#[inline]
pub unsafe fn SHGetFolderPathAndSubDirW<P4>(hwnd: Option<super::super::Foundation::HWND>, csidl: i32, htoken: Option<super::super::Foundation::HANDLE>, dwflags: u32, pszsubdir: P4, pszpath: &mut [u16; 260]) -> windows_core::Result<()>
where
    P4: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetFolderPathAndSubDirW(hwnd : super::super::Foundation:: HWND, csidl : i32, htoken : super::super::Foundation:: HANDLE, dwflags : u32, pszsubdir : windows_core::PCWSTR, pszpath : windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe { SHGetFolderPathAndSubDirW(hwnd.unwrap_or(core::mem::zeroed()) as _, csidl, htoken.unwrap_or(core::mem::zeroed()) as _, dwflags, pszsubdir.param().abi(), core::mem::transmute(pszpath.as_ptr())).ok() }
}
#[inline]
pub unsafe fn SHGetFolderPathW(hwnd: Option<super::super::Foundation::HWND>, csidl: i32, htoken: Option<super::super::Foundation::HANDLE>, dwflags: u32, pszpath: &mut [u16; 260]) -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn SHGetFolderPathW(hwnd : super::super::Foundation:: HWND, csidl : i32, htoken : super::super::Foundation:: HANDLE, dwflags : u32, pszpath : windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe { SHGetFolderPathW(hwnd.unwrap_or(core::mem::zeroed()) as _, csidl, htoken.unwrap_or(core::mem::zeroed()) as _, dwflags, core::mem::transmute(pszpath.as_ptr())).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetIDListFromObject<P0>(punk: P0) -> windows_core::Result<*mut Common::ITEMIDLIST>
where
    P0: windows_core::Param<windows_core::IUnknown>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetIDListFromObject(punk : * mut core::ffi::c_void, ppidl : *mut *mut Common:: ITEMIDLIST) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetIDListFromObject(punk.param().abi(), &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn SHGetIconOverlayIndexA<P0>(psziconpath: P0, iiconindex: i32) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetIconOverlayIndexA(psziconpath : windows_core::PCSTR, iiconindex : i32) -> i32);
    unsafe { SHGetIconOverlayIndexA(psziconpath.param().abi(), iiconindex) }
}
#[inline]
pub unsafe fn SHGetIconOverlayIndexW<P0>(psziconpath: P0, iiconindex: i32) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetIconOverlayIndexW(psziconpath : windows_core::PCWSTR, iiconindex : i32) -> i32);
    unsafe { SHGetIconOverlayIndexW(psziconpath.param().abi(), iiconindex) }
}
#[inline]
pub unsafe fn SHGetImageList<T>(iimagelist: i32) -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHGetImageList(iimagelist : i32, riid : *const windows_core::GUID, ppvobj : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHGetImageList(iimagelist, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn SHGetInstanceExplorer() -> windows_core::Result<windows_core::IUnknown> {
    windows_core::link!("shell32.dll" "system" fn SHGetInstanceExplorer(ppunk : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetInstanceExplorer(&mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[inline]
pub unsafe fn SHGetInverseCMAP(pbmap: &mut [u8]) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn SHGetInverseCMAP(pbmap : *mut u8, cbmap : u32) -> windows_core::HRESULT);
    unsafe { SHGetInverseCMAP(core::mem::transmute(pbmap.as_ptr()), pbmap.len().try_into().unwrap()).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHGetItemFromDataObject<P0, T>(pdtobj: P0, dwflags: DATAOBJ_GET_ITEM_FLAGS) -> windows_core::Result<T>
where
    P0: windows_core::Param<super::super::System::Com::IDataObject>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHGetItemFromDataObject(pdtobj : * mut core::ffi::c_void, dwflags : DATAOBJ_GET_ITEM_FLAGS, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHGetItemFromDataObject(pdtobj.param().abi(), dwflags, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn SHGetItemFromObject<P0, T>(punk: P0) -> windows_core::Result<T>
where
    P0: windows_core::Param<windows_core::IUnknown>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHGetItemFromObject(punk : * mut core::ffi::c_void, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHGetItemFromObject(punk.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetKnownFolderIDList(rfid: *const windows_core::GUID, dwflags: u32, htoken: Option<super::super::Foundation::HANDLE>) -> windows_core::Result<*mut Common::ITEMIDLIST> {
    windows_core::link!("shell32.dll" "system" fn SHGetKnownFolderIDList(rfid : *const windows_core::GUID, dwflags : u32, htoken : super::super::Foundation:: HANDLE, ppidl : *mut *mut Common:: ITEMIDLIST) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetKnownFolderIDList(rfid, dwflags, htoken.unwrap_or(core::mem::zeroed()) as _, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn SHGetKnownFolderItem<T>(rfid: *const windows_core::GUID, flags: KNOWN_FOLDER_FLAG, htoken: Option<super::super::Foundation::HANDLE>) -> windows_core::Result<T>
where
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn SHGetKnownFolderItem(rfid : *const windows_core::GUID, flags : KNOWN_FOLDER_FLAG, htoken : super::super::Foundation:: HANDLE, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHGetKnownFolderItem(rfid, flags, htoken.unwrap_or(core::mem::zeroed()) as _, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn SHGetKnownFolderPath(rfid: *const windows_core::GUID, dwflags: KNOWN_FOLDER_FLAG, htoken: Option<super::super::Foundation::HANDLE>) -> windows_core::Result<windows_core::PWSTR> {
    windows_core::link!("shell32.dll" "system" fn SHGetKnownFolderPath(rfid : *const windows_core::GUID, dwflags : u32, htoken : super::super::Foundation:: HANDLE, ppszpath : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetKnownFolderPath(rfid, dwflags.0 as _, htoken.unwrap_or(core::mem::zeroed()) as _, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn SHGetLocalizedName<P0>(pszpath: P0, pszresmodule: &mut [u16], pidsres: *mut i32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetLocalizedName(pszpath : windows_core::PCWSTR, pszresmodule : windows_core::PWSTR, cch : u32, pidsres : *mut i32) -> windows_core::HRESULT);
    unsafe { SHGetLocalizedName(pszpath.param().abi(), core::mem::transmute(pszresmodule.as_ptr()), pszresmodule.len().try_into().unwrap(), pidsres as _).ok() }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHGetMalloc() -> windows_core::Result<super::super::System::Com::IMalloc> {
    windows_core::link!("shell32.dll" "system" fn SHGetMalloc(ppmalloc : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetMalloc(&mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetNameFromIDList(pidl: *const Common::ITEMIDLIST, sigdnname: SIGDN) -> windows_core::Result<windows_core::PWSTR> {
    windows_core::link!("shell32.dll" "system" fn SHGetNameFromIDList(pidl : *const Common:: ITEMIDLIST, sigdnname : SIGDN, ppszname : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetNameFromIDList(pidl, sigdnname, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn SHGetNewLinkInfoA<P0, P1>(pszlinkto: P0, pszdir: P1, pszname: &mut [u8; 260], pfmustcopy: *mut windows_core::BOOL, uflags: u32) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetNewLinkInfoA(pszlinkto : windows_core::PCSTR, pszdir : windows_core::PCSTR, pszname : windows_core::PSTR, pfmustcopy : *mut windows_core::BOOL, uflags : u32) -> windows_core::BOOL);
    unsafe { SHGetNewLinkInfoA(pszlinkto.param().abi(), pszdir.param().abi(), core::mem::transmute(pszname.as_ptr()), pfmustcopy as _, uflags) }
}
#[inline]
pub unsafe fn SHGetNewLinkInfoW<P0, P1>(pszlinkto: P0, pszdir: P1, pszname: &mut [u16; 260], pfmustcopy: *mut windows_core::BOOL, uflags: u32) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetNewLinkInfoW(pszlinkto : windows_core::PCWSTR, pszdir : windows_core::PCWSTR, pszname : windows_core::PWSTR, pfmustcopy : *mut windows_core::BOOL, uflags : u32) -> windows_core::BOOL);
    unsafe { SHGetNewLinkInfoW(pszlinkto.param().abi(), pszdir.param().abi(), core::mem::transmute(pszname.as_ptr()), pfmustcopy as _, uflags) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetPathFromIDListA(pidl: *const Common::ITEMIDLIST, pszpath: &mut [u8; 260]) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SHGetPathFromIDListA(pidl : *const Common:: ITEMIDLIST, pszpath : windows_core::PSTR) -> windows_core::BOOL);
    unsafe { SHGetPathFromIDListA(pidl, core::mem::transmute(pszpath.as_ptr())) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetPathFromIDListEx(pidl: *const Common::ITEMIDLIST, pszpath: &mut [u16], uopts: GPFIDL_FLAGS) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SHGetPathFromIDListEx(pidl : *const Common:: ITEMIDLIST, pszpath : windows_core::PWSTR, cchpath : u32, uopts : GPFIDL_FLAGS) -> windows_core::BOOL);
    unsafe { SHGetPathFromIDListEx(pidl, core::mem::transmute(pszpath.as_ptr()), pszpath.len().try_into().unwrap(), uopts) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetPathFromIDListW(pidl: *const Common::ITEMIDLIST, pszpath: &mut [u16; 260]) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SHGetPathFromIDListW(pidl : *const Common:: ITEMIDLIST, pszpath : windows_core::PWSTR) -> windows_core::BOOL);
    unsafe { SHGetPathFromIDListW(pidl, core::mem::transmute(pszpath.as_ptr())) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetRealIDL<P0>(psf: P0, pidlsimple: *const Common::ITEMIDLIST) -> windows_core::Result<*mut Common::ITEMIDLIST>
where
    P0: windows_core::Param<IShellFolder>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetRealIDL(psf : * mut core::ffi::c_void, pidlsimple : *const Common:: ITEMIDLIST, ppidlreal : *mut *mut Common:: ITEMIDLIST) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetRealIDL(psf.param().abi(), pidlsimple, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn SHGetSetFolderCustomSettings<P1>(pfcs: *mut SHFOLDERCUSTOMSETTINGS, pszpath: P1, dwreadwrite: u32) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetSetFolderCustomSettings(pfcs : *mut SHFOLDERCUSTOMSETTINGS, pszpath : windows_core::PCWSTR, dwreadwrite : u32) -> windows_core::HRESULT);
    unsafe { SHGetSetFolderCustomSettings(pfcs as _, pszpath.param().abi(), dwreadwrite).ok() }
}
#[inline]
pub unsafe fn SHGetSetSettings(lpss: Option<*mut SHELLSTATEA>, dwmask: SSF_MASK, bset: bool) {
    windows_core::link!("shell32.dll" "system" fn SHGetSetSettings(lpss : *mut SHELLSTATEA, dwmask : SSF_MASK, bset : windows_core::BOOL));
    unsafe { SHGetSetSettings(lpss.unwrap_or(core::mem::zeroed()) as _, dwmask, bset.into()) }
}
#[inline]
pub unsafe fn SHGetSettings(psfs: *mut SHELLFLAGSTATE, dwmask: u32) {
    windows_core::link!("shell32.dll" "system" fn SHGetSettings(psfs : *mut SHELLFLAGSTATE, dwmask : u32));
    unsafe { SHGetSettings(psfs as _, dwmask) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetSpecialFolderLocation(hwnd: Option<super::super::Foundation::HWND>, csidl: i32) -> windows_core::Result<*mut Common::ITEMIDLIST> {
    windows_core::link!("shell32.dll" "system" fn SHGetSpecialFolderLocation(hwnd : super::super::Foundation:: HWND, csidl : i32, ppidl : *mut *mut Common:: ITEMIDLIST) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetSpecialFolderLocation(hwnd.unwrap_or(core::mem::zeroed()) as _, csidl, &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn SHGetSpecialFolderPathA(hwnd: Option<super::super::Foundation::HWND>, pszpath: &mut [u8; 260], csidl: i32, fcreate: bool) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SHGetSpecialFolderPathA(hwnd : super::super::Foundation:: HWND, pszpath : windows_core::PSTR, csidl : i32, fcreate : windows_core::BOOL) -> windows_core::BOOL);
    unsafe { SHGetSpecialFolderPathA(hwnd.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszpath.as_ptr()), csidl, fcreate.into()) }
}
#[inline]
pub unsafe fn SHGetSpecialFolderPathW(hwnd: Option<super::super::Foundation::HWND>, pszpath: &mut [u16; 260], csidl: i32, fcreate: bool) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SHGetSpecialFolderPathW(hwnd : super::super::Foundation:: HWND, pszpath : windows_core::PWSTR, csidl : i32, fcreate : windows_core::BOOL) -> windows_core::BOOL);
    unsafe { SHGetSpecialFolderPathW(hwnd.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszpath.as_ptr()), csidl, fcreate.into()) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn SHGetStockIconInfo(siid: SHSTOCKICONID, uflags: SHGSI_FLAGS, psii: *mut SHSTOCKICONINFO) -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn SHGetStockIconInfo(siid : SHSTOCKICONID, uflags : SHGSI_FLAGS, psii : *mut SHSTOCKICONINFO) -> windows_core::HRESULT);
    unsafe { SHGetStockIconInfo(siid, uflags, psii as _).ok() }
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
#[inline]
pub unsafe fn SHGetTemporaryPropertyForItem<P0>(psi: P0, propkey: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Com::StructuredStorage::PROPVARIANT>
where
    P0: windows_core::Param<IShellItem>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetTemporaryPropertyForItem(psi : * mut core::ffi::c_void, propkey : *const super::super::Foundation:: PROPERTYKEY, ppropvar : *mut super::super::System::Com::StructuredStorage:: PROPVARIANT) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetTemporaryPropertyForItem(psi.param().abi(), propkey, &mut result__).map(|| core::mem::transmute(result__))
    }
}
#[inline]
pub unsafe fn SHGetThreadRef() -> windows_core::Result<windows_core::IUnknown> {
    windows_core::link!("shlwapi.dll" "system" fn SHGetThreadRef(ppunk : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHGetThreadRef(&mut result__).and_then(|| windows_core::Type::from_abi(result__))
    }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHGetUnreadMailCountW<P1>(hkeyuser: Option<super::super::System::Registry::HKEY>, pszmailaddress: P1, pdwcount: Option<*mut u32>, pfiletime: Option<*mut super::super::Foundation::FILETIME>, pszshellexecutecommand: Option<&mut [u16]>) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHGetUnreadMailCountW(hkeyuser : super::super::System::Registry:: HKEY, pszmailaddress : windows_core::PCWSTR, pdwcount : *mut u32, pfiletime : *mut super::super::Foundation:: FILETIME, pszshellexecutecommand : windows_core::PWSTR, cchshellexecutecommand : i32) -> windows_core::HRESULT);
    unsafe { SHGetUnreadMailCountW(hkeyuser.unwrap_or(core::mem::zeroed()) as _, pszmailaddress.param().abi(), pdwcount.unwrap_or(core::mem::zeroed()) as _, pfiletime.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszshellexecutecommand.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), pszshellexecutecommand.as_deref().map_or(0, |slice| slice.len().try_into().unwrap())).ok() }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHGetValueA<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHGetValueA(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCSTR, pszvalue : windows_core::PCSTR, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHGetValueA(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHGetValueW<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHGetValueW(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCWSTR, pszvalue : windows_core::PCWSTR, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHGetValueW(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHGetViewStatePropertyBag<P1, T>(pidl: Option<*const Common::ITEMIDLIST>, pszbagname: P1, dwflags: u32) -> windows_core::Result<T>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    T: windows_core::Interface,
{
    windows_core::link!("shlwapi.dll" "system" fn SHGetViewStatePropertyBag(pidl : *const Common:: ITEMIDLIST, pszbagname : windows_core::PCWSTR, dwflags : u32, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { SHGetViewStatePropertyBag(pidl.unwrap_or(core::mem::zeroed()) as _, pszbagname.param().abi(), dwflags, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn SHGlobalCounterDecrement(id: SHGLOBALCOUNTER) -> i32 {
    windows_core::link!("shlwapi.dll" "system" fn SHGlobalCounterDecrement(id : SHGLOBALCOUNTER) -> i32);
    unsafe { SHGlobalCounterDecrement(id) }
}
#[inline]
pub unsafe fn SHGlobalCounterGetValue(id: SHGLOBALCOUNTER) -> i32 {
    windows_core::link!("shlwapi.dll" "system" fn SHGlobalCounterGetValue(id : SHGLOBALCOUNTER) -> i32);
    unsafe { SHGlobalCounterGetValue(id) }
}
#[inline]
pub unsafe fn SHGlobalCounterIncrement(id: SHGLOBALCOUNTER) -> i32 {
    windows_core::link!("shlwapi.dll" "system" fn SHGlobalCounterIncrement(id : SHGLOBALCOUNTER) -> i32);
    unsafe { SHGlobalCounterIncrement(id) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHHandleUpdateImage(pidlextra: *const Common::ITEMIDLIST) -> i32 {
    windows_core::link!("shell32.dll" "system" fn SHHandleUpdateImage(pidlextra : *const Common:: ITEMIDLIST) -> i32);
    unsafe { SHHandleUpdateImage(pidlextra) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHILCreateFromPath<P0>(pszpath: P0, ppidl: *mut *mut Common::ITEMIDLIST, rgfinout: Option<*mut u32>) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHILCreateFromPath(pszpath : windows_core::PCWSTR, ppidl : *mut *mut Common:: ITEMIDLIST, rgfinout : *mut u32) -> windows_core::HRESULT);
    unsafe { SHILCreateFromPath(pszpath.param().abi(), ppidl as _, rgfinout.unwrap_or(core::mem::zeroed()) as _).ok() }
}
#[inline]
pub unsafe fn SHInvokePrinterCommandA<P2, P3>(hwnd: Option<super::super::Foundation::HWND>, uaction: u32, lpbuf1: P2, lpbuf2: P3, fmodal: bool) -> windows_core::BOOL
where
    P2: windows_core::Param<windows_core::PCSTR>,
    P3: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHInvokePrinterCommandA(hwnd : super::super::Foundation:: HWND, uaction : u32, lpbuf1 : windows_core::PCSTR, lpbuf2 : windows_core::PCSTR, fmodal : windows_core::BOOL) -> windows_core::BOOL);
    unsafe { SHInvokePrinterCommandA(hwnd.unwrap_or(core::mem::zeroed()) as _, uaction, lpbuf1.param().abi(), lpbuf2.param().abi(), fmodal.into()) }
}
#[inline]
pub unsafe fn SHInvokePrinterCommandW<P2, P3>(hwnd: Option<super::super::Foundation::HWND>, uaction: u32, lpbuf1: P2, lpbuf2: P3, fmodal: bool) -> windows_core::BOOL
where
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHInvokePrinterCommandW(hwnd : super::super::Foundation:: HWND, uaction : u32, lpbuf1 : windows_core::PCWSTR, lpbuf2 : windows_core::PCWSTR, fmodal : windows_core::BOOL) -> windows_core::BOOL);
    unsafe { SHInvokePrinterCommandW(hwnd.unwrap_or(core::mem::zeroed()) as _, uaction, lpbuf1.param().abi(), lpbuf2.param().abi(), fmodal.into()) }
}
#[inline]
pub unsafe fn SHIsFileAvailableOffline<P0>(pwszpath: P0, pdwstatus: Option<*mut u32>) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHIsFileAvailableOffline(pwszpath : windows_core::PCWSTR, pdwstatus : *mut u32) -> windows_core::HRESULT);
    unsafe { SHIsFileAvailableOffline(pwszpath.param().abi(), pdwstatus.unwrap_or(core::mem::zeroed()) as _).ok() }
}
#[inline]
pub unsafe fn SHIsLowMemoryMachine(dwtype: u32) -> windows_core::BOOL {
    windows_core::link!("shlwapi.dll" "system" fn SHIsLowMemoryMachine(dwtype : u32) -> windows_core::BOOL);
    unsafe { SHIsLowMemoryMachine(dwtype) }
}
#[inline]
pub unsafe fn SHLimitInputEdit<P1>(hwndedit: super::super::Foundation::HWND, psf: P1) -> windows_core::Result<()>
where
    P1: windows_core::Param<IShellFolder>,
{
    windows_core::link!("shell32.dll" "system" fn SHLimitInputEdit(hwndedit : super::super::Foundation:: HWND, psf : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { SHLimitInputEdit(hwndedit, psf.param().abi()).ok() }
}
#[inline]
pub unsafe fn SHLoadInProc(rclsid: *const windows_core::GUID) -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn SHLoadInProc(rclsid : *const windows_core::GUID) -> windows_core::HRESULT);
    unsafe { SHLoadInProc(rclsid).ok() }
}
#[inline]
pub unsafe fn SHLoadIndirectString<P0>(pszsource: P0, pszoutbuf: &mut [u16], ppvreserved: Option<*const *const core::ffi::c_void>) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHLoadIndirectString(pszsource : windows_core::PCWSTR, pszoutbuf : windows_core::PWSTR, cchoutbuf : u32, ppvreserved : *const *const core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { SHLoadIndirectString(pszsource.param().abi(), core::mem::transmute(pszoutbuf.as_ptr()), pszoutbuf.len().try_into().unwrap(), ppvreserved.unwrap_or(core::mem::zeroed()) as _).ok() }
}
#[inline]
pub unsafe fn SHLoadNonloadedIconOverlayIdentifiers() -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn SHLoadNonloadedIconOverlayIdentifiers() -> windows_core::HRESULT);
    unsafe { SHLoadNonloadedIconOverlayIdentifiers().ok() }
}
#[inline]
pub unsafe fn SHLockShared(hdata: super::super::Foundation::HANDLE, dwprocessid: u32) -> *mut core::ffi::c_void {
    windows_core::link!("shlwapi.dll" "system" fn SHLockShared(hdata : super::super::Foundation:: HANDLE, dwprocessid : u32) -> *mut core::ffi::c_void);
    unsafe { SHLockShared(hdata, dwprocessid) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHMapPIDLToSystemImageListIndex<P0>(pshf: P0, pidl: *const Common::ITEMIDLIST, piindexsel: Option<*mut i32>) -> i32
where
    P0: windows_core::Param<IShellFolder>,
{
    windows_core::link!("shell32.dll" "system" fn SHMapPIDLToSystemImageListIndex(pshf : * mut core::ffi::c_void, pidl : *const Common:: ITEMIDLIST, piindexsel : *mut i32) -> i32);
    unsafe { SHMapPIDLToSystemImageListIndex(pshf.param().abi(), pidl, piindexsel.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHMessageBoxCheckA<P1, P2, P5>(hwnd: Option<super::super::Foundation::HWND>, psztext: P1, pszcaption: P2, utype: u32, idefault: i32, pszregval: P5) -> i32
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
    P5: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHMessageBoxCheckA(hwnd : super::super::Foundation:: HWND, psztext : windows_core::PCSTR, pszcaption : windows_core::PCSTR, utype : u32, idefault : i32, pszregval : windows_core::PCSTR) -> i32);
    unsafe { SHMessageBoxCheckA(hwnd.unwrap_or(core::mem::zeroed()) as _, psztext.param().abi(), pszcaption.param().abi(), utype, idefault, pszregval.param().abi()) }
}
#[inline]
pub unsafe fn SHMessageBoxCheckW<P1, P2, P5>(hwnd: Option<super::super::Foundation::HWND>, psztext: P1, pszcaption: P2, utype: u32, idefault: i32, pszregval: P5) -> i32
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P5: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHMessageBoxCheckW(hwnd : super::super::Foundation:: HWND, psztext : windows_core::PCWSTR, pszcaption : windows_core::PCWSTR, utype : u32, idefault : i32, pszregval : windows_core::PCWSTR) -> i32);
    unsafe { SHMessageBoxCheckW(hwnd.unwrap_or(core::mem::zeroed()) as _, psztext.param().abi(), pszcaption.param().abi(), utype, idefault, pszregval.param().abi()) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHMultiFileProperties<P0>(pdtobj: P0, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<super::super::System::Com::IDataObject>,
{
    windows_core::link!("shell32.dll" "system" fn SHMultiFileProperties(pdtobj : * mut core::ffi::c_void, dwflags : u32) -> windows_core::HRESULT);
    unsafe { SHMultiFileProperties(pdtobj.param().abi(), dwflags).ok() }
}
#[inline]
pub unsafe fn SHObjectProperties<P2, P3>(hwnd: Option<super::super::Foundation::HWND>, shopobjecttype: SHOP_TYPE, pszobjectname: P2, pszpropertypage: P3) -> windows_core::BOOL
where
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHObjectProperties(hwnd : super::super::Foundation:: HWND, shopobjecttype : u32, pszobjectname : windows_core::PCWSTR, pszpropertypage : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { SHObjectProperties(hwnd.unwrap_or(core::mem::zeroed()) as _, shopobjecttype.0 as _, pszobjectname.param().abi(), pszpropertypage.param().abi()) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHOpenFolderAndSelectItems(pidlfolder: *const Common::ITEMIDLIST, apidl: Option<&[*const Common::ITEMIDLIST]>, dwflags: u32) -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn SHOpenFolderAndSelectItems(pidlfolder : *const Common:: ITEMIDLIST, cidl : u32, apidl : *const *const Common:: ITEMIDLIST, dwflags : u32) -> windows_core::HRESULT);
    unsafe { SHOpenFolderAndSelectItems(pidlfolder, apidl.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(apidl.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), dwflags).ok() }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Registry"))]
#[inline]
pub unsafe fn SHOpenPropSheetW<P0, P4, P5, P6>(pszcaption: P0, ahkeys: Option<&[super::super::System::Registry::HKEY]>, pclsiddefault: Option<*const windows_core::GUID>, pdtobj: P4, psb: P5, pstartpage: P6) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P4: windows_core::Param<super::super::System::Com::IDataObject>,
    P5: windows_core::Param<IShellBrowser>,
    P6: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHOpenPropSheetW(pszcaption : windows_core::PCWSTR, ahkeys : *const super::super::System::Registry:: HKEY, ckeys : u32, pclsiddefault : *const windows_core::GUID, pdtobj : * mut core::ffi::c_void, psb : * mut core::ffi::c_void, pstartpage : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { SHOpenPropSheetW(pszcaption.param().abi(), core::mem::transmute(ahkeys.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), ahkeys.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), pclsiddefault.unwrap_or(core::mem::zeroed()) as _, pdtobj.param().abi(), psb.param().abi(), pstartpage.param().abi()) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry"))]
#[inline]
pub unsafe fn SHOpenRegStream2A<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, grfmode: u32) -> Option<super::super::System::Com::IStream>
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHOpenRegStream2A(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCSTR, pszvalue : windows_core::PCSTR, grfmode : u32) -> Option < super::super::System::Com:: IStream >);
    unsafe { SHOpenRegStream2A(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), grfmode) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry"))]
#[inline]
pub unsafe fn SHOpenRegStream2W<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, grfmode: u32) -> Option<super::super::System::Com::IStream>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHOpenRegStream2W(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCWSTR, pszvalue : windows_core::PCWSTR, grfmode : u32) -> Option < super::super::System::Com:: IStream >);
    unsafe { SHOpenRegStream2W(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), grfmode) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry"))]
#[inline]
pub unsafe fn SHOpenRegStreamA<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, grfmode: u32) -> Option<super::super::System::Com::IStream>
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHOpenRegStreamA(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCSTR, pszvalue : windows_core::PCSTR, grfmode : u32) -> Option < super::super::System::Com:: IStream >);
    unsafe { SHOpenRegStreamA(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), grfmode) }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry"))]
#[inline]
pub unsafe fn SHOpenRegStreamW<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, grfmode: u32) -> Option<super::super::System::Com::IStream>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHOpenRegStreamW(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCWSTR, pszvalue : windows_core::PCWSTR, grfmode : u32) -> Option < super::super::System::Com:: IStream >);
    unsafe { SHOpenRegStreamW(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), grfmode) }
}
#[inline]
pub unsafe fn SHOpenWithDialog(hwndparent: Option<super::super::Foundation::HWND>, poainfo: *const OPENASINFO) -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn SHOpenWithDialog(hwndparent : super::super::Foundation:: HWND, poainfo : *const OPENASINFO) -> windows_core::HRESULT);
    unsafe { SHOpenWithDialog(hwndparent.unwrap_or(core::mem::zeroed()) as _, poainfo).ok() }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn SHParseDisplayName<P0, P1>(pszname: P0, pbc: P1, ppidl: *mut *mut Common::ITEMIDLIST, sfgaoin: u32, psfgaoout: Option<*mut u32>) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<super::super::System::Com::IBindCtx>,
{
    windows_core::link!("shell32.dll" "system" fn SHParseDisplayName(pszname : windows_core::PCWSTR, pbc : * mut core::ffi::c_void, ppidl : *mut *mut Common:: ITEMIDLIST, sfgaoin : u32, psfgaoout : *mut u32) -> windows_core::HRESULT);
    unsafe { SHParseDisplayName(pszname.param().abi(), pbc.param().abi(), ppidl as _, sfgaoin, psfgaoout.unwrap_or(core::mem::zeroed()) as _).ok() }
}
#[inline]
pub unsafe fn SHPathPrepareForWriteA<P1, P2>(hwnd: Option<super::super::Foundation::HWND>, punkenablemodless: P1, pszpath: P2, dwflags: u32) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::IUnknown>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHPathPrepareForWriteA(hwnd : super::super::Foundation:: HWND, punkenablemodless : * mut core::ffi::c_void, pszpath : windows_core::PCSTR, dwflags : u32) -> windows_core::HRESULT);
    unsafe { SHPathPrepareForWriteA(hwnd.unwrap_or(core::mem::zeroed()) as _, punkenablemodless.param().abi(), pszpath.param().abi(), dwflags).ok() }
}
#[inline]
pub unsafe fn SHPathPrepareForWriteW<P1, P2>(hwnd: Option<super::super::Foundation::HWND>, punkenablemodless: P1, pszpath: P2, dwflags: u32) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::IUnknown>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHPathPrepareForWriteW(hwnd : super::super::Foundation:: HWND, punkenablemodless : * mut core::ffi::c_void, pszpath : windows_core::PCWSTR, dwflags : u32) -> windows_core::HRESULT);
    unsafe { SHPathPrepareForWriteW(hwnd.unwrap_or(core::mem::zeroed()) as _, punkenablemodless.param().abi(), pszpath.param().abi(), dwflags).ok() }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHQueryInfoKeyA(hkey: super::super::System::Registry::HKEY, pcsubkeys: Option<*mut u32>, pcchmaxsubkeylen: Option<*mut u32>, pcvalues: Option<*mut u32>, pcchmaxvaluenamelen: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHQueryInfoKeyA(hkey : super::super::System::Registry:: HKEY, pcsubkeys : *mut u32, pcchmaxsubkeylen : *mut u32, pcvalues : *mut u32, pcchmaxvaluenamelen : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHQueryInfoKeyA(hkey, pcsubkeys.unwrap_or(core::mem::zeroed()) as _, pcchmaxsubkeylen.unwrap_or(core::mem::zeroed()) as _, pcvalues.unwrap_or(core::mem::zeroed()) as _, pcchmaxvaluenamelen.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHQueryInfoKeyW(hkey: super::super::System::Registry::HKEY, pcsubkeys: Option<*mut u32>, pcchmaxsubkeylen: Option<*mut u32>, pcvalues: Option<*mut u32>, pcchmaxvaluenamelen: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHQueryInfoKeyW(hkey : super::super::System::Registry:: HKEY, pcsubkeys : *mut u32, pcchmaxsubkeylen : *mut u32, pcvalues : *mut u32, pcchmaxvaluenamelen : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHQueryInfoKeyW(hkey, pcsubkeys.unwrap_or(core::mem::zeroed()) as _, pcchmaxsubkeylen.unwrap_or(core::mem::zeroed()) as _, pcvalues.unwrap_or(core::mem::zeroed()) as _, pcchmaxvaluenamelen.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHQueryRecycleBinA<P0>(pszrootpath: P0, pshqueryrbinfo: *mut SHQUERYRBINFO) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHQueryRecycleBinA(pszrootpath : windows_core::PCSTR, pshqueryrbinfo : *mut SHQUERYRBINFO) -> windows_core::HRESULT);
    unsafe { SHQueryRecycleBinA(pszrootpath.param().abi(), pshqueryrbinfo as _).ok() }
}
#[inline]
pub unsafe fn SHQueryRecycleBinW<P0>(pszrootpath: P0, pshqueryrbinfo: *mut SHQUERYRBINFO) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHQueryRecycleBinW(pszrootpath : windows_core::PCWSTR, pshqueryrbinfo : *mut SHQUERYRBINFO) -> windows_core::HRESULT);
    unsafe { SHQueryRecycleBinW(pszrootpath.param().abi(), pshqueryrbinfo as _).ok() }
}
#[inline]
pub unsafe fn SHQueryUserNotificationState() -> windows_core::Result<QUERY_USER_NOTIFICATION_STATE> {
    windows_core::link!("shell32.dll" "system" fn SHQueryUserNotificationState(pquns : *mut QUERY_USER_NOTIFICATION_STATE) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHQueryUserNotificationState(&mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHQueryValueExA<P1>(hkey: super::super::System::Registry::HKEY, pszvalue: P1, pdwreserved: Option<*const u32>, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHQueryValueExA(hkey : super::super::System::Registry:: HKEY, pszvalue : windows_core::PCSTR, pdwreserved : *const u32, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHQueryValueExA(hkey, pszvalue.param().abi(), pdwreserved.unwrap_or(core::mem::zeroed()) as _, pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHQueryValueExW<P1>(hkey: super::super::System::Registry::HKEY, pszvalue: P1, pdwreserved: Option<*const u32>, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHQueryValueExW(hkey : super::super::System::Registry:: HKEY, pszvalue : windows_core::PCWSTR, pdwreserved : *const u32, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHQueryValueExW(hkey, pszvalue.param().abi(), pdwreserved.unwrap_or(core::mem::zeroed()) as _, pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHRegCloseUSKey(huskey: isize) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHRegCloseUSKey(huskey : isize) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegCloseUSKey(huskey) }
}
#[inline]
pub unsafe fn SHRegCreateUSKeyA<P0>(pszpath: P0, samdesired: u32, hrelativeuskey: Option<isize>, phnewuskey: *mut isize, dwflags: u32) -> super::super::Foundation::WIN32_ERROR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegCreateUSKeyA(pszpath : windows_core::PCSTR, samdesired : u32, hrelativeuskey : isize, phnewuskey : *mut isize, dwflags : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegCreateUSKeyA(pszpath.param().abi(), samdesired, hrelativeuskey.unwrap_or(core::mem::zeroed()) as _, phnewuskey as _, dwflags) }
}
#[inline]
pub unsafe fn SHRegCreateUSKeyW<P0>(pwzpath: P0, samdesired: u32, hrelativeuskey: Option<isize>, phnewuskey: *mut isize, dwflags: u32) -> super::super::Foundation::WIN32_ERROR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegCreateUSKeyW(pwzpath : windows_core::PCWSTR, samdesired : u32, hrelativeuskey : isize, phnewuskey : *mut isize, dwflags : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegCreateUSKeyW(pwzpath.param().abi(), samdesired, hrelativeuskey.unwrap_or(core::mem::zeroed()) as _, phnewuskey as _, dwflags) }
}
#[inline]
pub unsafe fn SHRegDeleteEmptyUSKeyA<P1>(huskey: isize, pszsubkey: P1, delregflags: SHREGDEL_FLAGS) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegDeleteEmptyUSKeyA(huskey : isize, pszsubkey : windows_core::PCSTR, delregflags : SHREGDEL_FLAGS) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegDeleteEmptyUSKeyA(huskey, pszsubkey.param().abi(), delregflags) }
}
#[inline]
pub unsafe fn SHRegDeleteEmptyUSKeyW<P1>(huskey: isize, pwzsubkey: P1, delregflags: SHREGDEL_FLAGS) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegDeleteEmptyUSKeyW(huskey : isize, pwzsubkey : windows_core::PCWSTR, delregflags : SHREGDEL_FLAGS) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegDeleteEmptyUSKeyW(huskey, pwzsubkey.param().abi(), delregflags) }
}
#[inline]
pub unsafe fn SHRegDeleteUSValueA<P1>(huskey: isize, pszvalue: P1, delregflags: SHREGDEL_FLAGS) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegDeleteUSValueA(huskey : isize, pszvalue : windows_core::PCSTR, delregflags : SHREGDEL_FLAGS) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegDeleteUSValueA(huskey, pszvalue.param().abi(), delregflags) }
}
#[inline]
pub unsafe fn SHRegDeleteUSValueW<P1>(huskey: isize, pwzvalue: P1, delregflags: SHREGDEL_FLAGS) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegDeleteUSValueW(huskey : isize, pwzvalue : windows_core::PCWSTR, delregflags : SHREGDEL_FLAGS) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegDeleteUSValueW(huskey, pwzvalue.param().abi(), delregflags) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHRegDuplicateHKey(hkey: super::super::System::Registry::HKEY) -> super::super::System::Registry::HKEY {
    windows_core::link!("shlwapi.dll" "system" fn SHRegDuplicateHKey(hkey : super::super::System::Registry:: HKEY) -> super::super::System::Registry:: HKEY);
    unsafe { SHRegDuplicateHKey(hkey) }
}
#[inline]
pub unsafe fn SHRegEnumUSKeyA(huskey: isize, dwindex: u32, pszname: windows_core::PSTR, pcchname: *mut u32, enumregflags: SHREGENUM_FLAGS) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHRegEnumUSKeyA(huskey : isize, dwindex : u32, pszname : windows_core::PSTR, pcchname : *mut u32, enumregflags : SHREGENUM_FLAGS) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegEnumUSKeyA(huskey, dwindex, core::mem::transmute(pszname), pcchname as _, enumregflags) }
}
#[inline]
pub unsafe fn SHRegEnumUSKeyW(huskey: isize, dwindex: u32, pwzname: windows_core::PWSTR, pcchname: *mut u32, enumregflags: SHREGENUM_FLAGS) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHRegEnumUSKeyW(huskey : isize, dwindex : u32, pwzname : windows_core::PWSTR, pcchname : *mut u32, enumregflags : SHREGENUM_FLAGS) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegEnumUSKeyW(huskey, dwindex, core::mem::transmute(pwzname), pcchname as _, enumregflags) }
}
#[inline]
pub unsafe fn SHRegEnumUSValueA(huskey: isize, dwindex: u32, pszvaluename: windows_core::PSTR, pcchvaluename: *mut u32, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>, enumregflags: SHREGENUM_FLAGS) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHRegEnumUSValueA(huskey : isize, dwindex : u32, pszvaluename : windows_core::PSTR, pcchvaluename : *mut u32, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32, enumregflags : SHREGENUM_FLAGS) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegEnumUSValueA(huskey, dwindex, core::mem::transmute(pszvaluename), pcchvaluename as _, pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _, enumregflags) }
}
#[inline]
pub unsafe fn SHRegEnumUSValueW(huskey: isize, dwindex: u32, pszvaluename: windows_core::PWSTR, pcchvaluename: *mut u32, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>, enumregflags: SHREGENUM_FLAGS) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHRegEnumUSValueW(huskey : isize, dwindex : u32, pszvaluename : windows_core::PWSTR, pcchvaluename : *mut u32, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32, enumregflags : SHREGENUM_FLAGS) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegEnumUSValueW(huskey, dwindex, core::mem::transmute(pszvaluename), pcchvaluename as _, pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _, enumregflags) }
}
#[inline]
pub unsafe fn SHRegGetBoolUSValueA<P0, P1>(pszsubkey: P0, pszvalue: P1, fignorehkcu: bool, fdefault: bool) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegGetBoolUSValueA(pszsubkey : windows_core::PCSTR, pszvalue : windows_core::PCSTR, fignorehkcu : windows_core::BOOL, fdefault : windows_core::BOOL) -> windows_core::BOOL);
    unsafe { SHRegGetBoolUSValueA(pszsubkey.param().abi(), pszvalue.param().abi(), fignorehkcu.into(), fdefault.into()) }
}
#[inline]
pub unsafe fn SHRegGetBoolUSValueW<P0, P1>(pszsubkey: P0, pszvalue: P1, fignorehkcu: bool, fdefault: bool) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegGetBoolUSValueW(pszsubkey : windows_core::PCWSTR, pszvalue : windows_core::PCWSTR, fignorehkcu : windows_core::BOOL, fdefault : windows_core::BOOL) -> windows_core::BOOL);
    unsafe { SHRegGetBoolUSValueW(pszsubkey.param().abi(), pszvalue.param().abi(), fignorehkcu.into(), fdefault.into()) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHRegGetIntW<P1>(hk: super::super::System::Registry::HKEY, pwzkey: P1, idefault: i32) -> i32
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegGetIntW(hk : super::super::System::Registry:: HKEY, pwzkey : windows_core::PCWSTR, idefault : i32) -> i32);
    unsafe { SHRegGetIntW(hk, pwzkey.param().abi(), idefault) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHRegGetPathA<P1, P2>(hkey: super::super::System::Registry::HKEY, pcszsubkey: P1, pcszvalue: P2, pszpath: &mut [u8; 260], dwflags: u32) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegGetPathA(hkey : super::super::System::Registry:: HKEY, pcszsubkey : windows_core::PCSTR, pcszvalue : windows_core::PCSTR, pszpath : windows_core::PSTR, dwflags : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegGetPathA(hkey, pcszsubkey.param().abi(), pcszvalue.param().abi(), core::mem::transmute(pszpath.as_ptr()), dwflags) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHRegGetPathW<P1, P2>(hkey: super::super::System::Registry::HKEY, pcszsubkey: P1, pcszvalue: P2, pszpath: &mut [u16; 260], dwflags: u32) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegGetPathW(hkey : super::super::System::Registry:: HKEY, pcszsubkey : windows_core::PCWSTR, pcszvalue : windows_core::PCWSTR, pszpath : windows_core::PWSTR, dwflags : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegGetPathW(hkey, pcszsubkey.param().abi(), pcszvalue.param().abi(), core::mem::transmute(pszpath.as_ptr()), dwflags) }
}
#[inline]
pub unsafe fn SHRegGetUSValueA<P0, P1>(pszsubkey: P0, pszvalue: P1, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>, fignorehkcu: bool, pvdefaultdata: Option<*const core::ffi::c_void>, dwdefaultdatasize: u32) -> super::super::Foundation::WIN32_ERROR
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegGetUSValueA(pszsubkey : windows_core::PCSTR, pszvalue : windows_core::PCSTR, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32, fignorehkcu : windows_core::BOOL, pvdefaultdata : *const core::ffi::c_void, dwdefaultdatasize : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegGetUSValueA(pszsubkey.param().abi(), pszvalue.param().abi(), pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _, fignorehkcu.into(), pvdefaultdata.unwrap_or(core::mem::zeroed()) as _, dwdefaultdatasize) }
}
#[inline]
pub unsafe fn SHRegGetUSValueW<P0, P1>(pszsubkey: P0, pszvalue: P1, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>, fignorehkcu: bool, pvdefaultdata: Option<*const core::ffi::c_void>, dwdefaultdatasize: u32) -> super::super::Foundation::WIN32_ERROR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegGetUSValueW(pszsubkey : windows_core::PCWSTR, pszvalue : windows_core::PCWSTR, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32, fignorehkcu : windows_core::BOOL, pvdefaultdata : *const core::ffi::c_void, dwdefaultdatasize : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegGetUSValueW(pszsubkey.param().abi(), pszvalue.param().abi(), pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _, fignorehkcu.into(), pvdefaultdata.unwrap_or(core::mem::zeroed()) as _, dwdefaultdatasize) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHRegGetValueA<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, srrfflags: i32, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegGetValueA(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCSTR, pszvalue : windows_core::PCSTR, srrfflags : i32, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegGetValueA(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), srrfflags, pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHRegGetValueFromHKCUHKLM<P0, P1>(pwszkey: P0, pwszvalue: P1, srrfflags: i32, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegGetValueFromHKCUHKLM(pwszkey : windows_core::PCWSTR, pwszvalue : windows_core::PCWSTR, srrfflags : i32, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegGetValueFromHKCUHKLM(pwszkey.param().abi(), pwszvalue.param().abi(), srrfflags, pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHRegGetValueW<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, srrfflags: i32, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegGetValueW(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCWSTR, pszvalue : windows_core::PCWSTR, srrfflags : i32, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegGetValueW(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), srrfflags, pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHRegOpenUSKeyA<P0>(pszpath: P0, samdesired: u32, hrelativeuskey: Option<isize>, phnewuskey: *mut isize, fignorehkcu: bool) -> super::super::Foundation::WIN32_ERROR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegOpenUSKeyA(pszpath : windows_core::PCSTR, samdesired : u32, hrelativeuskey : isize, phnewuskey : *mut isize, fignorehkcu : windows_core::BOOL) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegOpenUSKeyA(pszpath.param().abi(), samdesired, hrelativeuskey.unwrap_or(core::mem::zeroed()) as _, phnewuskey as _, fignorehkcu.into()) }
}
#[inline]
pub unsafe fn SHRegOpenUSKeyW<P0>(pwzpath: P0, samdesired: u32, hrelativeuskey: Option<isize>, phnewuskey: *mut isize, fignorehkcu: bool) -> super::super::Foundation::WIN32_ERROR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegOpenUSKeyW(pwzpath : windows_core::PCWSTR, samdesired : u32, hrelativeuskey : isize, phnewuskey : *mut isize, fignorehkcu : windows_core::BOOL) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegOpenUSKeyW(pwzpath.param().abi(), samdesired, hrelativeuskey.unwrap_or(core::mem::zeroed()) as _, phnewuskey as _, fignorehkcu.into()) }
}
#[inline]
pub unsafe fn SHRegQueryInfoUSKeyA(huskey: isize, pcsubkeys: Option<*mut u32>, pcchmaxsubkeylen: Option<*mut u32>, pcvalues: Option<*mut u32>, pcchmaxvaluenamelen: Option<*mut u32>, enumregflags: SHREGENUM_FLAGS) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHRegQueryInfoUSKeyA(huskey : isize, pcsubkeys : *mut u32, pcchmaxsubkeylen : *mut u32, pcvalues : *mut u32, pcchmaxvaluenamelen : *mut u32, enumregflags : SHREGENUM_FLAGS) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegQueryInfoUSKeyA(huskey, pcsubkeys.unwrap_or(core::mem::zeroed()) as _, pcchmaxsubkeylen.unwrap_or(core::mem::zeroed()) as _, pcvalues.unwrap_or(core::mem::zeroed()) as _, pcchmaxvaluenamelen.unwrap_or(core::mem::zeroed()) as _, enumregflags) }
}
#[inline]
pub unsafe fn SHRegQueryInfoUSKeyW(huskey: isize, pcsubkeys: Option<*mut u32>, pcchmaxsubkeylen: Option<*mut u32>, pcvalues: Option<*mut u32>, pcchmaxvaluenamelen: Option<*mut u32>, enumregflags: SHREGENUM_FLAGS) -> super::super::Foundation::WIN32_ERROR {
    windows_core::link!("shlwapi.dll" "system" fn SHRegQueryInfoUSKeyW(huskey : isize, pcsubkeys : *mut u32, pcchmaxsubkeylen : *mut u32, pcvalues : *mut u32, pcchmaxvaluenamelen : *mut u32, enumregflags : SHREGENUM_FLAGS) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegQueryInfoUSKeyW(huskey, pcsubkeys.unwrap_or(core::mem::zeroed()) as _, pcchmaxsubkeylen.unwrap_or(core::mem::zeroed()) as _, pcvalues.unwrap_or(core::mem::zeroed()) as _, pcchmaxvaluenamelen.unwrap_or(core::mem::zeroed()) as _, enumregflags) }
}
#[inline]
pub unsafe fn SHRegQueryUSValueA<P1>(huskey: isize, pszvalue: P1, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>, fignorehkcu: bool, pvdefaultdata: Option<*const core::ffi::c_void>, dwdefaultdatasize: Option<u32>) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegQueryUSValueA(huskey : isize, pszvalue : windows_core::PCSTR, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32, fignorehkcu : windows_core::BOOL, pvdefaultdata : *const core::ffi::c_void, dwdefaultdatasize : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegQueryUSValueA(huskey, pszvalue.param().abi(), pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _, fignorehkcu.into(), pvdefaultdata.unwrap_or(core::mem::zeroed()) as _, dwdefaultdatasize.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHRegQueryUSValueW<P1>(huskey: isize, pszvalue: P1, pdwtype: Option<*mut u32>, pvdata: Option<*mut core::ffi::c_void>, pcbdata: Option<*mut u32>, fignorehkcu: bool, pvdefaultdata: Option<*const core::ffi::c_void>, dwdefaultdatasize: Option<u32>) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegQueryUSValueW(huskey : isize, pszvalue : windows_core::PCWSTR, pdwtype : *mut u32, pvdata : *mut core::ffi::c_void, pcbdata : *mut u32, fignorehkcu : windows_core::BOOL, pvdefaultdata : *const core::ffi::c_void, dwdefaultdatasize : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegQueryUSValueW(huskey, pszvalue.param().abi(), pdwtype.unwrap_or(core::mem::zeroed()) as _, pvdata.unwrap_or(core::mem::zeroed()) as _, pcbdata.unwrap_or(core::mem::zeroed()) as _, fignorehkcu.into(), pvdefaultdata.unwrap_or(core::mem::zeroed()) as _, dwdefaultdatasize.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHRegSetPathA<P1, P2, P3>(hkey: super::super::System::Registry::HKEY, pcszsubkey: P1, pcszvalue: P2, pcszpath: P3, dwflags: u32) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
    P3: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegSetPathA(hkey : super::super::System::Registry:: HKEY, pcszsubkey : windows_core::PCSTR, pcszvalue : windows_core::PCSTR, pcszpath : windows_core::PCSTR, dwflags : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegSetPathA(hkey, pcszsubkey.param().abi(), pcszvalue.param().abi(), pcszpath.param().abi(), dwflags) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHRegSetPathW<P1, P2, P3>(hkey: super::super::System::Registry::HKEY, pcszsubkey: P1, pcszvalue: P2, pcszpath: P3, dwflags: u32) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegSetPathW(hkey : super::super::System::Registry:: HKEY, pcszsubkey : windows_core::PCWSTR, pcszvalue : windows_core::PCWSTR, pcszpath : windows_core::PCWSTR, dwflags : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegSetPathW(hkey, pcszsubkey.param().abi(), pcszvalue.param().abi(), pcszpath.param().abi(), dwflags) }
}
#[inline]
pub unsafe fn SHRegSetUSValueA<P0, P1>(pszsubkey: P0, pszvalue: P1, dwtype: u32, pvdata: Option<*const core::ffi::c_void>, cbdata: Option<u32>, dwflags: Option<u32>) -> super::super::Foundation::WIN32_ERROR
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegSetUSValueA(pszsubkey : windows_core::PCSTR, pszvalue : windows_core::PCSTR, dwtype : u32, pvdata : *const core::ffi::c_void, cbdata : u32, dwflags : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegSetUSValueA(pszsubkey.param().abi(), pszvalue.param().abi(), dwtype, pvdata.unwrap_or(core::mem::zeroed()) as _, cbdata.unwrap_or(core::mem::zeroed()) as _, dwflags.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHRegSetUSValueW<P0, P1>(pwzsubkey: P0, pwzvalue: P1, dwtype: u32, pvdata: Option<*const core::ffi::c_void>, cbdata: Option<u32>, dwflags: Option<u32>) -> super::super::Foundation::WIN32_ERROR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegSetUSValueW(pwzsubkey : windows_core::PCWSTR, pwzvalue : windows_core::PCWSTR, dwtype : u32, pvdata : *const core::ffi::c_void, cbdata : u32, dwflags : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegSetUSValueW(pwzsubkey.param().abi(), pwzvalue.param().abi(), dwtype, pvdata.unwrap_or(core::mem::zeroed()) as _, cbdata.unwrap_or(core::mem::zeroed()) as _, dwflags.unwrap_or(core::mem::zeroed()) as _) }
}
#[inline]
pub unsafe fn SHRegWriteUSValueA<P1>(huskey: isize, pszvalue: P1, dwtype: u32, pvdata: *const core::ffi::c_void, cbdata: u32, dwflags: u32) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegWriteUSValueA(huskey : isize, pszvalue : windows_core::PCSTR, dwtype : u32, pvdata : *const core::ffi::c_void, cbdata : u32, dwflags : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegWriteUSValueA(huskey, pszvalue.param().abi(), dwtype, pvdata, cbdata, dwflags) }
}
#[inline]
pub unsafe fn SHRegWriteUSValueW<P1>(huskey: isize, pwzvalue: P1, dwtype: u32, pvdata: *const core::ffi::c_void, cbdata: u32, dwflags: u32) -> super::super::Foundation::WIN32_ERROR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHRegWriteUSValueW(huskey : isize, pwzvalue : windows_core::PCWSTR, dwtype : u32, pvdata : *const core::ffi::c_void, cbdata : u32, dwflags : u32) -> super::super::Foundation:: WIN32_ERROR);
    unsafe { SHRegWriteUSValueW(huskey, pwzvalue.param().abi(), dwtype, pvdata, cbdata, dwflags) }
}
#[inline]
pub unsafe fn SHReleaseThreadRef() -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn SHReleaseThreadRef() -> windows_core::HRESULT);
    unsafe { SHReleaseThreadRef().ok() }
}
#[inline]
pub unsafe fn SHRemoveLocalizedName<P0>(pszpath: P0) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHRemoveLocalizedName(pszpath : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { SHRemoveLocalizedName(pszpath.param().abi()).ok() }
}
#[cfg(feature = "Win32_UI_Controls")]
#[inline]
pub unsafe fn SHReplaceFromPropSheetExtArray(hpsxa: HPSXA, upageid: u32, lpfnreplacewith: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> u32 {
    windows_core::link!("shell32.dll" "system" fn SHReplaceFromPropSheetExtArray(hpsxa : HPSXA, upageid : u32, lpfnreplacewith : super::Controls:: LPFNSVADDPROPSHEETPAGE, lparam : super::super::Foundation:: LPARAM) -> u32);
    unsafe { SHReplaceFromPropSheetExtArray(hpsxa, upageid, lpfnreplacewith, lparam) }
}
#[inline]
pub unsafe fn SHResolveLibrary<P0>(psilibrary: P0) -> windows_core::Result<()>
where
    P0: windows_core::Param<IShellItem>,
{
    windows_core::link!("shell32.dll" "system" fn SHResolveLibrary(psilibrary : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { SHResolveLibrary(psilibrary.param().abi()).ok() }
}
#[inline]
pub unsafe fn SHRestricted(rest: RESTRICTIONS) -> u32 {
    windows_core::link!("shell32.dll" "system" fn SHRestricted(rest : RESTRICTIONS) -> u32);
    unsafe { SHRestricted(rest) }
}
#[inline]
pub unsafe fn SHSendMessageBroadcastA(umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT {
    windows_core::link!("shlwapi.dll" "system" fn SHSendMessageBroadcastA(umsg : u32, wparam : super::super::Foundation:: WPARAM, lparam : super::super::Foundation:: LPARAM) -> super::super::Foundation:: LRESULT);
    unsafe { SHSendMessageBroadcastA(umsg, wparam, lparam) }
}
#[inline]
pub unsafe fn SHSendMessageBroadcastW(umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT {
    windows_core::link!("shlwapi.dll" "system" fn SHSendMessageBroadcastW(umsg : u32, wparam : super::super::Foundation:: WPARAM, lparam : super::super::Foundation:: LPARAM) -> super::super::Foundation:: LRESULT);
    unsafe { SHSendMessageBroadcastW(umsg, wparam, lparam) }
}
#[inline]
pub unsafe fn SHSetDefaultProperties<P1, P3>(hwnd: Option<super::super::Foundation::HWND>, psi: P1, dwfileopflags: u32, pfops: P3) -> windows_core::Result<()>
where
    P1: windows_core::Param<IShellItem>,
    P3: windows_core::Param<IFileOperationProgressSink>,
{
    windows_core::link!("shell32.dll" "system" fn SHSetDefaultProperties(hwnd : super::super::Foundation:: HWND, psi : * mut core::ffi::c_void, dwfileopflags : u32, pfops : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { SHSetDefaultProperties(hwnd.unwrap_or(core::mem::zeroed()) as _, psi.param().abi(), dwfileopflags, pfops.param().abi()).ok() }
}
#[inline]
pub unsafe fn SHSetFolderPathA<P3>(csidl: i32, htoken: Option<super::super::Foundation::HANDLE>, dwflags: u32, pszpath: P3) -> windows_core::Result<()>
where
    P3: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHSetFolderPathA(csidl : i32, htoken : super::super::Foundation:: HANDLE, dwflags : u32, pszpath : windows_core::PCSTR) -> windows_core::HRESULT);
    unsafe { SHSetFolderPathA(csidl, htoken.unwrap_or(core::mem::zeroed()) as _, dwflags, pszpath.param().abi()).ok() }
}
#[inline]
pub unsafe fn SHSetFolderPathW<P3>(csidl: i32, htoken: Option<super::super::Foundation::HANDLE>, dwflags: u32, pszpath: P3) -> windows_core::Result<()>
where
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHSetFolderPathW(csidl : i32, htoken : super::super::Foundation:: HANDLE, dwflags : u32, pszpath : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { SHSetFolderPathW(csidl, htoken.unwrap_or(core::mem::zeroed()) as _, dwflags, pszpath.param().abi()).ok() }
}
#[inline]
pub unsafe fn SHSetInstanceExplorer<P0>(punk: P0)
where
    P0: windows_core::Param<windows_core::IUnknown>,
{
    windows_core::link!("shell32.dll" "system" fn SHSetInstanceExplorer(punk : * mut core::ffi::c_void));
    unsafe { SHSetInstanceExplorer(punk.param().abi()) }
}
#[inline]
pub unsafe fn SHSetKnownFolderPath<P3>(rfid: *const windows_core::GUID, dwflags: u32, htoken: Option<super::super::Foundation::HANDLE>, pszpath: P3) -> windows_core::Result<()>
where
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHSetKnownFolderPath(rfid : *const windows_core::GUID, dwflags : u32, htoken : super::super::Foundation:: HANDLE, pszpath : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { SHSetKnownFolderPath(rfid, dwflags, htoken.unwrap_or(core::mem::zeroed()) as _, pszpath.param().abi()).ok() }
}
#[inline]
pub unsafe fn SHSetLocalizedName<P0, P1>(pszpath: P0, pszresmodule: P1, idsres: i32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHSetLocalizedName(pszpath : windows_core::PCWSTR, pszresmodule : windows_core::PCWSTR, idsres : i32) -> windows_core::HRESULT);
    unsafe { SHSetLocalizedName(pszpath.param().abi(), pszresmodule.param().abi(), idsres).ok() }
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
#[inline]
pub unsafe fn SHSetTemporaryPropertyForItem<P0>(psi: P0, propkey: *const super::super::Foundation::PROPERTYKEY, propvar: *const super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::Result<()>
where
    P0: windows_core::Param<IShellItem>,
{
    windows_core::link!("shell32.dll" "system" fn SHSetTemporaryPropertyForItem(psi : * mut core::ffi::c_void, propkey : *const super::super::Foundation:: PROPERTYKEY, propvar : *const super::super::System::Com::StructuredStorage:: PROPVARIANT) -> windows_core::HRESULT);
    unsafe { SHSetTemporaryPropertyForItem(psi.param().abi(), propkey, core::mem::transmute(propvar)).ok() }
}
#[inline]
pub unsafe fn SHSetThreadRef<P0>(punk: P0) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::IUnknown>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHSetThreadRef(punk : * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { SHSetThreadRef(punk.param().abi()).ok() }
}
#[inline]
pub unsafe fn SHSetUnreadMailCountW<P0, P2>(pszmailaddress: P0, dwcount: u32, pszshellexecutecommand: P2) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHSetUnreadMailCountW(pszmailaddress : windows_core::PCWSTR, dwcount : u32, pszshellexecutecommand : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { SHSetUnreadMailCountW(pszmailaddress.param().abi(), dwcount, pszshellexecutecommand.param().abi()).ok() }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHSetValueA<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, dwtype: u32, pvdata: Option<*const core::ffi::c_void>, cbdata: u32) -> i32
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHSetValueA(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCSTR, pszvalue : windows_core::PCSTR, dwtype : u32, pvdata : *const core::ffi::c_void, cbdata : u32) -> i32);
    unsafe { SHSetValueA(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), dwtype, pvdata.unwrap_or(core::mem::zeroed()) as _, cbdata) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn SHSetValueW<P1, P2>(hkey: super::super::System::Registry::HKEY, pszsubkey: P1, pszvalue: P2, dwtype: u32, pvdata: Option<*const core::ffi::c_void>, cbdata: u32) -> i32
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHSetValueW(hkey : super::super::System::Registry:: HKEY, pszsubkey : windows_core::PCWSTR, pszvalue : windows_core::PCWSTR, dwtype : u32, pvdata : *const core::ffi::c_void, cbdata : u32) -> i32);
    unsafe { SHSetValueW(hkey, pszsubkey.param().abi(), pszvalue.param().abi(), dwtype, pvdata.unwrap_or(core::mem::zeroed()) as _, cbdata) }
}
#[inline]
pub unsafe fn SHShellFolderView_Message(hwndmain: super::super::Foundation::HWND, umsg: u32, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT {
    windows_core::link!("shell32.dll" "system" fn SHShellFolderView_Message(hwndmain : super::super::Foundation:: HWND, umsg : u32, lparam : super::super::Foundation:: LPARAM) -> super::super::Foundation:: LRESULT);
    unsafe { SHShellFolderView_Message(hwndmain, umsg, lparam) }
}
#[inline]
pub unsafe fn SHShowManageLibraryUI<P0, P2, P3>(psilibrary: P0, hwndowner: super::super::Foundation::HWND, psztitle: P2, pszinstruction: P3, lmdoptions: LIBRARYMANAGEDIALOGOPTIONS) -> windows_core::Result<()>
where
    P0: windows_core::Param<IShellItem>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHShowManageLibraryUI(psilibrary : * mut core::ffi::c_void, hwndowner : super::super::Foundation:: HWND, psztitle : windows_core::PCWSTR, pszinstruction : windows_core::PCWSTR, lmdoptions : LIBRARYMANAGEDIALOGOPTIONS) -> windows_core::HRESULT);
    unsafe { SHShowManageLibraryUI(psilibrary.param().abi(), hwndowner, psztitle.param().abi(), pszinstruction.param().abi(), lmdoptions).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SHSimpleIDListFromPath<P0>(pszpath: P0) -> *mut Common::ITEMIDLIST
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHSimpleIDListFromPath(pszpath : windows_core::PCWSTR) -> *mut Common:: ITEMIDLIST);
    unsafe { SHSimpleIDListFromPath(pszpath.param().abi()) }
}
#[cfg(feature = "Win32_System_Com")]
#[inline]
pub unsafe fn SHSkipJunction<P0>(pbc: P0, pclsid: *const windows_core::GUID) -> windows_core::BOOL
where
    P0: windows_core::Param<super::super::System::Com::IBindCtx>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHSkipJunction(pbc : * mut core::ffi::c_void, pclsid : *const windows_core::GUID) -> windows_core::BOOL);
    unsafe { SHSkipJunction(pbc.param().abi(), pclsid) }
}
#[inline]
pub unsafe fn SHStartNetConnectionDialogW<P1>(hwnd: Option<super::super::Foundation::HWND>, pszremotename: P1, dwtype: u32) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHStartNetConnectionDialogW(hwnd : super::super::Foundation:: HWND, pszremotename : windows_core::PCWSTR, dwtype : u32) -> windows_core::HRESULT);
    unsafe { SHStartNetConnectionDialogW(hwnd.unwrap_or(core::mem::zeroed()) as _, pszremotename.param().abi(), dwtype).ok() }
}
#[inline]
pub unsafe fn SHStrDupA<P0>(psz: P0) -> windows_core::Result<windows_core::PWSTR>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHStrDupA(psz : windows_core::PCSTR, ppwsz : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHStrDupA(psz.param().abi(), &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn SHStrDupW<P0>(psz: P0) -> windows_core::Result<windows_core::PWSTR>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHStrDupW(psz : windows_core::PCWSTR, ppwsz : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        SHStrDupW(psz.param().abi(), &mut result__).map(|| result__)
    }
}
#[inline]
pub unsafe fn SHStripMneumonicA(pszmenu: windows_core::PSTR) -> i8 {
    windows_core::link!("shlwapi.dll" "system" fn SHStripMneumonicA(pszmenu : windows_core::PSTR) -> i8);
    unsafe { SHStripMneumonicA(core::mem::transmute(pszmenu)) }
}
#[inline]
pub unsafe fn SHStripMneumonicW(pszmenu: windows_core::PWSTR) -> u16 {
    windows_core::link!("shlwapi.dll" "system" fn SHStripMneumonicW(pszmenu : windows_core::PWSTR) -> u16);
    unsafe { SHStripMneumonicW(core::mem::transmute(pszmenu)) }
}
#[inline]
pub unsafe fn SHTestTokenMembership(htoken: Option<super::super::Foundation::HANDLE>, ulrid: u32) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SHTestTokenMembership(htoken : super::super::Foundation:: HANDLE, ulrid : u32) -> windows_core::BOOL);
    unsafe { SHTestTokenMembership(htoken.unwrap_or(core::mem::zeroed()) as _, ulrid) }
}
#[inline]
pub unsafe fn SHUnicodeToAnsi<P0>(pwszsrc: P0, pszdst: &mut [u8]) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHUnicodeToAnsi(pwszsrc : windows_core::PCWSTR, pszdst : windows_core::PSTR, cchbuf : i32) -> i32);
    unsafe { SHUnicodeToAnsi(pwszsrc.param().abi(), core::mem::transmute(pszdst.as_ptr()), pszdst.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn SHUnicodeToUnicode<P0>(pwzsrc: P0, pwzdst: &mut [u16]) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn SHUnicodeToUnicode(pwzsrc : windows_core::PCWSTR, pwzdst : windows_core::PWSTR, cwchbuf : i32) -> i32);
    unsafe { SHUnicodeToUnicode(pwzsrc.param().abi(), core::mem::transmute(pwzdst.as_ptr()), pwzdst.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn SHUnlockShared(pvdata: *const core::ffi::c_void) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn SHUnlockShared(pvdata : *const core::ffi::c_void) -> windows_core::BOOL);
    unsafe { SHUnlockShared(pvdata).ok() }
}
#[inline]
pub unsafe fn SHUpdateImageA<P0>(pszhashitem: P0, iindex: i32, uflags: u32, iimageindex: i32)
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHUpdateImageA(pszhashitem : windows_core::PCSTR, iindex : i32, uflags : u32, iimageindex : i32));
    unsafe { SHUpdateImageA(pszhashitem.param().abi(), iindex, uflags, iimageindex) }
}
#[inline]
pub unsafe fn SHUpdateImageW<P0>(pszhashitem: P0, iindex: i32, uflags: u32, iimageindex: i32)
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SHUpdateImageW(pszhashitem : windows_core::PCWSTR, iindex : i32, uflags : u32, iimageindex : i32));
    unsafe { SHUpdateImageW(pszhashitem.param().abi(), iindex, uflags, iimageindex) }
}
#[inline]
pub unsafe fn SHValidateUNC(hwndowner: Option<super::super::Foundation::HWND>, pszfile: windows_core::PWSTR, fconnect: VALIDATEUNC_OPTION) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SHValidateUNC(hwndowner : super::super::Foundation:: HWND, pszfile : windows_core::PWSTR, fconnect : u32) -> windows_core::BOOL);
    unsafe { SHValidateUNC(hwndowner.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszfile), fconnect.0 as _) }
}
#[inline]
pub unsafe fn SetCurrentProcessExplicitAppUserModelID<P0>(appid: P0) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn SetCurrentProcessExplicitAppUserModelID(appid : windows_core::PCWSTR) -> windows_core::HRESULT);
    unsafe { SetCurrentProcessExplicitAppUserModelID(appid.param().abi()).ok() }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn SetMenuContextHelpId(param0: super::WindowsAndMessaging::HMENU, param1: u32) -> windows_core::Result<()> {
    windows_core::link!("user32.dll" "system" fn SetMenuContextHelpId(param0 : super::WindowsAndMessaging:: HMENU, param1 : u32) -> windows_core::BOOL);
    unsafe { SetMenuContextHelpId(param0, param1).ok() }
}
#[inline]
pub unsafe fn SetWindowContextHelpId(param0: super::super::Foundation::HWND, param1: u32) -> windows_core::Result<()> {
    windows_core::link!("user32.dll" "system" fn SetWindowContextHelpId(param0 : super::super::Foundation:: HWND, param1 : u32) -> windows_core::BOOL);
    unsafe { SetWindowContextHelpId(param0, param1).ok() }
}
#[inline]
pub unsafe fn SetWindowSubclass(hwnd: super::super::Foundation::HWND, pfnsubclass: SUBCLASSPROC, uidsubclass: usize, dwrefdata: usize) -> windows_core::BOOL {
    windows_core::link!("comctl32.dll" "system" fn SetWindowSubclass(hwnd : super::super::Foundation:: HWND, pfnsubclass : SUBCLASSPROC, uidsubclass : usize, dwrefdata : usize) -> windows_core::BOOL);
    unsafe { SetWindowSubclass(hwnd, pfnsubclass, uidsubclass, dwrefdata) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ShellAboutA<P1, P2>(hwnd: Option<super::super::Foundation::HWND>, szapp: P1, szotherstuff: P2, hicon: Option<super::WindowsAndMessaging::HICON>) -> i32
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn ShellAboutA(hwnd : super::super::Foundation:: HWND, szapp : windows_core::PCSTR, szotherstuff : windows_core::PCSTR, hicon : super::WindowsAndMessaging:: HICON) -> i32);
    unsafe { ShellAboutA(hwnd.unwrap_or(core::mem::zeroed()) as _, szapp.param().abi(), szotherstuff.param().abi(), hicon.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ShellAboutW<P1, P2>(hwnd: Option<super::super::Foundation::HWND>, szapp: P1, szotherstuff: P2, hicon: Option<super::WindowsAndMessaging::HICON>) -> i32
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn ShellAboutW(hwnd : super::super::Foundation:: HWND, szapp : windows_core::PCWSTR, szotherstuff : windows_core::PCWSTR, hicon : super::WindowsAndMessaging:: HICON) -> i32);
    unsafe { ShellAboutW(hwnd.unwrap_or(core::mem::zeroed()) as _, szapp.param().abi(), szotherstuff.param().abi(), hicon.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ShellExecuteA<P1, P2, P3, P4>(hwnd: Option<super::super::Foundation::HWND>, lpoperation: P1, lpfile: P2, lpparameters: P3, lpdirectory: P4, nshowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> super::super::Foundation::HINSTANCE
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
    P3: windows_core::Param<windows_core::PCSTR>,
    P4: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn ShellExecuteA(hwnd : super::super::Foundation:: HWND, lpoperation : windows_core::PCSTR, lpfile : windows_core::PCSTR, lpparameters : windows_core::PCSTR, lpdirectory : windows_core::PCSTR, nshowcmd : super::WindowsAndMessaging:: SHOW_WINDOW_CMD) -> super::super::Foundation:: HINSTANCE);
    unsafe { ShellExecuteA(hwnd.unwrap_or(core::mem::zeroed()) as _, lpoperation.param().abi(), lpfile.param().abi(), lpparameters.param().abi(), lpdirectory.param().abi(), nshowcmd) }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn ShellExecuteExA(pexecinfo: *mut SHELLEXECUTEINFOA) -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn ShellExecuteExA(pexecinfo : *mut SHELLEXECUTEINFOA) -> windows_core::BOOL);
    unsafe { ShellExecuteExA(pexecinfo as _).ok() }
}
#[cfg(feature = "Win32_System_Registry")]
#[inline]
pub unsafe fn ShellExecuteExW(pexecinfo: *mut SHELLEXECUTEINFOW) -> windows_core::Result<()> {
    windows_core::link!("shell32.dll" "system" fn ShellExecuteExW(pexecinfo : *mut SHELLEXECUTEINFOW) -> windows_core::BOOL);
    unsafe { ShellExecuteExW(pexecinfo as _).ok() }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ShellExecuteW<P1, P2, P3, P4>(hwnd: Option<super::super::Foundation::HWND>, lpoperation: P1, lpfile: P2, lpparameters: P3, lpdirectory: P4, nshowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> super::super::Foundation::HINSTANCE
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
    P4: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn ShellExecuteW(hwnd : super::super::Foundation:: HWND, lpoperation : windows_core::PCWSTR, lpfile : windows_core::PCWSTR, lpparameters : windows_core::PCWSTR, lpdirectory : windows_core::PCWSTR, nshowcmd : super::WindowsAndMessaging:: SHOW_WINDOW_CMD) -> super::super::Foundation:: HINSTANCE);
    unsafe { ShellExecuteW(hwnd.unwrap_or(core::mem::zeroed()) as _, lpoperation.param().abi(), lpfile.param().abi(), lpparameters.param().abi(), lpdirectory.param().abi(), nshowcmd) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ShellMessageBoxA<P2, P3>(happinst: Option<super::super::Foundation::HINSTANCE>, hwnd: Option<super::super::Foundation::HWND>, lpctext: P2, lpctitle: P3, fustyle: super::WindowsAndMessaging::MESSAGEBOX_STYLE) -> i32
where
    P2: windows_core::Param<windows_core::PCSTR>,
    P3: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "C" fn ShellMessageBoxA(happinst : super::super::Foundation:: HINSTANCE, hwnd : super::super::Foundation:: HWND, lpctext : windows_core::PCSTR, lpctitle : windows_core::PCSTR, fustyle : super::WindowsAndMessaging:: MESSAGEBOX_STYLE) -> i32);
    unsafe { ShellMessageBoxA(happinst.unwrap_or(core::mem::zeroed()) as _, hwnd.unwrap_or(core::mem::zeroed()) as _, lpctext.param().abi(), lpctitle.param().abi(), fustyle) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn ShellMessageBoxW<P2, P3>(happinst: Option<super::super::Foundation::HINSTANCE>, hwnd: Option<super::super::Foundation::HWND>, lpctext: P2, lpctitle: P3, fustyle: super::WindowsAndMessaging::MESSAGEBOX_STYLE) -> i32
where
    P2: windows_core::Param<windows_core::PCWSTR>,
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "C" fn ShellMessageBoxW(happinst : super::super::Foundation:: HINSTANCE, hwnd : super::super::Foundation:: HWND, lpctext : windows_core::PCWSTR, lpctitle : windows_core::PCWSTR, fustyle : super::WindowsAndMessaging:: MESSAGEBOX_STYLE) -> i32);
    unsafe { ShellMessageBoxW(happinst.unwrap_or(core::mem::zeroed()) as _, hwnd.unwrap_or(core::mem::zeroed()) as _, lpctext.param().abi(), lpctitle.param().abi(), fustyle) }
}
#[inline]
pub unsafe fn Shell_GetCachedImageIndex<P0>(pwsziconpath: P0, iiconindex: i32, uiconflags: u32) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn Shell_GetCachedImageIndex(pwsziconpath : windows_core::PCWSTR, iiconindex : i32, uiconflags : u32) -> i32);
    unsafe { Shell_GetCachedImageIndex(pwsziconpath.param().abi(), iiconindex, uiconflags) }
}
#[inline]
pub unsafe fn Shell_GetCachedImageIndexA<P0>(psziconpath: P0, iiconindex: i32, uiconflags: u32) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shell32.dll" "system" fn Shell_GetCachedImageIndexA(psziconpath : windows_core::PCSTR, iiconindex : i32, uiconflags : u32) -> i32);
    unsafe { Shell_GetCachedImageIndexA(psziconpath.param().abi(), iiconindex, uiconflags) }
}
#[inline]
pub unsafe fn Shell_GetCachedImageIndexW<P0>(psziconpath: P0, iiconindex: i32, uiconflags: u32) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn Shell_GetCachedImageIndexW(psziconpath : windows_core::PCWSTR, iiconindex : i32, uiconflags : u32) -> i32);
    unsafe { Shell_GetCachedImageIndexW(psziconpath.param().abi(), iiconindex, uiconflags) }
}
#[cfg(feature = "Win32_UI_Controls")]
#[inline]
pub unsafe fn Shell_GetImageLists(phiml: Option<*mut super::Controls::HIMAGELIST>, phimlsmall: Option<*mut super::Controls::HIMAGELIST>) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn Shell_GetImageLists(phiml : *mut super::Controls:: HIMAGELIST, phimlsmall : *mut super::Controls:: HIMAGELIST) -> windows_core::BOOL);
    unsafe { Shell_GetImageLists(phiml.unwrap_or(core::mem::zeroed()) as _, phimlsmall.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn Shell_MergeMenus(hmdst: super::WindowsAndMessaging::HMENU, hmsrc: super::WindowsAndMessaging::HMENU, uinsert: u32, uidadjust: u32, uidadjustmax: u32, uflags: MM_FLAGS) -> u32 {
    windows_core::link!("shell32.dll" "system" fn Shell_MergeMenus(hmdst : super::WindowsAndMessaging:: HMENU, hmsrc : super::WindowsAndMessaging:: HMENU, uinsert : u32, uidadjust : u32, uidadjustmax : u32, uflags : MM_FLAGS) -> u32);
    unsafe { Shell_MergeMenus(hmdst, hmsrc, uinsert, uidadjust, uidadjustmax, uflags) }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn Shell_NotifyIconA(dwmessage: NOTIFY_ICON_MESSAGE, lpdata: *const NOTIFYICONDATAA) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn Shell_NotifyIconA(dwmessage : NOTIFY_ICON_MESSAGE, lpdata : *const NOTIFYICONDATAA) -> windows_core::BOOL);
    unsafe { Shell_NotifyIconA(dwmessage, lpdata) }
}
#[inline]
pub unsafe fn Shell_NotifyIconGetRect(identifier: *const NOTIFYICONIDENTIFIER) -> windows_core::Result<super::super::Foundation::RECT> {
    windows_core::link!("shell32.dll" "system" fn Shell_NotifyIconGetRect(identifier : *const NOTIFYICONIDENTIFIER, iconlocation : *mut super::super::Foundation:: RECT) -> windows_core::HRESULT);
    unsafe {
        let mut result__ = core::mem::zeroed();
        Shell_NotifyIconGetRect(identifier, &mut result__).map(|| result__)
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[inline]
pub unsafe fn Shell_NotifyIconW(dwmessage: NOTIFY_ICON_MESSAGE, lpdata: *const NOTIFYICONDATAW) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn Shell_NotifyIconW(dwmessage : NOTIFY_ICON_MESSAGE, lpdata : *const NOTIFYICONDATAW) -> windows_core::BOOL);
    unsafe { Shell_NotifyIconW(dwmessage, lpdata) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn SignalFileOpen(pidl: *const Common::ITEMIDLIST) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn SignalFileOpen(pidl : *const Common:: ITEMIDLIST) -> windows_core::BOOL);
    unsafe { SignalFileOpen(pidl) }
}
#[cfg(feature = "Win32_System_Com_Urlmon")]
#[inline]
pub unsafe fn SoftwareUpdateMessageBox<P1>(hwnd: Option<super::super::Foundation::HWND>, pszdistunit: P1, dwflags: u32, psdi: Option<*mut super::super::System::Com::Urlmon::SOFTDISTINFO>) -> u32
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shdocvw.dll" "system" fn SoftwareUpdateMessageBox(hwnd : super::super::Foundation:: HWND, pszdistunit : windows_core::PCWSTR, dwflags : u32, psdi : *mut super::super::System::Com::Urlmon:: SOFTDISTINFO) -> u32);
    unsafe { SoftwareUpdateMessageBox(hwnd.unwrap_or(core::mem::zeroed()) as _, pszdistunit.param().abi(), dwflags, psdi.unwrap_or(core::mem::zeroed()) as _) }
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
#[inline]
pub unsafe fn StgMakeUniqueName<P0, P1, T>(pstgparent: P0, pszfilespec: P1, grfmode: u32) -> windows_core::Result<T>
where
    P0: windows_core::Param<super::super::System::Com::StructuredStorage::IStorage>,
    P1: windows_core::Param<windows_core::PCWSTR>,
    T: windows_core::Interface,
{
    windows_core::link!("shell32.dll" "system" fn StgMakeUniqueName(pstgparent : * mut core::ffi::c_void, pszfilespec : windows_core::PCWSTR, grfmode : u32, riid : *const windows_core::GUID, ppv : *mut *mut core::ffi::c_void) -> windows_core::HRESULT);
    let mut result__ = core::ptr::null_mut();
    unsafe { StgMakeUniqueName(pstgparent.param().abi(), pszfilespec.param().abi(), grfmode, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
}
#[inline]
pub unsafe fn StrCSpnA<P0, P1>(pszstr: P0, pszset: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCSpnA(pszstr : windows_core::PCSTR, pszset : windows_core::PCSTR) -> i32);
    unsafe { StrCSpnA(pszstr.param().abi(), pszset.param().abi()) }
}
#[inline]
pub unsafe fn StrCSpnIA<P0, P1>(pszstr: P0, pszset: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCSpnIA(pszstr : windows_core::PCSTR, pszset : windows_core::PCSTR) -> i32);
    unsafe { StrCSpnIA(pszstr.param().abi(), pszset.param().abi()) }
}
#[inline]
pub unsafe fn StrCSpnIW<P0, P1>(pszstr: P0, pszset: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCSpnIW(pszstr : windows_core::PCWSTR, pszset : windows_core::PCWSTR) -> i32);
    unsafe { StrCSpnIW(pszstr.param().abi(), pszset.param().abi()) }
}
#[inline]
pub unsafe fn StrCSpnW<P0, P1>(pszstr: P0, pszset: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCSpnW(pszstr : windows_core::PCWSTR, pszset : windows_core::PCWSTR) -> i32);
    unsafe { StrCSpnW(pszstr.param().abi(), pszset.param().abi()) }
}
#[inline]
pub unsafe fn StrCatBuffA<P1>(pszdest: &mut [u8], pszsrc: P1) -> windows_core::PSTR
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCatBuffA(pszdest : windows_core::PSTR, pszsrc : windows_core::PCSTR, cchdestbuffsize : i32) -> windows_core::PSTR);
    unsafe { StrCatBuffA(core::mem::transmute(pszdest.as_ptr()), pszsrc.param().abi(), pszdest.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn StrCatBuffW<P1>(pszdest: &mut [u16], pszsrc: P1) -> windows_core::PWSTR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCatBuffW(pszdest : windows_core::PWSTR, pszsrc : windows_core::PCWSTR, cchdestbuffsize : i32) -> windows_core::PWSTR);
    unsafe { StrCatBuffW(core::mem::transmute(pszdest.as_ptr()), pszsrc.param().abi(), pszdest.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn StrCatChainW<P3>(pszdst: &mut [u16], ichat: u32, pszsrc: P3) -> u32
where
    P3: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCatChainW(pszdst : windows_core::PWSTR, cchdst : u32, ichat : u32, pszsrc : windows_core::PCWSTR) -> u32);
    unsafe { StrCatChainW(core::mem::transmute(pszdst.as_ptr()), pszdst.len().try_into().unwrap(), ichat, pszsrc.param().abi()) }
}
#[inline]
pub unsafe fn StrCatW<P1>(psz1: windows_core::PWSTR, psz2: P1) -> windows_core::PWSTR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCatW(psz1 : windows_core::PWSTR, psz2 : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { StrCatW(core::mem::transmute(psz1), psz2.param().abi()) }
}
#[inline]
pub unsafe fn StrChrA<P0>(pszstart: P0, wmatch: u16) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrChrA(pszstart : windows_core::PCSTR, wmatch : u16) -> windows_core::PSTR);
    unsafe { StrChrA(pszstart.param().abi(), wmatch) }
}
#[inline]
pub unsafe fn StrChrIA<P0>(pszstart: P0, wmatch: u16) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrChrIA(pszstart : windows_core::PCSTR, wmatch : u16) -> windows_core::PSTR);
    unsafe { StrChrIA(pszstart.param().abi(), wmatch) }
}
#[inline]
pub unsafe fn StrChrIW<P0>(pszstart: P0, wmatch: u16) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrChrIW(pszstart : windows_core::PCWSTR, wmatch : u16) -> windows_core::PWSTR);
    unsafe { StrChrIW(pszstart.param().abi(), wmatch) }
}
#[inline]
pub unsafe fn StrChrNIW<P0>(pszstart: P0, wmatch: u16, cchmax: u32) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrChrNIW(pszstart : windows_core::PCWSTR, wmatch : u16, cchmax : u32) -> windows_core::PWSTR);
    unsafe { StrChrNIW(pszstart.param().abi(), wmatch, cchmax) }
}
#[inline]
pub unsafe fn StrChrNW<P0>(pszstart: P0, wmatch: u16, cchmax: u32) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrChrNW(pszstart : windows_core::PCWSTR, wmatch : u16, cchmax : u32) -> windows_core::PWSTR);
    unsafe { StrChrNW(pszstart.param().abi(), wmatch, cchmax) }
}
#[inline]
pub unsafe fn StrChrW<P0>(pszstart: P0, wmatch: u16) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrChrW(pszstart : windows_core::PCWSTR, wmatch : u16) -> windows_core::PWSTR);
    unsafe { StrChrW(pszstart.param().abi(), wmatch) }
}
#[inline]
pub unsafe fn StrCmpCA<P0, P1>(pszstr1: P0, pszstr2: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpCA(pszstr1 : windows_core::PCSTR, pszstr2 : windows_core::PCSTR) -> i32);
    unsafe { StrCmpCA(pszstr1.param().abi(), pszstr2.param().abi()) }
}
#[inline]
pub unsafe fn StrCmpCW<P0, P1>(pszstr1: P0, pszstr2: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpCW(pszstr1 : windows_core::PCWSTR, pszstr2 : windows_core::PCWSTR) -> i32);
    unsafe { StrCmpCW(pszstr1.param().abi(), pszstr2.param().abi()) }
}
#[inline]
pub unsafe fn StrCmpICA<P0, P1>(pszstr1: P0, pszstr2: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpICA(pszstr1 : windows_core::PCSTR, pszstr2 : windows_core::PCSTR) -> i32);
    unsafe { StrCmpICA(pszstr1.param().abi(), pszstr2.param().abi()) }
}
#[inline]
pub unsafe fn StrCmpICW<P0, P1>(pszstr1: P0, pszstr2: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpICW(pszstr1 : windows_core::PCWSTR, pszstr2 : windows_core::PCWSTR) -> i32);
    unsafe { StrCmpICW(pszstr1.param().abi(), pszstr2.param().abi()) }
}
#[inline]
pub unsafe fn StrCmpIW<P0, P1>(psz1: P0, psz2: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpIW(psz1 : windows_core::PCWSTR, psz2 : windows_core::PCWSTR) -> i32);
    unsafe { StrCmpIW(psz1.param().abi(), psz2.param().abi()) }
}
#[inline]
pub unsafe fn StrCmpLogicalW<P0, P1>(psz1: P0, psz2: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpLogicalW(psz1 : windows_core::PCWSTR, psz2 : windows_core::PCWSTR) -> i32);
    unsafe { StrCmpLogicalW(psz1.param().abi(), psz2.param().abi()) }
}
#[inline]
pub unsafe fn StrCmpNA<P0, P1>(psz1: P0, psz2: P1, nchar: i32) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpNA(psz1 : windows_core::PCSTR, psz2 : windows_core::PCSTR, nchar : i32) -> i32);
    unsafe { StrCmpNA(psz1.param().abi(), psz2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn StrCmpNCA<P0, P1>(pszstr1: P0, pszstr2: P1, nchar: i32) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpNCA(pszstr1 : windows_core::PCSTR, pszstr2 : windows_core::PCSTR, nchar : i32) -> i32);
    unsafe { StrCmpNCA(pszstr1.param().abi(), pszstr2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn StrCmpNCW<P0, P1>(pszstr1: P0, pszstr2: P1, nchar: i32) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpNCW(pszstr1 : windows_core::PCWSTR, pszstr2 : windows_core::PCWSTR, nchar : i32) -> i32);
    unsafe { StrCmpNCW(pszstr1.param().abi(), pszstr2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn StrCmpNIA<P0, P1>(psz1: P0, psz2: P1, nchar: i32) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpNIA(psz1 : windows_core::PCSTR, psz2 : windows_core::PCSTR, nchar : i32) -> i32);
    unsafe { StrCmpNIA(psz1.param().abi(), psz2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn StrCmpNICA<P0, P1>(pszstr1: P0, pszstr2: P1, nchar: i32) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpNICA(pszstr1 : windows_core::PCSTR, pszstr2 : windows_core::PCSTR, nchar : i32) -> i32);
    unsafe { StrCmpNICA(pszstr1.param().abi(), pszstr2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn StrCmpNICW<P0, P1>(pszstr1: P0, pszstr2: P1, nchar: i32) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpNICW(pszstr1 : windows_core::PCWSTR, pszstr2 : windows_core::PCWSTR, nchar : i32) -> i32);
    unsafe { StrCmpNICW(pszstr1.param().abi(), pszstr2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn StrCmpNIW<P0, P1>(psz1: P0, psz2: P1, nchar: i32) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpNIW(psz1 : windows_core::PCWSTR, psz2 : windows_core::PCWSTR, nchar : i32) -> i32);
    unsafe { StrCmpNIW(psz1.param().abi(), psz2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn StrCmpNW<P0, P1>(psz1: P0, psz2: P1, nchar: i32) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpNW(psz1 : windows_core::PCWSTR, psz2 : windows_core::PCWSTR, nchar : i32) -> i32);
    unsafe { StrCmpNW(psz1.param().abi(), psz2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn StrCmpW<P0, P1>(psz1: P0, psz2: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCmpW(psz1 : windows_core::PCWSTR, psz2 : windows_core::PCWSTR) -> i32);
    unsafe { StrCmpW(psz1.param().abi(), psz2.param().abi()) }
}
#[inline]
pub unsafe fn StrCpyNW<P1>(pszdst: &mut [u16], pszsrc: P1) -> windows_core::PWSTR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCpyNW(pszdst : windows_core::PWSTR, pszsrc : windows_core::PCWSTR, cchmax : i32) -> windows_core::PWSTR);
    unsafe { StrCpyNW(core::mem::transmute(pszdst.as_ptr()), pszsrc.param().abi(), pszdst.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn StrCpyW<P1>(psz1: windows_core::PWSTR, psz2: P1) -> windows_core::PWSTR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrCpyW(psz1 : windows_core::PWSTR, psz2 : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { StrCpyW(core::mem::transmute(psz1), psz2.param().abi()) }
}
#[inline]
pub unsafe fn StrDupA<P0>(pszsrch: P0) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrDupA(pszsrch : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { StrDupA(pszsrch.param().abi()) }
}
#[inline]
pub unsafe fn StrDupW<P0>(pszsrch: P0) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrDupW(pszsrch : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { StrDupW(pszsrch.param().abi()) }
}
#[inline]
pub unsafe fn StrFormatByteSize64A(qdw: i64, pszbuf: &mut [u8]) -> windows_core::PSTR {
    windows_core::link!("shlwapi.dll" "system" fn StrFormatByteSize64A(qdw : i64, pszbuf : windows_core::PSTR, cchbuf : u32) -> windows_core::PSTR);
    unsafe { StrFormatByteSize64A(qdw, core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn StrFormatByteSizeA(dw: u32, pszbuf: &mut [u8]) -> windows_core::PSTR {
    windows_core::link!("shlwapi.dll" "system" fn StrFormatByteSizeA(dw : u32, pszbuf : windows_core::PSTR, cchbuf : u32) -> windows_core::PSTR);
    unsafe { StrFormatByteSizeA(dw, core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn StrFormatByteSizeEx(ull: u64, flags: SFBS_FLAGS, pszbuf: &mut [u16]) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn StrFormatByteSizeEx(ull : u64, flags : SFBS_FLAGS, pszbuf : windows_core::PWSTR, cchbuf : u32) -> windows_core::HRESULT);
    unsafe { StrFormatByteSizeEx(ull, flags, core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()).ok() }
}
#[inline]
pub unsafe fn StrFormatByteSizeW(qdw: i64, pszbuf: &mut [u16]) -> windows_core::PWSTR {
    windows_core::link!("shlwapi.dll" "system" fn StrFormatByteSizeW(qdw : i64, pszbuf : windows_core::PWSTR, cchbuf : u32) -> windows_core::PWSTR);
    unsafe { StrFormatByteSizeW(qdw, core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn StrFormatKBSizeA(qdw: i64, pszbuf: &mut [u8]) -> windows_core::PSTR {
    windows_core::link!("shlwapi.dll" "system" fn StrFormatKBSizeA(qdw : i64, pszbuf : windows_core::PSTR, cchbuf : u32) -> windows_core::PSTR);
    unsafe { StrFormatKBSizeA(qdw, core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn StrFormatKBSizeW(qdw: i64, pszbuf: &mut [u16]) -> windows_core::PWSTR {
    windows_core::link!("shlwapi.dll" "system" fn StrFormatKBSizeW(qdw : i64, pszbuf : windows_core::PWSTR, cchbuf : u32) -> windows_core::PWSTR);
    unsafe { StrFormatKBSizeW(qdw, core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn StrFromTimeIntervalA(pszout: &mut [u8], dwtimems: u32, digits: i32) -> i32 {
    windows_core::link!("shlwapi.dll" "system" fn StrFromTimeIntervalA(pszout : windows_core::PSTR, cchmax : u32, dwtimems : u32, digits : i32) -> i32);
    unsafe { StrFromTimeIntervalA(core::mem::transmute(pszout.as_ptr()), pszout.len().try_into().unwrap(), dwtimems, digits) }
}
#[inline]
pub unsafe fn StrFromTimeIntervalW(pszout: &mut [u16], dwtimems: u32, digits: i32) -> i32 {
    windows_core::link!("shlwapi.dll" "system" fn StrFromTimeIntervalW(pszout : windows_core::PWSTR, cchmax : u32, dwtimems : u32, digits : i32) -> i32);
    unsafe { StrFromTimeIntervalW(core::mem::transmute(pszout.as_ptr()), pszout.len().try_into().unwrap(), dwtimems, digits) }
}
#[inline]
pub unsafe fn StrIsIntlEqualA<P1, P2>(fcasesens: bool, pszstring1: P1, pszstring2: P2, nchar: i32) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrIsIntlEqualA(fcasesens : windows_core::BOOL, pszstring1 : windows_core::PCSTR, pszstring2 : windows_core::PCSTR, nchar : i32) -> windows_core::BOOL);
    unsafe { StrIsIntlEqualA(fcasesens.into(), pszstring1.param().abi(), pszstring2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn StrIsIntlEqualW<P1, P2>(fcasesens: bool, pszstring1: P1, pszstring2: P2, nchar: i32) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrIsIntlEqualW(fcasesens : windows_core::BOOL, pszstring1 : windows_core::PCWSTR, pszstring2 : windows_core::PCWSTR, nchar : i32) -> windows_core::BOOL);
    unsafe { StrIsIntlEqualW(fcasesens.into(), pszstring1.param().abi(), pszstring2.param().abi(), nchar) }
}
#[inline]
pub unsafe fn StrNCatA<P1>(psz1: &mut [u8], psz2: P1) -> windows_core::PSTR
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrNCatA(psz1 : windows_core::PSTR, psz2 : windows_core::PCSTR, cchmax : i32) -> windows_core::PSTR);
    unsafe { StrNCatA(core::mem::transmute(psz1.as_ptr()), psz2.param().abi(), psz1.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn StrNCatW<P1>(psz1: &mut [u16], psz2: P1) -> windows_core::PWSTR
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrNCatW(psz1 : windows_core::PWSTR, psz2 : windows_core::PCWSTR, cchmax : i32) -> windows_core::PWSTR);
    unsafe { StrNCatW(core::mem::transmute(psz1.as_ptr()), psz2.param().abi(), psz1.len().try_into().unwrap()) }
}
#[inline]
pub unsafe fn StrPBrkA<P0, P1>(psz: P0, pszset: P1) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrPBrkA(psz : windows_core::PCSTR, pszset : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { StrPBrkA(psz.param().abi(), pszset.param().abi()) }
}
#[inline]
pub unsafe fn StrPBrkW<P0, P1>(psz: P0, pszset: P1) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrPBrkW(psz : windows_core::PCWSTR, pszset : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { StrPBrkW(psz.param().abi(), pszset.param().abi()) }
}
#[inline]
pub unsafe fn StrRChrA<P0, P1>(pszstart: P0, pszend: P1, wmatch: u16) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrRChrA(pszstart : windows_core::PCSTR, pszend : windows_core::PCSTR, wmatch : u16) -> windows_core::PSTR);
    unsafe { StrRChrA(pszstart.param().abi(), pszend.param().abi(), wmatch) }
}
#[inline]
pub unsafe fn StrRChrIA<P0, P1>(pszstart: P0, pszend: P1, wmatch: u16) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrRChrIA(pszstart : windows_core::PCSTR, pszend : windows_core::PCSTR, wmatch : u16) -> windows_core::PSTR);
    unsafe { StrRChrIA(pszstart.param().abi(), pszend.param().abi(), wmatch) }
}
#[inline]
pub unsafe fn StrRChrIW<P0, P1>(pszstart: P0, pszend: P1, wmatch: u16) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrRChrIW(pszstart : windows_core::PCWSTR, pszend : windows_core::PCWSTR, wmatch : u16) -> windows_core::PWSTR);
    unsafe { StrRChrIW(pszstart.param().abi(), pszend.param().abi(), wmatch) }
}
#[inline]
pub unsafe fn StrRChrW<P0, P1>(pszstart: P0, pszend: P1, wmatch: u16) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrRChrW(pszstart : windows_core::PCWSTR, pszend : windows_core::PCWSTR, wmatch : u16) -> windows_core::PWSTR);
    unsafe { StrRChrW(pszstart.param().abi(), pszend.param().abi(), wmatch) }
}
#[inline]
pub unsafe fn StrRStrIA<P0, P1, P2>(pszsource: P0, pszlast: P1, pszsrch: P2) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrRStrIA(pszsource : windows_core::PCSTR, pszlast : windows_core::PCSTR, pszsrch : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { StrRStrIA(pszsource.param().abi(), pszlast.param().abi(), pszsrch.param().abi()) }
}
#[inline]
pub unsafe fn StrRStrIW<P0, P1, P2>(pszsource: P0, pszlast: P1, pszsrch: P2) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrRStrIW(pszsource : windows_core::PCWSTR, pszlast : windows_core::PCWSTR, pszsrch : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { StrRStrIW(pszsource.param().abi(), pszlast.param().abi(), pszsrch.param().abi()) }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn StrRetToBSTR(pstr: *mut Common::STRRET, pidl: Option<*const Common::ITEMIDLIST>, pbstr: *mut windows_core::BSTR) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn StrRetToBSTR(pstr : *mut Common:: STRRET, pidl : *const Common:: ITEMIDLIST, pbstr : *mut * mut core::ffi::c_void) -> windows_core::HRESULT);
    unsafe { StrRetToBSTR(pstr as _, pidl.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pbstr)).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn StrRetToBufA(pstr: *mut Common::STRRET, pidl: Option<*const Common::ITEMIDLIST>, pszbuf: &mut [u8]) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn StrRetToBufA(pstr : *mut Common:: STRRET, pidl : *const Common:: ITEMIDLIST, pszbuf : windows_core::PSTR, cchbuf : u32) -> windows_core::HRESULT);
    unsafe { StrRetToBufA(pstr as _, pidl.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn StrRetToBufW(pstr: *mut Common::STRRET, pidl: Option<*const Common::ITEMIDLIST>, pszbuf: &mut [u16]) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn StrRetToBufW(pstr : *mut Common:: STRRET, pidl : *const Common:: ITEMIDLIST, pszbuf : windows_core::PWSTR, cchbuf : u32) -> windows_core::HRESULT);
    unsafe { StrRetToBufW(pstr as _, pidl.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszbuf.as_ptr()), pszbuf.len().try_into().unwrap()).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn StrRetToStrA(pstr: *mut Common::STRRET, pidl: Option<*const Common::ITEMIDLIST>, ppsz: *mut windows_core::PSTR) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn StrRetToStrA(pstr : *mut Common:: STRRET, pidl : *const Common:: ITEMIDLIST, ppsz : *mut windows_core::PSTR) -> windows_core::HRESULT);
    unsafe { StrRetToStrA(pstr as _, pidl.unwrap_or(core::mem::zeroed()) as _, ppsz as _).ok() }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
#[inline]
pub unsafe fn StrRetToStrW(pstr: *mut Common::STRRET, pidl: Option<*const Common::ITEMIDLIST>, ppsz: *mut windows_core::PWSTR) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn StrRetToStrW(pstr : *mut Common:: STRRET, pidl : *const Common:: ITEMIDLIST, ppsz : *mut windows_core::PWSTR) -> windows_core::HRESULT);
    unsafe { StrRetToStrW(pstr as _, pidl.unwrap_or(core::mem::zeroed()) as _, ppsz as _).ok() }
}
#[inline]
pub unsafe fn StrSpnA<P0, P1>(psz: P0, pszset: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrSpnA(psz : windows_core::PCSTR, pszset : windows_core::PCSTR) -> i32);
    unsafe { StrSpnA(psz.param().abi(), pszset.param().abi()) }
}
#[inline]
pub unsafe fn StrSpnW<P0, P1>(psz: P0, pszset: P1) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrSpnW(psz : windows_core::PCWSTR, pszset : windows_core::PCWSTR) -> i32);
    unsafe { StrSpnW(psz.param().abi(), pszset.param().abi()) }
}
#[inline]
pub unsafe fn StrStrA<P0, P1>(pszfirst: P0, pszsrch: P1) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrStrA(pszfirst : windows_core::PCSTR, pszsrch : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { StrStrA(pszfirst.param().abi(), pszsrch.param().abi()) }
}
#[inline]
pub unsafe fn StrStrIA<P0, P1>(pszfirst: P0, pszsrch: P1) -> windows_core::PSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrStrIA(pszfirst : windows_core::PCSTR, pszsrch : windows_core::PCSTR) -> windows_core::PSTR);
    unsafe { StrStrIA(pszfirst.param().abi(), pszsrch.param().abi()) }
}
#[inline]
pub unsafe fn StrStrIW<P0, P1>(pszfirst: P0, pszsrch: P1) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrStrIW(pszfirst : windows_core::PCWSTR, pszsrch : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { StrStrIW(pszfirst.param().abi(), pszsrch.param().abi()) }
}
#[inline]
pub unsafe fn StrStrNIW<P0, P1>(pszfirst: P0, pszsrch: P1, cchmax: u32) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrStrNIW(pszfirst : windows_core::PCWSTR, pszsrch : windows_core::PCWSTR, cchmax : u32) -> windows_core::PWSTR);
    unsafe { StrStrNIW(pszfirst.param().abi(), pszsrch.param().abi(), cchmax) }
}
#[inline]
pub unsafe fn StrStrNW<P0, P1>(pszfirst: P0, pszsrch: P1, cchmax: u32) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrStrNW(pszfirst : windows_core::PCWSTR, pszsrch : windows_core::PCWSTR, cchmax : u32) -> windows_core::PWSTR);
    unsafe { StrStrNW(pszfirst.param().abi(), pszsrch.param().abi(), cchmax) }
}
#[inline]
pub unsafe fn StrStrW<P0, P1>(pszfirst: P0, pszsrch: P1) -> windows_core::PWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrStrW(pszfirst : windows_core::PCWSTR, pszsrch : windows_core::PCWSTR) -> windows_core::PWSTR);
    unsafe { StrStrW(pszfirst.param().abi(), pszsrch.param().abi()) }
}
#[inline]
pub unsafe fn StrToInt64ExA<P0>(pszstring: P0, dwflags: i32, pllret: *mut i64) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrToInt64ExA(pszstring : windows_core::PCSTR, dwflags : i32, pllret : *mut i64) -> windows_core::BOOL);
    unsafe { StrToInt64ExA(pszstring.param().abi(), dwflags, pllret as _) }
}
#[inline]
pub unsafe fn StrToInt64ExW<P0>(pszstring: P0, dwflags: i32, pllret: *mut i64) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrToInt64ExW(pszstring : windows_core::PCWSTR, dwflags : i32, pllret : *mut i64) -> windows_core::BOOL);
    unsafe { StrToInt64ExW(pszstring.param().abi(), dwflags, pllret as _) }
}
#[inline]
pub unsafe fn StrToIntA<P0>(pszsrc: P0) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrToIntA(pszsrc : windows_core::PCSTR) -> i32);
    unsafe { StrToIntA(pszsrc.param().abi()) }
}
#[inline]
pub unsafe fn StrToIntExA<P0>(pszstring: P0, dwflags: i32, piret: *mut i32) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrToIntExA(pszstring : windows_core::PCSTR, dwflags : i32, piret : *mut i32) -> windows_core::BOOL);
    unsafe { StrToIntExA(pszstring.param().abi(), dwflags, piret as _) }
}
#[inline]
pub unsafe fn StrToIntExW<P0>(pszstring: P0, dwflags: i32, piret: *mut i32) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrToIntExW(pszstring : windows_core::PCWSTR, dwflags : i32, piret : *mut i32) -> windows_core::BOOL);
    unsafe { StrToIntExW(pszstring.param().abi(), dwflags, piret as _) }
}
#[inline]
pub unsafe fn StrToIntW<P0>(pszsrc: P0) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrToIntW(pszsrc : windows_core::PCWSTR) -> i32);
    unsafe { StrToIntW(pszsrc.param().abi()) }
}
#[inline]
pub unsafe fn StrTrimA<P1>(psz: windows_core::PSTR, psztrimchars: P1) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrTrimA(psz : windows_core::PSTR, psztrimchars : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { StrTrimA(core::mem::transmute(psz), psztrimchars.param().abi()) }
}
#[inline]
pub unsafe fn StrTrimW<P1>(psz: windows_core::PWSTR, psztrimchars: P1) -> windows_core::BOOL
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn StrTrimW(psz : windows_core::PWSTR, psztrimchars : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { StrTrimW(core::mem::transmute(psz), psztrimchars.param().abi()) }
}
#[inline]
pub unsafe fn UnloadUserProfile(htoken: super::super::Foundation::HANDLE, hprofile: super::super::Foundation::HANDLE) -> windows_core::Result<()> {
    windows_core::link!("userenv.dll" "system" fn UnloadUserProfile(htoken : super::super::Foundation:: HANDLE, hprofile : super::super::Foundation:: HANDLE) -> windows_core::BOOL);
    unsafe { UnloadUserProfile(htoken, hprofile).ok() }
}
#[inline]
pub unsafe fn UnregisterAppConstrainedChangeNotification(registration: PAPPCONSTRAIN_REGISTRATION) {
    windows_core::link!("api-ms-win-core-psm-appnotify-l1-1-1.dll" "system" fn UnregisterAppConstrainedChangeNotification(registration : PAPPCONSTRAIN_REGISTRATION));
    unsafe { UnregisterAppConstrainedChangeNotification(registration) }
}
#[inline]
pub unsafe fn UnregisterAppStateChangeNotification(registration: PAPPSTATE_REGISTRATION) {
    windows_core::link!("api-ms-win-core-psm-appnotify-l1-1-0.dll" "system" fn UnregisterAppStateChangeNotification(registration : PAPPSTATE_REGISTRATION));
    unsafe { UnregisterAppStateChangeNotification(registration) }
}
#[inline]
pub unsafe fn UnregisterScaleChangeEvent(dwcookie: usize) -> windows_core::Result<()> {
    windows_core::link!("api-ms-win-shcore-scaling-l1-1-1.dll" "system" fn UnregisterScaleChangeEvent(dwcookie : usize) -> windows_core::HRESULT);
    unsafe { UnregisterScaleChangeEvent(dwcookie).ok() }
}
#[inline]
pub unsafe fn UrlApplySchemeA<P0>(pszin: P0, pszout: windows_core::PSTR, pcchout: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlApplySchemeA(pszin : windows_core::PCSTR, pszout : windows_core::PSTR, pcchout : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlApplySchemeA(pszin.param().abi(), core::mem::transmute(pszout), pcchout as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlApplySchemeW<P0>(pszin: P0, pszout: windows_core::PWSTR, pcchout: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlApplySchemeW(pszin : windows_core::PCWSTR, pszout : windows_core::PWSTR, pcchout : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlApplySchemeW(pszin.param().abi(), core::mem::transmute(pszout), pcchout as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlCanonicalizeA<P0>(pszurl: P0, pszcanonicalized: windows_core::PSTR, pcchcanonicalized: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlCanonicalizeA(pszurl : windows_core::PCSTR, pszcanonicalized : windows_core::PSTR, pcchcanonicalized : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlCanonicalizeA(pszurl.param().abi(), core::mem::transmute(pszcanonicalized), pcchcanonicalized as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlCanonicalizeW<P0>(pszurl: P0, pszcanonicalized: windows_core::PWSTR, pcchcanonicalized: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlCanonicalizeW(pszurl : windows_core::PCWSTR, pszcanonicalized : windows_core::PWSTR, pcchcanonicalized : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlCanonicalizeW(pszurl.param().abi(), core::mem::transmute(pszcanonicalized), pcchcanonicalized as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlCombineA<P0, P1>(pszbase: P0, pszrelative: P1, pszcombined: Option<windows_core::PSTR>, pcchcombined: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlCombineA(pszbase : windows_core::PCSTR, pszrelative : windows_core::PCSTR, pszcombined : windows_core::PSTR, pcchcombined : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlCombineA(pszbase.param().abi(), pszrelative.param().abi(), pszcombined.unwrap_or(core::mem::zeroed()) as _, pcchcombined as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlCombineW<P0, P1>(pszbase: P0, pszrelative: P1, pszcombined: Option<windows_core::PWSTR>, pcchcombined: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlCombineW(pszbase : windows_core::PCWSTR, pszrelative : windows_core::PCWSTR, pszcombined : windows_core::PWSTR, pcchcombined : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlCombineW(pszbase.param().abi(), pszrelative.param().abi(), pszcombined.unwrap_or(core::mem::zeroed()) as _, pcchcombined as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlCompareA<P0, P1>(psz1: P0, psz2: P1, fignoreslash: bool) -> i32
where
    P0: windows_core::Param<windows_core::PCSTR>,
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlCompareA(psz1 : windows_core::PCSTR, psz2 : windows_core::PCSTR, fignoreslash : windows_core::BOOL) -> i32);
    unsafe { UrlCompareA(psz1.param().abi(), psz2.param().abi(), fignoreslash.into()) }
}
#[inline]
pub unsafe fn UrlCompareW<P0, P1>(psz1: P0, psz2: P1, fignoreslash: bool) -> i32
where
    P0: windows_core::Param<windows_core::PCWSTR>,
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlCompareW(psz1 : windows_core::PCWSTR, psz2 : windows_core::PCWSTR, fignoreslash : windows_core::BOOL) -> i32);
    unsafe { UrlCompareW(psz1.param().abi(), psz2.param().abi(), fignoreslash.into()) }
}
#[inline]
pub unsafe fn UrlCreateFromPathA<P0>(pszpath: P0, pszurl: windows_core::PSTR, pcchurl: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlCreateFromPathA(pszpath : windows_core::PCSTR, pszurl : windows_core::PSTR, pcchurl : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlCreateFromPathA(pszpath.param().abi(), core::mem::transmute(pszurl), pcchurl as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlCreateFromPathW<P0>(pszpath: P0, pszurl: windows_core::PWSTR, pcchurl: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlCreateFromPathW(pszpath : windows_core::PCWSTR, pszurl : windows_core::PWSTR, pcchurl : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlCreateFromPathW(pszpath.param().abi(), core::mem::transmute(pszurl), pcchurl as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlEscapeA<P0>(pszurl: P0, pszescaped: windows_core::PSTR, pcchescaped: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlEscapeA(pszurl : windows_core::PCSTR, pszescaped : windows_core::PSTR, pcchescaped : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlEscapeA(pszurl.param().abi(), core::mem::transmute(pszescaped), pcchescaped as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlEscapeW<P0>(pszurl: P0, pszescaped: windows_core::PWSTR, pcchescaped: *mut u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlEscapeW(pszurl : windows_core::PCWSTR, pszescaped : windows_core::PWSTR, pcchescaped : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlEscapeW(pszurl.param().abi(), core::mem::transmute(pszescaped), pcchescaped as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlFixupW<P0>(pcszurl: P0, psztranslatedurl: &mut [u16]) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlFixupW(pcszurl : windows_core::PCWSTR, psztranslatedurl : windows_core::PWSTR, cchmax : u32) -> windows_core::HRESULT);
    unsafe { UrlFixupW(pcszurl.param().abi(), core::mem::transmute(psztranslatedurl.as_ptr()), psztranslatedurl.len().try_into().unwrap()).ok() }
}
#[inline]
pub unsafe fn UrlGetLocationA<P0>(pszurl: P0) -> windows_core::PCSTR
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlGetLocationA(pszurl : windows_core::PCSTR) -> windows_core::PCSTR);
    unsafe { UrlGetLocationA(pszurl.param().abi()) }
}
#[inline]
pub unsafe fn UrlGetLocationW<P0>(pszurl: P0) -> windows_core::PCWSTR
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlGetLocationW(pszurl : windows_core::PCWSTR) -> windows_core::PCWSTR);
    unsafe { UrlGetLocationW(pszurl.param().abi()) }
}
#[inline]
pub unsafe fn UrlGetPartA<P0>(pszin: P0, pszout: windows_core::PSTR, pcchout: *mut u32, dwpart: u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlGetPartA(pszin : windows_core::PCSTR, pszout : windows_core::PSTR, pcchout : *mut u32, dwpart : u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlGetPartA(pszin.param().abi(), core::mem::transmute(pszout), pcchout as _, dwpart, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlGetPartW<P0>(pszin: P0, pszout: windows_core::PWSTR, pcchout: *mut u32, dwpart: u32, dwflags: u32) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlGetPartW(pszin : windows_core::PCWSTR, pszout : windows_core::PWSTR, pcchout : *mut u32, dwpart : u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlGetPartW(pszin.param().abi(), core::mem::transmute(pszout), pcchout as _, dwpart, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlHashA<P0>(pszurl: P0, pbhash: &mut [u8]) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlHashA(pszurl : windows_core::PCSTR, pbhash : *mut u8, cbhash : u32) -> windows_core::HRESULT);
    unsafe { UrlHashA(pszurl.param().abi(), core::mem::transmute(pbhash.as_ptr()), pbhash.len().try_into().unwrap()).ok() }
}
#[inline]
pub unsafe fn UrlHashW<P0>(pszurl: P0, pbhash: &mut [u8]) -> windows_core::Result<()>
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlHashW(pszurl : windows_core::PCWSTR, pbhash : *mut u8, cbhash : u32) -> windows_core::HRESULT);
    unsafe { UrlHashW(pszurl.param().abi(), core::mem::transmute(pbhash.as_ptr()), pbhash.len().try_into().unwrap()).ok() }
}
#[inline]
pub unsafe fn UrlIsA<P0>(pszurl: P0, urlis: URLIS) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlIsA(pszurl : windows_core::PCSTR, urlis : URLIS) -> windows_core::BOOL);
    unsafe { UrlIsA(pszurl.param().abi(), urlis) }
}
#[inline]
pub unsafe fn UrlIsNoHistoryA<P0>(pszurl: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlIsNoHistoryA(pszurl : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { UrlIsNoHistoryA(pszurl.param().abi()) }
}
#[inline]
pub unsafe fn UrlIsNoHistoryW<P0>(pszurl: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlIsNoHistoryW(pszurl : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { UrlIsNoHistoryW(pszurl.param().abi()) }
}
#[inline]
pub unsafe fn UrlIsOpaqueA<P0>(pszurl: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlIsOpaqueA(pszurl : windows_core::PCSTR) -> windows_core::BOOL);
    unsafe { UrlIsOpaqueA(pszurl.param().abi()) }
}
#[inline]
pub unsafe fn UrlIsOpaqueW<P0>(pszurl: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlIsOpaqueW(pszurl : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { UrlIsOpaqueW(pszurl.param().abi()) }
}
#[inline]
pub unsafe fn UrlIsW<P0>(pszurl: P0, urlis: URLIS) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn UrlIsW(pszurl : windows_core::PCWSTR, urlis : URLIS) -> windows_core::BOOL);
    unsafe { UrlIsW(pszurl.param().abi(), urlis) }
}
#[inline]
pub unsafe fn UrlUnescapeA(pszurl: windows_core::PSTR, pszunescaped: Option<windows_core::PSTR>, pcchunescaped: Option<*mut u32>, dwflags: u32) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn UrlUnescapeA(pszurl : windows_core::PSTR, pszunescaped : windows_core::PSTR, pcchunescaped : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlUnescapeA(core::mem::transmute(pszurl), pszunescaped.unwrap_or(core::mem::zeroed()) as _, pcchunescaped.unwrap_or(core::mem::zeroed()) as _, dwflags).ok() }
}
#[inline]
pub unsafe fn UrlUnescapeW(pszurl: windows_core::PWSTR, pszunescaped: Option<windows_core::PWSTR>, pcchunescaped: Option<*mut u32>, dwflags: u32) -> windows_core::Result<()> {
    windows_core::link!("shlwapi.dll" "system" fn UrlUnescapeW(pszurl : windows_core::PWSTR, pszunescaped : windows_core::PWSTR, pcchunescaped : *mut u32, dwflags : u32) -> windows_core::HRESULT);
    unsafe { UrlUnescapeW(core::mem::transmute(pszurl), pszunescaped.unwrap_or(core::mem::zeroed()) as _, pcchunescaped.unwrap_or(core::mem::zeroed()) as _, dwflags).ok() }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
#[inline]
pub unsafe fn VariantToStrRet(varin: *const super::super::System::Variant::VARIANT, pstrret: *mut Common::STRRET) -> windows_core::Result<()> {
    windows_core::link!("propsys.dll" "system" fn VariantToStrRet(varin : *const super::super::System::Variant:: VARIANT, pstrret : *mut Common:: STRRET) -> windows_core::HRESULT);
    unsafe { VariantToStrRet(core::mem::transmute(varin), pstrret as _).ok() }
}
#[inline]
pub unsafe fn WhichPlatform() -> u32 {
    windows_core::link!("shlwapi.dll" "system" fn WhichPlatform() -> u32);
    unsafe { WhichPlatform() }
}
#[inline]
pub unsafe fn Win32DeleteFile<P0>(pszpath: P0) -> windows_core::BOOL
where
    P0: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shell32.dll" "system" fn Win32DeleteFile(pszpath : windows_core::PCWSTR) -> windows_core::BOOL);
    unsafe { Win32DeleteFile(pszpath.param().abi()) }
}
#[inline]
pub unsafe fn WinHelpA<P1>(hwndmain: Option<super::super::Foundation::HWND>, lpszhelp: P1, ucommand: u32, dwdata: usize) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("user32.dll" "system" fn WinHelpA(hwndmain : super::super::Foundation:: HWND, lpszhelp : windows_core::PCSTR, ucommand : u32, dwdata : usize) -> windows_core::BOOL);
    unsafe { WinHelpA(hwndmain.unwrap_or(core::mem::zeroed()) as _, lpszhelp.param().abi(), ucommand, dwdata).ok() }
}
#[inline]
pub unsafe fn WinHelpW<P1>(hwndmain: Option<super::super::Foundation::HWND>, lpszhelp: P1, ucommand: u32, dwdata: usize) -> windows_core::Result<()>
where
    P1: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("user32.dll" "system" fn WinHelpW(hwndmain : super::super::Foundation:: HWND, lpszhelp : windows_core::PCWSTR, ucommand : u32, dwdata : usize) -> windows_core::BOOL);
    unsafe { WinHelpW(hwndmain.unwrap_or(core::mem::zeroed()) as _, lpszhelp.param().abi(), ucommand, dwdata).ok() }
}
#[inline]
pub unsafe fn WriteCabinetState(pcs: *const CABINETSTATE) -> windows_core::BOOL {
    windows_core::link!("shell32.dll" "system" fn WriteCabinetState(pcs : *const CABINETSTATE) -> windows_core::BOOL);
    unsafe { WriteCabinetState(pcs) }
}
#[inline]
pub unsafe fn wnsprintfA<P2>(pszdest: &mut [u8], pszfmt: P2) -> i32
where
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "C" fn wnsprintfA(pszdest : windows_core::PSTR, cchdest : i32, pszfmt : windows_core::PCSTR) -> i32);
    unsafe { wnsprintfA(core::mem::transmute(pszdest.as_ptr()), pszdest.len().try_into().unwrap(), pszfmt.param().abi()) }
}
#[inline]
pub unsafe fn wnsprintfW<P2>(pszdest: &mut [u16], pszfmt: P2) -> i32
where
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "C" fn wnsprintfW(pszdest : windows_core::PWSTR, cchdest : i32, pszfmt : windows_core::PCWSTR) -> i32);
    unsafe { wnsprintfW(core::mem::transmute(pszdest.as_ptr()), pszdest.len().try_into().unwrap(), pszfmt.param().abi()) }
}
#[inline]
pub unsafe fn wvnsprintfA<P2>(pszdest: &mut [u8], pszfmt: P2, arglist: *const i8) -> i32
where
    P2: windows_core::Param<windows_core::PCSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn wvnsprintfA(pszdest : windows_core::PSTR, cchdest : i32, pszfmt : windows_core::PCSTR, arglist : *const i8) -> i32);
    unsafe { wvnsprintfA(core::mem::transmute(pszdest.as_ptr()), pszdest.len().try_into().unwrap(), pszfmt.param().abi(), arglist) }
}
#[inline]
pub unsafe fn wvnsprintfW<P2>(pszdest: &mut [u16], pszfmt: P2, arglist: *const i8) -> i32
where
    P2: windows_core::Param<windows_core::PCWSTR>,
{
    windows_core::link!("shlwapi.dll" "system" fn wvnsprintfW(pszdest : windows_core::PWSTR, cchdest : i32, pszfmt : windows_core::PCWSTR, arglist : *const i8) -> i32);
    unsafe { wvnsprintfW(core::mem::transmute(pszdest.as_ptr()), pszdest.len().try_into().unwrap(), pszfmt.param().abi(), arglist) }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct AASHELLMENUFILENAME {
    pub cbTotal: i16,
    pub rgbReserved: [u8; 12],
    pub szFileName: [u16; 1],
}
impl Default for AASHELLMENUFILENAME {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct AASHELLMENUITEM {
    pub lpReserved1: *mut core::ffi::c_void,
    pub iReserved: i32,
    pub uiReserved: u32,
    pub lpName: *mut AASHELLMENUFILENAME,
    pub psz: windows_core::PWSTR,
}
impl Default for AASHELLMENUITEM {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const ABE_BOTTOM: u32 = 3u32;
pub const ABE_LEFT: u32 = 0u32;
pub const ABE_RIGHT: u32 = 2u32;
pub const ABE_TOP: u32 = 1u32;
pub const ABM_ACTIVATE: u32 = 6u32;
pub const ABM_GETAUTOHIDEBAR: u32 = 7u32;
pub const ABM_GETAUTOHIDEBAREX: u32 = 11u32;
pub const ABM_GETSTATE: u32 = 4u32;
pub const ABM_GETTASKBARPOS: u32 = 5u32;
pub const ABM_NEW: u32 = 0u32;
pub const ABM_QUERYPOS: u32 = 2u32;
pub const ABM_REMOVE: u32 = 1u32;
pub const ABM_SETAUTOHIDEBAR: u32 = 8u32;
pub const ABM_SETAUTOHIDEBAREX: u32 = 12u32;
pub const ABM_SETPOS: u32 = 3u32;
pub const ABM_SETSTATE: u32 = 10u32;
pub const ABM_WINDOWPOSCHANGED: u32 = 9u32;
pub const ABN_FULLSCREENAPP: u32 = 2u32;
pub const ABN_POSCHANGED: u32 = 1u32;
pub const ABN_STATECHANGE: u32 = 0u32;
pub const ABN_WINDOWARRANGE: u32 = 3u32;
pub const ABS_ALWAYSONTOP: u32 = 2u32;
pub const ABS_AUTOHIDE: u32 = 1u32;
pub const ACDD_VISIBLE: u32 = 1u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ACENUMOPTION(pub i32);
pub const ACEO_FIRSTUNUSED: ACENUMOPTION = ACENUMOPTION(65536i32);
pub const ACEO_MOSTRECENTFIRST: ACENUMOPTION = ACENUMOPTION(1i32);
pub const ACEO_NONE: ACENUMOPTION = ACENUMOPTION(0i32);
pub const ACLO_CURRENTDIR: AUTOCOMPLETELISTOPTIONS = AUTOCOMPLETELISTOPTIONS(1i32);
pub const ACLO_DESKTOP: AUTOCOMPLETELISTOPTIONS = AUTOCOMPLETELISTOPTIONS(4i32);
pub const ACLO_FAVORITES: AUTOCOMPLETELISTOPTIONS = AUTOCOMPLETELISTOPTIONS(8i32);
pub const ACLO_FILESYSDIRS: AUTOCOMPLETELISTOPTIONS = AUTOCOMPLETELISTOPTIONS(32i32);
pub const ACLO_FILESYSONLY: AUTOCOMPLETELISTOPTIONS = AUTOCOMPLETELISTOPTIONS(16i32);
pub const ACLO_MYCOMPUTER: AUTOCOMPLETELISTOPTIONS = AUTOCOMPLETELISTOPTIONS(2i32);
pub const ACLO_NONE: AUTOCOMPLETELISTOPTIONS = AUTOCOMPLETELISTOPTIONS(0i32);
pub const ACLO_VIRTUALNAMESPACE: AUTOCOMPLETELISTOPTIONS = AUTOCOMPLETELISTOPTIONS(64i32);
pub const ACO_AUTOAPPEND: AUTOCOMPLETEOPTIONS = AUTOCOMPLETEOPTIONS(2i32);
pub const ACO_AUTOSUGGEST: AUTOCOMPLETEOPTIONS = AUTOCOMPLETEOPTIONS(1i32);
pub const ACO_FILTERPREFIXES: AUTOCOMPLETEOPTIONS = AUTOCOMPLETEOPTIONS(8i32);
pub const ACO_NONE: AUTOCOMPLETEOPTIONS = AUTOCOMPLETEOPTIONS(0i32);
pub const ACO_NOPREFIXFILTERING: AUTOCOMPLETEOPTIONS = AUTOCOMPLETEOPTIONS(256i32);
pub const ACO_RTLREADING: AUTOCOMPLETEOPTIONS = AUTOCOMPLETEOPTIONS(64i32);
pub const ACO_SEARCH: AUTOCOMPLETEOPTIONS = AUTOCOMPLETEOPTIONS(4i32);
pub const ACO_UPDOWNKEYDROPSLIST: AUTOCOMPLETEOPTIONS = AUTOCOMPLETEOPTIONS(32i32);
pub const ACO_USETAB: AUTOCOMPLETEOPTIONS = AUTOCOMPLETEOPTIONS(16i32);
pub const ACO_WORD_FILTER: AUTOCOMPLETEOPTIONS = AUTOCOMPLETEOPTIONS(128i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ACTIVATEOPTIONS(pub i32);
impl ACTIVATEOPTIONS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for ACTIVATEOPTIONS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for ACTIVATEOPTIONS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for ACTIVATEOPTIONS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for ACTIVATEOPTIONS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for ACTIVATEOPTIONS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const ADDURL_SILENT: u32 = 1u32;
pub const ADE_LEFT: ADJACENT_DISPLAY_EDGES = ADJACENT_DISPLAY_EDGES(1i32);
pub const ADE_NONE: ADJACENT_DISPLAY_EDGES = ADJACENT_DISPLAY_EDGES(0i32);
pub const ADE_RIGHT: ADJACENT_DISPLAY_EDGES = ADJACENT_DISPLAY_EDGES(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ADJACENT_DISPLAY_EDGES(pub i32);
impl ADJACENT_DISPLAY_EDGES {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for ADJACENT_DISPLAY_EDGES {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for ADJACENT_DISPLAY_EDGES {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for ADJACENT_DISPLAY_EDGES {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for ADJACENT_DISPLAY_EDGES {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for ADJACENT_DISPLAY_EDGES {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const ADLT_FREQUENT: APPDOCLISTTYPE = APPDOCLISTTYPE(1i32);
pub const ADLT_RECENT: APPDOCLISTTYPE = APPDOCLISTTYPE(0i32);
pub const AD_APPLY_BUFFERED_REFRESH: u32 = 16u32;
pub const AD_APPLY_DYNAMICREFRESH: u32 = 32u32;
pub const AD_APPLY_FORCE: u32 = 8u32;
pub const AD_APPLY_HTMLGEN: u32 = 2u32;
pub const AD_APPLY_REFRESH: u32 = 4u32;
pub const AD_APPLY_SAVE: u32 = 1u32;
pub const AD_GETWP_BMP: u32 = 0u32;
pub const AD_GETWP_IMAGE: u32 = 1u32;
pub const AD_GETWP_LAST_APPLIED: u32 = 2u32;
pub const AHE_DESKTOP: AHE_TYPE = AHE_TYPE(0i32);
pub const AHE_IMMERSIVE: AHE_TYPE = AHE_TYPE(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct AHE_TYPE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct AHTYPE(pub i32);
impl AHTYPE {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for AHTYPE {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for AHTYPE {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for AHTYPE {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for AHTYPE {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for AHTYPE {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const AHTYPE_ANY_APPLICATION: AHTYPE = AHTYPE(16i32);
pub const AHTYPE_ANY_PROGID: AHTYPE = AHTYPE(512i32);
pub const AHTYPE_APPLICATION: AHTYPE = AHTYPE(128i32);
pub const AHTYPE_CLASS_APPLICATION: AHTYPE = AHTYPE(256i32);
pub const AHTYPE_MACHINEDEFAULT: AHTYPE = AHTYPE(32i32);
pub const AHTYPE_PROGID: AHTYPE = AHTYPE(64i32);
pub const AHTYPE_UNDEFINED: AHTYPE = AHTYPE(0i32);
pub const AHTYPE_USER_APPLICATION: AHTYPE = AHTYPE(8i32);
pub const AIM_COMMENTS: APPINFODATAFLAGS = APPINFODATAFLAGS(32768i32);
pub const AIM_CONTACT: APPINFODATAFLAGS = APPINFODATAFLAGS(16384i32);
pub const AIM_DISPLAYNAME: APPINFODATAFLAGS = APPINFODATAFLAGS(1i32);
pub const AIM_HELPLINK: APPINFODATAFLAGS = APPINFODATAFLAGS(512i32);
pub const AIM_IMAGE: APPINFODATAFLAGS = APPINFODATAFLAGS(131072i32);
pub const AIM_INSTALLDATE: APPINFODATAFLAGS = APPINFODATAFLAGS(4096i32);
pub const AIM_INSTALLLOCATION: APPINFODATAFLAGS = APPINFODATAFLAGS(1024i32);
pub const AIM_INSTALLSOURCE: APPINFODATAFLAGS = APPINFODATAFLAGS(2048i32);
pub const AIM_LANGUAGE: APPINFODATAFLAGS = APPINFODATAFLAGS(64i32);
pub const AIM_PRODUCTID: APPINFODATAFLAGS = APPINFODATAFLAGS(8i32);
pub const AIM_PUBLISHER: APPINFODATAFLAGS = APPINFODATAFLAGS(4i32);
pub const AIM_READMEURL: APPINFODATAFLAGS = APPINFODATAFLAGS(262144i32);
pub const AIM_REGISTEREDCOMPANY: APPINFODATAFLAGS = APPINFODATAFLAGS(32i32);
pub const AIM_REGISTEREDOWNER: APPINFODATAFLAGS = APPINFODATAFLAGS(16i32);
pub const AIM_SUPPORTTELEPHONE: APPINFODATAFLAGS = APPINFODATAFLAGS(256i32);
pub const AIM_SUPPORTURL: APPINFODATAFLAGS = APPINFODATAFLAGS(128i32);
pub const AIM_UPDATEINFOURL: APPINFODATAFLAGS = APPINFODATAFLAGS(524288i32);
pub const AIM_VERSION: APPINFODATAFLAGS = APPINFODATAFLAGS(2i32);
pub const AL_EFFECTIVE: ASSOCIATIONLEVEL = ASSOCIATIONLEVEL(1i32);
pub const AL_MACHINE: ASSOCIATIONLEVEL = ASSOCIATIONLEVEL(0i32);
pub const AL_USER: ASSOCIATIONLEVEL = ASSOCIATIONLEVEL(2i32);
pub const AO_DESIGNMODE: ACTIVATEOPTIONS = ACTIVATEOPTIONS(1i32);
pub const AO_NOERRORUI: ACTIVATEOPTIONS = ACTIVATEOPTIONS(2i32);
pub const AO_NONE: ACTIVATEOPTIONS = ACTIVATEOPTIONS(0i32);
pub const AO_NOSPLASHSCREEN: ACTIVATEOPTIONS = ACTIVATEOPTIONS(4i32);
pub const AO_PRELAUNCH: ACTIVATEOPTIONS = ACTIVATEOPTIONS(33554432i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct APPACTIONFLAGS(pub i32);
pub const APPACTION_ADDLATER: APPACTIONFLAGS = APPACTIONFLAGS(256i32);
pub const APPACTION_CANGETSIZE: APPACTIONFLAGS = APPACTIONFLAGS(32i32);
pub const APPACTION_INSTALL: APPACTIONFLAGS = APPACTIONFLAGS(1i32);
pub const APPACTION_MODIFY: APPACTIONFLAGS = APPACTIONFLAGS(4i32);
pub const APPACTION_MODIFYREMOVE: APPACTIONFLAGS = APPACTIONFLAGS(128i32);
pub const APPACTION_REPAIR: APPACTIONFLAGS = APPACTIONFLAGS(8i32);
pub const APPACTION_UNINSTALL: APPACTIONFLAGS = APPACTIONFLAGS(2i32);
pub const APPACTION_UNSCHEDULE: APPACTIONFLAGS = APPACTIONFLAGS(512i32);
pub const APPACTION_UPGRADE: APPACTIONFLAGS = APPACTIONFLAGS(16i32);
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy, Default)]
pub struct APPBARDATA {
    pub cbSize: u32,
    pub hWnd: super::super::Foundation::HWND,
    pub uCallbackMessage: u32,
    pub uEdge: u32,
    pub rc: super::super::Foundation::RECT,
    pub lParam: super::super::Foundation::LPARAM,
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct APPBARDATA {
    pub cbSize: u32,
    pub hWnd: super::super::Foundation::HWND,
    pub uCallbackMessage: u32,
    pub uEdge: u32,
    pub rc: super::super::Foundation::RECT,
    pub lParam: super::super::Foundation::LPARAM,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct APPCATEGORYINFO {
    pub Locale: u32,
    pub pszDescription: windows_core::PWSTR,
    pub AppCategoryId: windows_core::GUID,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct APPCATEGORYINFOLIST {
    pub cCategory: u32,
    pub pCategoryInfo: *mut APPCATEGORYINFO,
}
impl Default for APPCATEGORYINFOLIST {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct APPDOCLISTTYPE(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct APPINFODATA {
    pub cbSize: u32,
    pub dwMask: u32,
    pub pszDisplayName: windows_core::PWSTR,
    pub pszVersion: windows_core::PWSTR,
    pub pszPublisher: windows_core::PWSTR,
    pub pszProductID: windows_core::PWSTR,
    pub pszRegisteredOwner: windows_core::PWSTR,
    pub pszRegisteredCompany: windows_core::PWSTR,
    pub pszLanguage: windows_core::PWSTR,
    pub pszSupportUrl: windows_core::PWSTR,
    pub pszSupportTelephone: windows_core::PWSTR,
    pub pszHelpLink: windows_core::PWSTR,
    pub pszInstallLocation: windows_core::PWSTR,
    pub pszInstallSource: windows_core::PWSTR,
    pub pszInstallDate: windows_core::PWSTR,
    pub pszContact: windows_core::PWSTR,
    pub pszComments: windows_core::PWSTR,
    pub pszImage: windows_core::PWSTR,
    pub pszReadmeUrl: windows_core::PWSTR,
    pub pszUpdateInfoUrl: windows_core::PWSTR,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct APPINFODATAFLAGS(pub i32);
pub type APPLET_PROC = Option<unsafe extern "system" fn(hwndcpl: super::super::Foundation::HWND, msg: u32, lparam1: super::super::Foundation::LPARAM, lparam2: super::super::Foundation::LPARAM) -> i32>;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct APPLICATION_VIEW_MIN_WIDTH(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct APPLICATION_VIEW_ORIENTATION(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct APPLICATION_VIEW_SIZE_PREFERENCE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct APPLICATION_VIEW_STATE(pub i32);
pub const APPNAMEBUFFERLEN: u32 = 40u32;
pub const ARCONTENT_AUDIOCD: u32 = 4u32;
pub const ARCONTENT_AUTOPLAYMUSIC: u32 = 256u32;
pub const ARCONTENT_AUTOPLAYPIX: u32 = 128u32;
pub const ARCONTENT_AUTOPLAYVIDEO: u32 = 512u32;
pub const ARCONTENT_AUTORUNINF: u32 = 2u32;
pub const ARCONTENT_BLANKBD: u32 = 8192u32;
pub const ARCONTENT_BLANKCD: u32 = 16u32;
pub const ARCONTENT_BLANKDVD: u32 = 32u32;
pub const ARCONTENT_BLURAY: u32 = 16384u32;
pub const ARCONTENT_CAMERASTORAGE: u32 = 32768u32;
pub const ARCONTENT_CUSTOMEVENT: u32 = 65536u32;
pub const ARCONTENT_DVDAUDIO: u32 = 4096u32;
pub const ARCONTENT_DVDMOVIE: u32 = 8u32;
pub const ARCONTENT_MASK: u32 = 131070u32;
pub const ARCONTENT_NONE: u32 = 0u32;
pub const ARCONTENT_PHASE_FINAL: u32 = 1073741824u32;
pub const ARCONTENT_PHASE_MASK: u32 = 1879048192u32;
pub const ARCONTENT_PHASE_PRESNIFF: u32 = 268435456u32;
pub const ARCONTENT_PHASE_SNIFFING: u32 = 536870912u32;
pub const ARCONTENT_PHASE_UNKNOWN: u32 = 0u32;
pub const ARCONTENT_SVCD: u32 = 2048u32;
pub const ARCONTENT_UNKNOWNCONTENT: u32 = 64u32;
pub const ARCONTENT_VCD: u32 = 1024u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ASSOCCLASS(pub i32);
pub const ASSOCCLASS_APP_KEY: ASSOCCLASS = ASSOCCLASS(5i32);
pub const ASSOCCLASS_APP_STR: ASSOCCLASS = ASSOCCLASS(6i32);
pub const ASSOCCLASS_CLSID_KEY: ASSOCCLASS = ASSOCCLASS(3i32);
pub const ASSOCCLASS_CLSID_STR: ASSOCCLASS = ASSOCCLASS(4i32);
pub const ASSOCCLASS_FIXED_PROGID_STR: ASSOCCLASS = ASSOCCLASS(10i32);
pub const ASSOCCLASS_FOLDER: ASSOCCLASS = ASSOCCLASS(8i32);
pub const ASSOCCLASS_PROGID_KEY: ASSOCCLASS = ASSOCCLASS(1i32);
pub const ASSOCCLASS_PROGID_STR: ASSOCCLASS = ASSOCCLASS(2i32);
pub const ASSOCCLASS_PROTOCOL_STR: ASSOCCLASS = ASSOCCLASS(11i32);
pub const ASSOCCLASS_SHELL_KEY: ASSOCCLASS = ASSOCCLASS(0i32);
pub const ASSOCCLASS_STAR: ASSOCCLASS = ASSOCCLASS(9i32);
pub const ASSOCCLASS_SYSTEM_STR: ASSOCCLASS = ASSOCCLASS(7i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ASSOCDATA(pub i32);
pub const ASSOCDATA_EDITFLAGS: ASSOCDATA = ASSOCDATA(5i32);
pub const ASSOCDATA_HASPERUSERASSOC: ASSOCDATA = ASSOCDATA(4i32);
pub const ASSOCDATA_MAX: ASSOCDATA = ASSOCDATA(7i32);
pub const ASSOCDATA_MSIDESCRIPTOR: ASSOCDATA = ASSOCDATA(1i32);
pub const ASSOCDATA_NOACTIVATEHANDLER: ASSOCDATA = ASSOCDATA(2i32);
pub const ASSOCDATA_UNUSED1: ASSOCDATA = ASSOCDATA(3i32);
pub const ASSOCDATA_VALUE: ASSOCDATA = ASSOCDATA(6i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ASSOCENUM(pub i32);
pub const ASSOCENUM_NONE: ASSOCENUM = ASSOCENUM(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ASSOCF(pub u32);
impl ASSOCF {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for ASSOCF {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for ASSOCF {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for ASSOCF {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for ASSOCF {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for ASSOCF {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const ASSOCF_APP_TO_APP: ASSOCF = ASSOCF(65536u32);
pub const ASSOCF_IGNOREBASECLASS: ASSOCF = ASSOCF(512u32);
pub const ASSOCF_INIT_BYEXENAME: ASSOCF = ASSOCF(2u32);
pub const ASSOCF_INIT_DEFAULTTOFOLDER: ASSOCF = ASSOCF(8u32);
pub const ASSOCF_INIT_DEFAULTTOSTAR: ASSOCF = ASSOCF(4u32);
pub const ASSOCF_INIT_FIXED_PROGID: ASSOCF = ASSOCF(2048u32);
pub const ASSOCF_INIT_FOR_FILE: ASSOCF = ASSOCF(8192u32);
pub const ASSOCF_INIT_IGNOREUNKNOWN: ASSOCF = ASSOCF(1024u32);
pub const ASSOCF_INIT_NOREMAPCLSID: ASSOCF = ASSOCF(1u32);
pub const ASSOCF_IS_FULL_URI: ASSOCF = ASSOCF(16384u32);
pub const ASSOCF_IS_PROTOCOL: ASSOCF = ASSOCF(4096u32);
pub const ASSOCF_NOFIXUPS: ASSOCF = ASSOCF(256u32);
pub const ASSOCF_NONE: ASSOCF = ASSOCF(0u32);
pub const ASSOCF_NOTRUNCATE: ASSOCF = ASSOCF(32u32);
pub const ASSOCF_NOUSERSETTINGS: ASSOCF = ASSOCF(16u32);
pub const ASSOCF_OPEN_BYEXENAME: ASSOCF = ASSOCF(2u32);
pub const ASSOCF_PER_MACHINE_ONLY: ASSOCF = ASSOCF(32768u32);
pub const ASSOCF_REMAPRUNDLL: ASSOCF = ASSOCF(128u32);
pub const ASSOCF_VERIFY: ASSOCF = ASSOCF(64u32);
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_System_Registry")]
#[derive(Clone, Copy, Default)]
pub struct ASSOCIATIONELEMENT {
    pub ac: ASSOCCLASS,
    pub hkClass: super::super::System::Registry::HKEY,
    pub pszClass: windows_core::PCWSTR,
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_System_Registry")]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct ASSOCIATIONELEMENT {
    pub ac: ASSOCCLASS,
    pub hkClass: super::super::System::Registry::HKEY,
    pub pszClass: windows_core::PCWSTR,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ASSOCIATIONLEVEL(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ASSOCIATIONTYPE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ASSOCKEY(pub i32);
pub const ASSOCKEY_APP: ASSOCKEY = ASSOCKEY(2i32);
pub const ASSOCKEY_BASECLASS: ASSOCKEY = ASSOCKEY(4i32);
pub const ASSOCKEY_CLASS: ASSOCKEY = ASSOCKEY(3i32);
pub const ASSOCKEY_MAX: ASSOCKEY = ASSOCKEY(5i32);
pub const ASSOCKEY_SHELLEXECCLASS: ASSOCKEY = ASSOCKEY(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ASSOCSTR(pub i32);
pub const ASSOCSTR_APPICONREFERENCE: ASSOCSTR = ASSOCSTR(23i32);
pub const ASSOCSTR_APPID: ASSOCSTR = ASSOCSTR(21i32);
pub const ASSOCSTR_APPPUBLISHER: ASSOCSTR = ASSOCSTR(22i32);
pub const ASSOCSTR_COMMAND: ASSOCSTR = ASSOCSTR(1i32);
pub const ASSOCSTR_CONTENTTYPE: ASSOCSTR = ASSOCSTR(14i32);
pub const ASSOCSTR_DDEAPPLICATION: ASSOCSTR = ASSOCSTR(9i32);
pub const ASSOCSTR_DDECOMMAND: ASSOCSTR = ASSOCSTR(7i32);
pub const ASSOCSTR_DDEIFEXEC: ASSOCSTR = ASSOCSTR(8i32);
pub const ASSOCSTR_DDETOPIC: ASSOCSTR = ASSOCSTR(10i32);
pub const ASSOCSTR_DEFAULTICON: ASSOCSTR = ASSOCSTR(15i32);
pub const ASSOCSTR_DELEGATEEXECUTE: ASSOCSTR = ASSOCSTR(18i32);
pub const ASSOCSTR_DROPTARGET: ASSOCSTR = ASSOCSTR(17i32);
pub const ASSOCSTR_EXECUTABLE: ASSOCSTR = ASSOCSTR(2i32);
pub const ASSOCSTR_FRIENDLYAPPNAME: ASSOCSTR = ASSOCSTR(4i32);
pub const ASSOCSTR_FRIENDLYDOCNAME: ASSOCSTR = ASSOCSTR(3i32);
pub const ASSOCSTR_INFOTIP: ASSOCSTR = ASSOCSTR(11i32);
pub const ASSOCSTR_MAX: ASSOCSTR = ASSOCSTR(24i32);
pub const ASSOCSTR_NOOPEN: ASSOCSTR = ASSOCSTR(5i32);
pub const ASSOCSTR_PROGID: ASSOCSTR = ASSOCSTR(20i32);
pub const ASSOCSTR_QUICKTIP: ASSOCSTR = ASSOCSTR(12i32);
pub const ASSOCSTR_SHELLEXTENSION: ASSOCSTR = ASSOCSTR(16i32);
pub const ASSOCSTR_SHELLNEWVALUE: ASSOCSTR = ASSOCSTR(6i32);
pub const ASSOCSTR_SUPPORTED_URI_PROTOCOLS: ASSOCSTR = ASSOCSTR(19i32);
pub const ASSOCSTR_TILEINFO: ASSOCSTR = ASSOCSTR(13i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ASSOC_FILTER(pub i32);
impl ASSOC_FILTER {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for ASSOC_FILTER {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for ASSOC_FILTER {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for ASSOC_FILTER {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for ASSOC_FILTER {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for ASSOC_FILTER {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const ASSOC_FILTER_NONE: ASSOC_FILTER = ASSOC_FILTER(0i32);
pub const ASSOC_FILTER_RECOMMENDED: ASSOC_FILTER = ASSOC_FILTER(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ATTACHMENT_ACTION(pub i32);
pub const ATTACHMENT_ACTION_CANCEL: ATTACHMENT_ACTION = ATTACHMENT_ACTION(0i32);
pub const ATTACHMENT_ACTION_EXEC: ATTACHMENT_ACTION = ATTACHMENT_ACTION(2i32);
pub const ATTACHMENT_ACTION_SAVE: ATTACHMENT_ACTION = ATTACHMENT_ACTION(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ATTACHMENT_PROMPT(pub i32);
pub const ATTACHMENT_PROMPT_EXEC: ATTACHMENT_PROMPT = ATTACHMENT_PROMPT(2i32);
pub const ATTACHMENT_PROMPT_EXEC_OR_SAVE: ATTACHMENT_PROMPT = ATTACHMENT_PROMPT(3i32);
pub const ATTACHMENT_PROMPT_NONE: ATTACHMENT_PROMPT = ATTACHMENT_PROMPT(0i32);
pub const ATTACHMENT_PROMPT_SAVE: ATTACHMENT_PROMPT = ATTACHMENT_PROMPT(1i32);
pub const AT_FILEEXTENSION: ASSOCIATIONTYPE = ASSOCIATIONTYPE(0i32);
pub const AT_MIMETYPE: ASSOCIATIONTYPE = ASSOCIATIONTYPE(3i32);
pub const AT_STARTMENUCLIENT: ASSOCIATIONTYPE = ASSOCIATIONTYPE(2i32);
pub const AT_URLPROTOCOL: ASSOCIATIONTYPE = ASSOCIATIONTYPE(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct AUTOCOMPLETELISTOPTIONS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct AUTOCOMPLETEOPTIONS(pub i32);
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct AUTO_SCROLL_DATA {
    pub iNextSample: i32,
    pub dwLastScroll: u32,
    pub bFull: windows_core::BOOL,
    pub pts: [super::super::Foundation::POINT; 3],
    pub dwTimes: [u32; 3],
}
impl Default for AUTO_SCROLL_DATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const AVMW_320: APPLICATION_VIEW_MIN_WIDTH = APPLICATION_VIEW_MIN_WIDTH(1i32);
pub const AVMW_500: APPLICATION_VIEW_MIN_WIDTH = APPLICATION_VIEW_MIN_WIDTH(2i32);
pub const AVMW_DEFAULT: APPLICATION_VIEW_MIN_WIDTH = APPLICATION_VIEW_MIN_WIDTH(0i32);
pub const AVO_LANDSCAPE: APPLICATION_VIEW_ORIENTATION = APPLICATION_VIEW_ORIENTATION(0i32);
pub const AVO_PORTRAIT: APPLICATION_VIEW_ORIENTATION = APPLICATION_VIEW_ORIENTATION(1i32);
pub const AVSP_CUSTOM: APPLICATION_VIEW_SIZE_PREFERENCE = APPLICATION_VIEW_SIZE_PREFERENCE(6i32);
pub const AVSP_DEFAULT: APPLICATION_VIEW_SIZE_PREFERENCE = APPLICATION_VIEW_SIZE_PREFERENCE(0i32);
pub const AVSP_USE_HALF: APPLICATION_VIEW_SIZE_PREFERENCE = APPLICATION_VIEW_SIZE_PREFERENCE(2i32);
pub const AVSP_USE_LESS: APPLICATION_VIEW_SIZE_PREFERENCE = APPLICATION_VIEW_SIZE_PREFERENCE(1i32);
pub const AVSP_USE_MINIMUM: APPLICATION_VIEW_SIZE_PREFERENCE = APPLICATION_VIEW_SIZE_PREFERENCE(4i32);
pub const AVSP_USE_MORE: APPLICATION_VIEW_SIZE_PREFERENCE = APPLICATION_VIEW_SIZE_PREFERENCE(3i32);
pub const AVSP_USE_NONE: APPLICATION_VIEW_SIZE_PREFERENCE = APPLICATION_VIEW_SIZE_PREFERENCE(5i32);
pub const AVS_FILLED: APPLICATION_VIEW_STATE = APPLICATION_VIEW_STATE(1i32);
pub const AVS_FULLSCREEN_LANDSCAPE: APPLICATION_VIEW_STATE = APPLICATION_VIEW_STATE(0i32);
pub const AVS_FULLSCREEN_PORTRAIT: APPLICATION_VIEW_STATE = APPLICATION_VIEW_STATE(3i32);
pub const AVS_SNAPPED: APPLICATION_VIEW_STATE = APPLICATION_VIEW_STATE(2i32);
pub const AccessibilityDockingService: windows_core::GUID = windows_core::GUID::from_u128(0x29ce1d46_b481_4aa0_a08a_d3ebc8aca402);
pub const AllowSmallerSize: ThumbnailStreamCacheOptions = ThumbnailStreamCacheOptions(4i32);
pub const AlphabeticalCategorizer: windows_core::GUID = windows_core::GUID::from_u128(0x3c2654c6_7372_4f6b_b310_55d6128f49d2);
pub const AppShellVerbHandler: windows_core::GUID = windows_core::GUID::from_u128(0x4ed3a719_cea8_4bd9_910d_e252f997afc2);
pub const AppStartupLink: windows_core::GUID = windows_core::GUID::from_u128(0x273eb5e7_88b0_4843_bfef_e2c81d43aae5);
pub const AppVisibility: windows_core::GUID = windows_core::GUID::from_u128(0x7e5fe3d9_985f_4908_91f9_ee19f9fd1514);
pub const ApplicationActivationManager: windows_core::GUID = windows_core::GUID::from_u128(0x45ba127d_10a8_46ea_8ab7_56ea9078943c);
pub const ApplicationAssociationRegistration: windows_core::GUID = windows_core::GUID::from_u128(0x591209c7_767b_42b2_9fba_44ee4615f2c7);
pub const ApplicationAssociationRegistrationUI: windows_core::GUID = windows_core::GUID::from_u128(0x1968106d_f3b5_44cf_890e_116fcb9ecef1);
pub const ApplicationDesignModeSettings: windows_core::GUID = windows_core::GUID::from_u128(0x958a6fb5_dcb2_4faf_aafd_7fb054ad1a3b);
pub const ApplicationDestinations: windows_core::GUID = windows_core::GUID::from_u128(0x86c14003_4d6b_4ef3_a7b4_0506663b2e68);
pub const ApplicationDocumentLists: windows_core::GUID = windows_core::GUID::from_u128(0x86bec222_30f2_47e0_9f25_60d11cd75c28);
pub const AttachmentServices: windows_core::GUID = windows_core::GUID::from_u128(0x4125dd96_e03a_4103_8f70_e0597d803b9c);
#[repr(C)]
#[cfg(feature = "Win32_UI_Shell_Common")]
#[derive(Clone, Debug, PartialEq)]
pub struct BANDINFOSFB {
    pub dwMask: u32,
    pub dwStateMask: u32,
    pub dwState: u32,
    pub crBkgnd: super::super::Foundation::COLORREF,
    pub crBtnLt: super::super::Foundation::COLORREF,
    pub crBtnDk: super::super::Foundation::COLORREF,
    pub wViewMode: u16,
    pub wAlign: u16,
    pub psf: core::mem::ManuallyDrop<Option<IShellFolder>>,
    pub pidl: *mut Common::ITEMIDLIST,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl Default for BANDINFOSFB {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct BANDSITECID(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct BANDSITEINFO {
    pub dwMask: u32,
    pub dwState: u32,
    pub dwStyle: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct BANNER_NOTIFICATION {
    pub event: BANNER_NOTIFICATION_EVENT,
    pub providerIdentity: windows_core::PCWSTR,
    pub contentId: windows_core::PCWSTR,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct BANNER_NOTIFICATION_EVENT(pub i32);
#[repr(C)]
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
#[derive(Clone, Debug, PartialEq)]
pub struct BASEBROWSERDATALH {
    pub _hwnd: super::super::Foundation::HWND,
    pub _ptl: core::mem::ManuallyDrop<Option<ITravelLog>>,
    pub _phlf: core::mem::ManuallyDrop<Option<IHlinkFrame>>,
    pub _pautoWB2: core::mem::ManuallyDrop<Option<IWebBrowser2>>,
    pub _pautoEDS: core::mem::ManuallyDrop<Option<IExpDispSupport>>,
    pub _pautoSS: core::mem::ManuallyDrop<Option<IShellService>>,
    pub _eSecureLockIcon: i32,
    pub _bitfield: u32,
    pub _uActivateState: u32,
    pub _pidlViewState: *mut Common::ITEMIDLIST,
    pub _pctView: core::mem::ManuallyDrop<Option<super::super::System::Ole::IOleCommandTarget>>,
    pub _pidlCur: *mut Common::ITEMIDLIST,
    pub _psv: core::mem::ManuallyDrop<Option<IShellView>>,
    pub _psf: core::mem::ManuallyDrop<Option<IShellFolder>>,
    pub _hwndView: super::super::Foundation::HWND,
    pub _pszTitleCur: windows_core::PWSTR,
    pub _pidlPending: *mut Common::ITEMIDLIST,
    pub _psvPending: core::mem::ManuallyDrop<Option<IShellView>>,
    pub _psfPending: core::mem::ManuallyDrop<Option<IShellFolder>>,
    pub _hwndViewPending: super::super::Foundation::HWND,
    pub _pszTitlePending: windows_core::PWSTR,
    pub _fIsViewMSHTML: windows_core::BOOL,
    pub _fPrivacyImpacted: windows_core::BOOL,
    pub _clsidView: windows_core::GUID,
    pub _clsidViewPending: windows_core::GUID,
    pub _hwndFrame: super::super::Foundation::HWND,
    pub _lPhishingFilterStatus: i32,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl Default for BASEBROWSERDATALH {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
#[derive(Clone, Debug, PartialEq)]
pub struct BASEBROWSERDATAXP {
    pub _hwnd: super::super::Foundation::HWND,
    pub _ptl: core::mem::ManuallyDrop<Option<ITravelLog>>,
    pub _phlf: core::mem::ManuallyDrop<Option<IHlinkFrame>>,
    pub _pautoWB2: core::mem::ManuallyDrop<Option<IWebBrowser2>>,
    pub _pautoEDS: core::mem::ManuallyDrop<Option<IExpDispSupportXP>>,
    pub _pautoSS: core::mem::ManuallyDrop<Option<IShellService>>,
    pub _eSecureLockIcon: i32,
    pub _bitfield: u32,
    pub _uActivateState: u32,
    pub _pidlViewState: *mut Common::ITEMIDLIST,
    pub _pctView: core::mem::ManuallyDrop<Option<super::super::System::Ole::IOleCommandTarget>>,
    pub _pidlCur: *mut Common::ITEMIDLIST,
    pub _psv: core::mem::ManuallyDrop<Option<IShellView>>,
    pub _psf: core::mem::ManuallyDrop<Option<IShellFolder>>,
    pub _hwndView: super::super::Foundation::HWND,
    pub _pszTitleCur: windows_core::PWSTR,
    pub _pidlPending: *mut Common::ITEMIDLIST,
    pub _psvPending: core::mem::ManuallyDrop<Option<IShellView>>,
    pub _psfPending: core::mem::ManuallyDrop<Option<IShellFolder>>,
    pub _hwndViewPending: super::super::Foundation::HWND,
    pub _pszTitlePending: windows_core::PWSTR,
    pub _fIsViewMSHTML: windows_core::BOOL,
    pub _fPrivacyImpacted: windows_core::BOOL,
    pub _clsidView: windows_core::GUID,
    pub _clsidViewPending: windows_core::GUID,
    pub _hwndFrame: super::super::Foundation::HWND,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl Default for BASEBROWSERDATAXP {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub type BFFCALLBACK = Option<unsafe extern "system" fn(hwnd: super::super::Foundation::HWND, umsg: u32, lparam: super::super::Foundation::LPARAM, lpdata: super::super::Foundation::LPARAM) -> i32>;
pub const BFFM_ENABLEOK: u32 = 1125u32;
pub const BFFM_INITIALIZED: u32 = 1u32;
pub const BFFM_IUNKNOWN: u32 = 5u32;
pub const BFFM_SELCHANGED: u32 = 2u32;
pub const BFFM_SETEXPANDED: u32 = 1130u32;
pub const BFFM_SETOKTEXT: u32 = 1129u32;
pub const BFFM_SETSELECTION: u32 = 1127u32;
pub const BFFM_SETSELECTIONA: u32 = 1126u32;
pub const BFFM_SETSELECTIONW: u32 = 1127u32;
pub const BFFM_SETSTATUSTEXT: u32 = 1128u32;
pub const BFFM_SETSTATUSTEXTA: u32 = 1124u32;
pub const BFFM_SETSTATUSTEXTW: u32 = 1128u32;
pub const BFFM_VALIDATEFAILED: u32 = 4u32;
pub const BFFM_VALIDATEFAILEDA: u32 = 3u32;
pub const BFFM_VALIDATEFAILEDW: u32 = 4u32;
pub const BFO_ADD_IE_TOCAPTIONBAR: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(512i32);
pub const BFO_BOTH_OPTIONS: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(4i32);
pub const BFO_BROWSER_PERSIST_SETTINGS: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(1i32);
pub const BFO_BROWSE_NO_IN_NEW_PROCESS: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(16i32);
pub const BFO_ENABLE_HYPERLINK_TRACKING: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(32i32);
pub const BFO_GO_HOME_PAGE: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(16384i32);
pub const BFO_NONE: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(0i32);
pub const BFO_NO_PARENT_FOLDER_SUPPORT: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(4096i32);
pub const BFO_NO_REOPEN_NEXT_RESTART: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(8192i32);
pub const BFO_PREFER_IEPROCESS: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(32768i32);
pub const BFO_QUERY_ALL: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(-1i32);
pub const BFO_RENAME_FOLDER_OPTIONS_TOINTERNET: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(2i32);
pub const BFO_SHOW_NAVIGATION_CANCELLED: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(65536i32);
pub const BFO_SUBSTITUE_INTERNET_START_PAGE: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(128i32);
pub const BFO_USE_DIALUP_REF: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(1024i32);
pub const BFO_USE_IE_LOGOBANDING: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(256i32);
pub const BFO_USE_IE_OFFLINE_SUPPORT: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(64i32);
pub const BFO_USE_IE_STATUSBAR: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(131072i32);
pub const BFO_USE_IE_TOOLBAR: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(2048i32);
pub const BHID_AssociationArray: windows_core::GUID = windows_core::GUID::from_u128(0xbea9ef17_82f1_4f60_9284_4f8db75c3be9);
pub const BHID_DataObject: windows_core::GUID = windows_core::GUID::from_u128(0xb8c0bd9f_ed24_455c_83e6_d5390c4fe8c4);
pub const BHID_EnumAssocHandlers: windows_core::GUID = windows_core::GUID::from_u128(0xb8ab0b9c_c2ec_4f7a_918d_314900e6280a);
pub const BHID_EnumItems: windows_core::GUID = windows_core::GUID::from_u128(0x94f60519_2850_4924_aa5a_d15e84868039);
pub const BHID_FilePlaceholder: windows_core::GUID = windows_core::GUID::from_u128(0x8677dceb_aae0_4005_8d3d_547fa852f825);
pub const BHID_Filter: windows_core::GUID = windows_core::GUID::from_u128(0x38d08778_f557_4690_9ebf_ba54706ad8f7);
pub const BHID_LinkTargetItem: windows_core::GUID = windows_core::GUID::from_u128(0x3981e228_f559_11d3_8e3a_00c04f6837d5);
pub const BHID_PropertyStore: windows_core::GUID = windows_core::GUID::from_u128(0x0384e1a4_1523_439c_a4c8_ab911052f586);
pub const BHID_RandomAccessStream: windows_core::GUID = windows_core::GUID::from_u128(0xf16fc93b_77ae_4cfe_bda7_a866eea6878d);
pub const BHID_SFObject: windows_core::GUID = windows_core::GUID::from_u128(0x3981e224_f559_11d3_8e3a_00c04f6837d5);
pub const BHID_SFUIObject: windows_core::GUID = windows_core::GUID::from_u128(0x3981e225_f559_11d3_8e3a_00c04f6837d5);
pub const BHID_SFViewObject: windows_core::GUID = windows_core::GUID::from_u128(0x3981e226_f559_11d3_8e3a_00c04f6837d5);
pub const BHID_Storage: windows_core::GUID = windows_core::GUID::from_u128(0x3981e227_f559_11d3_8e3a_00c04f6837d5);
pub const BHID_StorageEnum: windows_core::GUID = windows_core::GUID::from_u128(0x4621a4e3_f0d6_4773_8a9c_46e77b174840);
pub const BHID_StorageItem: windows_core::GUID = windows_core::GUID::from_u128(0x404e2109_77d2_4699_a5a0_4fdf10db9837);
pub const BHID_Stream: windows_core::GUID = windows_core::GUID::from_u128(0x1cebb3ab_7c10_499a_a417_92ca16c4cb83);
pub const BHID_ThumbnailHandler: windows_core::GUID = windows_core::GUID::from_u128(0x7b2e650a_8e20_4f4a_b09e_6597afc72fb0);
pub const BHID_Transfer: windows_core::GUID = windows_core::GUID::from_u128(0xd5e346a1_f753_4932_b403_4574800e2498);
pub const BIF_BROWSEFILEJUNCTIONS: u32 = 65536u32;
pub const BIF_BROWSEFORCOMPUTER: u32 = 4096u32;
pub const BIF_BROWSEFORPRINTER: u32 = 8192u32;
pub const BIF_BROWSEINCLUDEFILES: u32 = 16384u32;
pub const BIF_BROWSEINCLUDEURLS: u32 = 128u32;
pub const BIF_DONTGOBELOWDOMAIN: u32 = 2u32;
pub const BIF_EDITBOX: u32 = 16u32;
pub const BIF_NEWDIALOGSTYLE: u32 = 64u32;
pub const BIF_NONEWFOLDERBUTTON: u32 = 512u32;
pub const BIF_NOTRANSLATETARGETS: u32 = 1024u32;
pub const BIF_PREFER_INTERNET_SHORTCUT: _BROWSERFRAMEOPTIONS = _BROWSERFRAMEOPTIONS(8i32);
pub const BIF_RETURNFSANCESTORS: u32 = 8u32;
pub const BIF_RETURNONLYFSDIRS: u32 = 1u32;
pub const BIF_SHAREABLE: u32 = 32768u32;
pub const BIF_STATUSTEXT: u32 = 4u32;
pub const BIF_UAHINT: u32 = 256u32;
pub const BIF_VALIDATE: u32 = 32u32;
pub const BIND_INTERRUPTABLE: u32 = 4294967295u32;
pub const BMICON_LARGE: i32 = 0i32;
pub const BMICON_SMALL: i32 = 1i32;
pub const BNE_Button1Clicked: BANNER_NOTIFICATION_EVENT = BANNER_NOTIFICATION_EVENT(4i32);
pub const BNE_Button2Clicked: BANNER_NOTIFICATION_EVENT = BANNER_NOTIFICATION_EVENT(5i32);
pub const BNE_Closed: BANNER_NOTIFICATION_EVENT = BANNER_NOTIFICATION_EVENT(2i32);
pub const BNE_Dismissed: BANNER_NOTIFICATION_EVENT = BANNER_NOTIFICATION_EVENT(3i32);
pub const BNE_Hovered: BANNER_NOTIFICATION_EVENT = BANNER_NOTIFICATION_EVENT(1i32);
pub const BNE_Rendered: BANNER_NOTIFICATION_EVENT = BANNER_NOTIFICATION_EVENT(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct BNSTATE(pub i32);
pub const BNS_BEGIN_NAVIGATE: BNSTATE = BNSTATE(1i32);
pub const BNS_NAVIGATE: BNSTATE = BNSTATE(2i32);
pub const BNS_NORMAL: BNSTATE = BNSTATE(0i32);
#[repr(C)]
#[cfg(feature = "Win32_UI_Shell_Common")]
#[derive(Clone, Copy, Debug)]
pub struct BROWSEINFOA {
    pub hwndOwner: super::super::Foundation::HWND,
    pub pidlRoot: *mut Common::ITEMIDLIST,
    pub pszDisplayName: windows_core::PSTR,
    pub lpszTitle: windows_core::PCSTR,
    pub ulFlags: u32,
    pub lpfn: BFFCALLBACK,
    pub lParam: super::super::Foundation::LPARAM,
    pub iImage: i32,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl Default for BROWSEINFOA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_UI_Shell_Common")]
#[derive(Clone, Copy, Debug)]
pub struct BROWSEINFOW {
    pub hwndOwner: super::super::Foundation::HWND,
    pub pidlRoot: *mut Common::ITEMIDLIST,
    pub pszDisplayName: windows_core::PWSTR,
    pub lpszTitle: windows_core::PCWSTR,
    pub ulFlags: u32,
    pub lpfn: BFFCALLBACK,
    pub lParam: super::super::Foundation::LPARAM,
    pub iImage: i32,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl Default for BROWSEINFOW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const BSF_CANMAXIMIZE: u32 = 1024u32;
pub const BSF_DELEGATEDNAVIGATION: u32 = 65536u32;
pub const BSF_DONTSHOWNAVCANCELPAGE: u32 = 16384u32;
pub const BSF_FEEDNAVIGATION: u32 = 524288u32;
pub const BSF_FEEDSUBSCRIBED: u32 = 1048576u32;
pub const BSF_HTMLNAVCANCELED: u32 = 8192u32;
pub const BSF_MERGEDMENUS: u32 = 262144u32;
pub const BSF_NAVNOHISTORY: u32 = 4096u32;
pub const BSF_NOLOCALFILEWARNING: u32 = 16u32;
pub const BSF_REGISTERASDROPTARGET: u32 = 1u32;
pub const BSF_RESIZABLE: u32 = 512u32;
pub const BSF_SETNAVIGATABLECODEPAGE: u32 = 32768u32;
pub const BSF_THEATERMODE: u32 = 2u32;
pub const BSF_TOPBROWSER: u32 = 2048u32;
pub const BSF_TRUSTEDFORACTIVEX: u32 = 131072u32;
pub const BSF_UISETBYAUTOMATION: u32 = 256u32;
pub const BSID_BANDADDED: BANDSITECID = BANDSITECID(0i32);
pub const BSID_BANDREMOVED: BANDSITECID = BANDSITECID(1i32);
pub const BSIM_STATE: u32 = 1u32;
pub const BSIM_STYLE: u32 = 2u32;
pub const BSIS_ALWAYSGRIPPER: u32 = 2u32;
pub const BSIS_AUTOGRIPPER: u32 = 0u32;
pub const BSIS_FIXEDORDER: u32 = 1024u32;
pub const BSIS_LEFTALIGN: u32 = 4u32;
pub const BSIS_LOCKED: u32 = 256u32;
pub const BSIS_NOCAPTION: u32 = 64u32;
pub const BSIS_NOCONTEXTMENU: u32 = 16u32;
pub const BSIS_NODROPTARGET: u32 = 32u32;
pub const BSIS_NOGRIPPER: u32 = 1u32;
pub const BSIS_PREFERNOLINEBREAK: u32 = 128u32;
pub const BSIS_PRESERVEORDERDURINGLAYOUT: u32 = 512u32;
pub const BSIS_SINGLECLICK: u32 = 8u32;
pub const BSSF_NOTITLE: u32 = 2u32;
pub const BSSF_UNDELETEABLE: u32 = 4096u32;
pub const BSSF_VISIBLE: u32 = 1u32;
pub const BUFFLEN: u32 = 255u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct BrowserNavConstants(pub i32);
#[repr(C, packed(1))]
#[derive(Clone, Copy, Default)]
pub struct CABINETSTATE {
    pub cLength: u16,
    pub nVersion: u16,
    pub _bitfield: i32,
    pub fMenuEnumFilter: u32,
}
pub const CABINETSTATE_VERSION: u32 = 2u32;
pub const CAMERAROLL_E_NO_DOWNSAMPLING_REQUIRED: windows_core::HRESULT = windows_core::HRESULT(0x80270120_u32 as _);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CATEGORYINFO_FLAGS(pub i32);
impl CATEGORYINFO_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for CATEGORYINFO_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for CATEGORYINFO_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for CATEGORYINFO_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for CATEGORYINFO_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for CATEGORYINFO_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct CATEGORY_INFO {
    pub cif: CATEGORYINFO_FLAGS,
    pub wszName: [u16; 260],
}
impl Default for CATEGORY_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const CATID_BrowsableShellExt: windows_core::GUID = windows_core::GUID::from_u128(0x00021490_0000_0000_c000_000000000046);
pub const CATID_BrowseInPlace: windows_core::GUID = windows_core::GUID::from_u128(0x00021491_0000_0000_c000_000000000046);
pub const CATID_CommBand: windows_core::GUID = windows_core::GUID::from_u128(0x00021494_0000_0000_c000_000000000046);
pub const CATID_DeskBand: windows_core::GUID = windows_core::GUID::from_u128(0x00021492_0000_0000_c000_000000000046);
pub const CATID_FilePlaceholderMergeHandler: windows_core::GUID = windows_core::GUID::from_u128(0x3e9c9a51_d4aa_4870_b47c_7424b491f1cc);
pub const CATID_InfoBand: windows_core::GUID = windows_core::GUID::from_u128(0x00021493_0000_0000_c000_000000000046);
pub const CATID_LocationFactory: windows_core::GUID = windows_core::GUID::from_u128(0x965c4d51_8b76_4e57_80b7_564d2ea4b55e);
pub const CATID_LocationProvider: windows_core::GUID = windows_core::GUID::from_u128(0x1b3ca474_2614_414b_b813_1aceca3e3dd8);
pub const CATID_SearchableApplication: windows_core::GUID = windows_core::GUID::from_u128(0x366c292a_d9b3_4dbf_bb70_e62ec3d0bbbf);
pub const CATINFO_COLLAPSED: CATEGORYINFO_FLAGS = CATEGORYINFO_FLAGS(1i32);
pub const CATINFO_EXPANDED: CATEGORYINFO_FLAGS = CATEGORYINFO_FLAGS(4i32);
pub const CATINFO_HIDDEN: CATEGORYINFO_FLAGS = CATEGORYINFO_FLAGS(2i32);
pub const CATINFO_NOHEADER: CATEGORYINFO_FLAGS = CATEGORYINFO_FLAGS(8i32);
pub const CATINFO_NOHEADERCOUNT: CATEGORYINFO_FLAGS = CATEGORYINFO_FLAGS(32i32);
pub const CATINFO_NORMAL: CATEGORYINFO_FLAGS = CATEGORYINFO_FLAGS(0i32);
pub const CATINFO_NOTCOLLAPSIBLE: CATEGORYINFO_FLAGS = CATEGORYINFO_FLAGS(16i32);
pub const CATINFO_SEPARATE_IMAGES: CATEGORYINFO_FLAGS = CATEGORYINFO_FLAGS(128i32);
pub const CATINFO_SHOWEMPTY: CATEGORYINFO_FLAGS = CATEGORYINFO_FLAGS(256i32);
pub const CATINFO_SUBSETTED: CATEGORYINFO_FLAGS = CATEGORYINFO_FLAGS(64i32);
pub const CATSORT_DEFAULT: CATSORT_FLAGS = CATSORT_FLAGS(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CATSORT_FLAGS(pub i32);
impl CATSORT_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for CATSORT_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for CATSORT_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for CATSORT_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for CATSORT_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for CATSORT_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const CATSORT_NAME: CATSORT_FLAGS = CATSORT_FLAGS(1i32);
pub const CDB2GVF_ADDSHIELD: u32 = 64u32;
pub const CDB2GVF_ALLOWPREVIEWPANE: u32 = 4u32;
pub const CDB2GVF_ISFILESAVE: u32 = 2u32;
pub const CDB2GVF_ISFOLDERPICKER: u32 = 32u32;
pub const CDB2GVF_NOINCLUDEITEM: u32 = 16u32;
pub const CDB2GVF_NOSELECTVERB: u32 = 8u32;
pub const CDB2GVF_SHOWALLFILES: u32 = 1u32;
pub const CDB2N_CONTEXTMENU_DONE: u32 = 1u32;
pub const CDB2N_CONTEXTMENU_START: u32 = 2u32;
pub const CDBE_RET_DEFAULT: CDBURNINGEXTENSIONRET = CDBURNINGEXTENSIONRET(0i32);
pub const CDBE_RET_DONTRUNOTHEREXTS: CDBURNINGEXTENSIONRET = CDBURNINGEXTENSIONRET(1i32);
pub const CDBE_RET_STOPWIZARD: CDBURNINGEXTENSIONRET = CDBURNINGEXTENSIONRET(2i32);
pub const CDBE_TYPE_ALL: _CDBE_ACTIONS = _CDBE_ACTIONS(-1i32);
pub const CDBE_TYPE_DATA: _CDBE_ACTIONS = _CDBE_ACTIONS(2i32);
pub const CDBE_TYPE_MUSIC: _CDBE_ACTIONS = _CDBE_ACTIONS(1i32);
pub const CDBOSC_KILLFOCUS: u32 = 1u32;
pub const CDBOSC_RENAME: u32 = 3u32;
pub const CDBOSC_SELCHANGE: u32 = 2u32;
pub const CDBOSC_SETFOCUS: u32 = 0u32;
pub const CDBOSC_STATECHANGE: u32 = 4u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CDBURNINGEXTENSIONRET(pub i32);
pub const CDBurn: windows_core::GUID = windows_core::GUID::from_u128(0xfbeb8a05_beee_4442_804e_409d6c4515e9);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CDCONTROLSTATEF(pub i32);
impl CDCONTROLSTATEF {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for CDCONTROLSTATEF {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for CDCONTROLSTATEF {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for CDCONTROLSTATEF {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for CDCONTROLSTATEF {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for CDCONTROLSTATEF {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const CDCS_ENABLED: CDCONTROLSTATEF = CDCONTROLSTATEF(1i32);
pub const CDCS_ENABLEDVISIBLE: CDCONTROLSTATEF = CDCONTROLSTATEF(3i32);
pub const CDCS_INACTIVE: CDCONTROLSTATEF = CDCONTROLSTATEF(0i32);
pub const CDCS_VISIBLE: CDCONTROLSTATEF = CDCONTROLSTATEF(2i32);
pub const CFSTR_AUTOPLAY_SHELLIDLISTS: windows_core::PCWSTR = windows_core::w!("Autoplay Enumerated IDList Array");
pub const CFSTR_DROPDESCRIPTION: windows_core::PCWSTR = windows_core::w!("DropDescription");
pub const CFSTR_FILECONTENTS: windows_core::PCWSTR = windows_core::w!("FileContents");
pub const CFSTR_FILEDESCRIPTOR: windows_core::PCWSTR = windows_core::w!("FileGroupDescriptorW");
pub const CFSTR_FILEDESCRIPTORA: windows_core::PCWSTR = windows_core::w!("FileGroupDescriptor");
pub const CFSTR_FILEDESCRIPTORW: windows_core::PCWSTR = windows_core::w!("FileGroupDescriptorW");
pub const CFSTR_FILENAME: windows_core::PCWSTR = windows_core::w!("FileNameW");
pub const CFSTR_FILENAMEA: windows_core::PCWSTR = windows_core::w!("FileName");
pub const CFSTR_FILENAMEMAP: windows_core::PCWSTR = windows_core::w!("FileNameMapW");
pub const CFSTR_FILENAMEMAPA: windows_core::PCWSTR = windows_core::w!("FileNameMap");
pub const CFSTR_FILENAMEMAPW: windows_core::PCWSTR = windows_core::w!("FileNameMapW");
pub const CFSTR_FILENAMEW: windows_core::PCWSTR = windows_core::w!("FileNameW");
pub const CFSTR_FILE_ATTRIBUTES_ARRAY: windows_core::PCWSTR = windows_core::w!("File Attributes Array");
pub const CFSTR_INDRAGLOOP: windows_core::PCWSTR = windows_core::w!("InShellDragLoop");
pub const CFSTR_INETURL: windows_core::PCWSTR = windows_core::w!("UniformResourceLocatorW");
pub const CFSTR_INETURLA: windows_core::PCWSTR = windows_core::w!("UniformResourceLocator");
pub const CFSTR_INETURLW: windows_core::PCWSTR = windows_core::w!("UniformResourceLocatorW");
pub const CFSTR_INVOKECOMMAND_DROPPARAM: windows_core::PCWSTR = windows_core::w!("InvokeCommand DropParam");
pub const CFSTR_LOGICALPERFORMEDDROPEFFECT: windows_core::PCWSTR = windows_core::w!("Logical Performed DropEffect");
pub const CFSTR_MOUNTEDVOLUME: windows_core::PCWSTR = windows_core::w!("MountedVolume");
pub const CFSTR_NETRESOURCES: windows_core::PCWSTR = windows_core::w!("Net Resource");
pub const CFSTR_PASTESUCCEEDED: windows_core::PCWSTR = windows_core::w!("Paste Succeeded");
pub const CFSTR_PERFORMEDDROPEFFECT: windows_core::PCWSTR = windows_core::w!("Performed DropEffect");
pub const CFSTR_PERSISTEDDATAOBJECT: windows_core::PCWSTR = windows_core::w!("PersistedDataObject");
pub const CFSTR_PREFERREDDROPEFFECT: windows_core::PCWSTR = windows_core::w!("Preferred DropEffect");
pub const CFSTR_PRINTERGROUP: windows_core::PCWSTR = windows_core::w!("PrinterFriendlyName");
pub const CFSTR_SHELLDROPHANDLER: windows_core::PCWSTR = windows_core::w!("DropHandlerCLSID");
pub const CFSTR_SHELLIDLIST: windows_core::PCWSTR = windows_core::w!("Shell IDList Array");
pub const CFSTR_SHELLIDLISTOFFSET: windows_core::PCWSTR = windows_core::w!("Shell Object Offsets");
pub const CFSTR_SHELLURL: windows_core::PCWSTR = windows_core::w!("UniformResourceLocator");
pub const CFSTR_TARGETCLSID: windows_core::PCWSTR = windows_core::w!("TargetCLSID");
pub const CFSTR_UNTRUSTEDDRAGDROP: windows_core::PCWSTR = windows_core::w!("UntrustedDragDrop");
pub const CFSTR_ZONEIDENTIFIER: windows_core::PCWSTR = windows_core::w!("ZoneIdentifier");
pub const CGID_DefView: windows_core::GUID = windows_core::GUID::from_u128(0x4af07f10_d231_11d0_b942_00a0c90312e1);
pub const CGID_Explorer: windows_core::GUID = windows_core::GUID::from_u128(0x000214d0_0000_0000_c000_000000000046);
pub const CGID_ExplorerBarDoc: windows_core::GUID = windows_core::GUID::from_u128(0x000214d3_0000_0000_c000_000000000046);
pub const CGID_MENUDESKBAR: windows_core::GUID = windows_core::GUID::from_u128(0x5c9f0a12_959e_11d0_a3a4_00a0c9082636);
pub const CGID_ShellDocView: windows_core::GUID = windows_core::GUID::from_u128(0x000214d1_0000_0000_c000_000000000046);
pub const CGID_ShellServiceObject: windows_core::GUID = windows_core::GUID::from_u128(0x000214d2_0000_0000_c000_000000000046);
pub const CGID_ShortCut: windows_core::GUID = windows_core::GUID::from_u128(0x93a68750_951a_11d1_946f_000000000000);
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct CIDA {
    pub cidl: u32,
    pub aoffset: [u32; 1],
}
impl Default for CIDA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(CIE4ConnectionPoint, CIE4ConnectionPoint_Vtbl, 0);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for CIE4ConnectionPoint {
    type Target = super::super::System::Com::IConnectionPoint;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(CIE4ConnectionPoint, windows_core::IUnknown, super::super::System::Com::IConnectionPoint);
#[cfg(feature = "Win32_System_Com")]
impl CIE4ConnectionPoint {
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn DoInvokeIE4(&self, pf: *mut windows_core::BOOL, ppv: *mut *mut core::ffi::c_void, dispid: i32, pdispparams: *mut super::super::System::Com::DISPPARAMS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DoInvokeIE4)(windows_core::Interface::as_raw(self), pf as _, ppv as _, dispid, pdispparams as _).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn DoInvokePIDLIE4(&self, dispid: i32, pidl: *mut Common::ITEMIDLIST, fcancancel: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DoInvokePIDLIE4)(windows_core::Interface::as_raw(self), dispid, pidl as _, fcancancel.into()).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct CIE4ConnectionPoint_Vtbl {
    pub base__: super::super::System::Com::IConnectionPoint_Vtbl,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub DoInvokeIE4: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL, *mut *mut core::ffi::c_void, i32, *mut super::super::System::Com::DISPPARAMS) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    DoInvokeIE4: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub DoInvokePIDLIE4: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut Common::ITEMIDLIST, windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    DoInvokePIDLIE4: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
pub trait CIE4ConnectionPoint_Impl: super::super::System::Com::IConnectionPoint_Impl {
    fn DoInvokeIE4(&self, pf: *mut windows_core::BOOL, ppv: *mut *mut core::ffi::c_void, dispid: i32, pdispparams: *mut super::super::System::Com::DISPPARAMS) -> windows_core::Result<()>;
    fn DoInvokePIDLIE4(&self, dispid: i32, pidl: *mut Common::ITEMIDLIST, fcancancel: windows_core::BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
impl CIE4ConnectionPoint_Vtbl {
    pub const fn new<Identity: CIE4ConnectionPoint_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn DoInvokeIE4<Identity: CIE4ConnectionPoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pf: *mut windows_core::BOOL, ppv: *mut *mut core::ffi::c_void, dispid: i32, pdispparams: *mut super::super::System::Com::DISPPARAMS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                CIE4ConnectionPoint_Impl::DoInvokeIE4(this, core::mem::transmute_copy(&pf), core::mem::transmute_copy(&ppv), core::mem::transmute_copy(&dispid), core::mem::transmute_copy(&pdispparams)).into()
            }
        }
        unsafe extern "system" fn DoInvokePIDLIE4<Identity: CIE4ConnectionPoint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dispid: i32, pidl: *mut Common::ITEMIDLIST, fcancancel: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                CIE4ConnectionPoint_Impl::DoInvokePIDLIE4(this, core::mem::transmute_copy(&dispid), core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&fcancancel)).into()
            }
        }
        Self {
            base__: super::super::System::Com::IConnectionPoint_Vtbl::new::<Identity, OFFSET>(),
            DoInvokeIE4: DoInvokeIE4::<Identity, OFFSET>,
            DoInvokePIDLIE4: DoInvokePIDLIE4::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<CIE4ConnectionPoint as windows_core::Interface>::IID || iid == &<super::super::System::Com::IConnectionPoint as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for CIE4ConnectionPoint {}
pub const CLOSEPROPS_DISCARD: u32 = 1u32;
pub const CLOSEPROPS_NONE: u32 = 0u32;
pub const CLSID_ACLCustomMRU: windows_core::GUID = windows_core::GUID::from_u128(0x6935db93_21e8_4ccc_beb9_9fe3c77a297a);
pub const CLSID_ACLHistory: windows_core::GUID = windows_core::GUID::from_u128(0x00bb2764_6a77_11d0_a535_00c04fd7d062);
pub const CLSID_ACLMRU: windows_core::GUID = windows_core::GUID::from_u128(0x6756a641_de71_11d0_831b_00aa005b4383);
pub const CLSID_ACLMulti: windows_core::GUID = windows_core::GUID::from_u128(0x00bb2765_6a77_11d0_a535_00c04fd7d062);
pub const CLSID_ACListISF: windows_core::GUID = windows_core::GUID::from_u128(0x03c036f1_a186_11d0_824a_00aa005b4383);
pub const CLSID_ActiveDesktop: windows_core::GUID = windows_core::GUID::from_u128(0x75048700_ef1f_11d0_9888_006097deacf9);
pub const CLSID_AutoComplete: windows_core::GUID = windows_core::GUID::from_u128(0x00bb2763_6a77_11d0_a535_00c04fd7d062);
pub const CLSID_CAnchorBrowsePropertyPage: windows_core::GUID = windows_core::GUID::from_u128(0x3050f3bb_98b5_11cf_bb82_00aa00bdce0b);
pub const CLSID_CDocBrowsePropertyPage: windows_core::GUID = windows_core::GUID::from_u128(0x3050f3b4_98b5_11cf_bb82_00aa00bdce0b);
pub const CLSID_CFSIconOverlayManager: windows_core::GUID = windows_core::GUID::from_u128(0x63b51f81_c868_11d0_999c_00c04fd655e1);
pub const CLSID_CImageBrowsePropertyPage: windows_core::GUID = windows_core::GUID::from_u128(0x3050f3b3_98b5_11cf_bb82_00aa00bdce0b);
pub const CLSID_CURLSearchHook: windows_core::GUID = windows_core::GUID::from_u128(0xcfbfae00_17a6_11d0_99cb_00c04fd64497);
pub const CLSID_CUrlHistory: windows_core::GUID = windows_core::GUID::from_u128(0x3c374a40_bae4_11cf_bf7d_00aa006946ee);
pub const CLSID_CUrlHistoryBoth: windows_core::GUID = windows_core::GUID::from_u128(0x6659983c_8476_4eb4_b78c_e5968f326ba0);
pub const CLSID_ControlPanel: windows_core::GUID = windows_core::GUID::from_u128(0x21ec2020_3aea_1069_a2dd_08002b30309d);
pub const CLSID_DarwinAppPublisher: windows_core::GUID = windows_core::GUID::from_u128(0xcfccc7a0_a282_11d1_9082_006008059382);
pub const CLSID_DocHostUIHandler: windows_core::GUID = windows_core::GUID::from_u128(0x7057e952_bd1b_11d1_8919_00c04fc2c836);
pub const CLSID_DragDropHelper: windows_core::GUID = windows_core::GUID::from_u128(0x4657278a_411b_11d2_839a_00c04fd918d0);
pub const CLSID_FileTypes: windows_core::GUID = windows_core::GUID::from_u128(0xb091e540_83e3_11cf_a713_0020afd79762);
pub const CLSID_FolderItemsMultiLevel: windows_core::GUID = windows_core::GUID::from_u128(0x53c74826_ab99_4d33_aca4_3117f51d3788);
pub const CLSID_FolderShortcut: windows_core::GUID = windows_core::GUID::from_u128(0x0afaced1_e828_11d1_9187_b532f1e9575d);
pub const CLSID_HWShellExecute: windows_core::GUID = windows_core::GUID::from_u128(0xffb8655f_81b9_4fce_b89c_9a6ba76d13e7);
pub const CLSID_ISFBand: windows_core::GUID = windows_core::GUID::from_u128(0xd82be2b0_5764_11d0_a96e_00c04fd705a2);
pub const CLSID_Internet: windows_core::GUID = windows_core::GUID::from_u128(0x871c5380_42a0_1069_a2ea_08002b30309d);
pub const CLSID_InternetButtons: windows_core::GUID = windows_core::GUID::from_u128(0x1e796980_9cc5_11d1_a83f_00c04fc99d61);
pub const CLSID_InternetShortcut: windows_core::GUID = windows_core::GUID::from_u128(0xfbf23b40_e3f0_101b_8488_00aa003e56f8);
pub const CLSID_LinkColumnProvider: windows_core::GUID = windows_core::GUID::from_u128(0x24f14f02_7b1c_11d1_838f_0000f80461cf);
pub const CLSID_MSOButtons: windows_core::GUID = windows_core::GUID::from_u128(0x178f34b8_a282_11d2_86c5_00c04f8eea99);
pub const CLSID_MenuBand: windows_core::GUID = windows_core::GUID::from_u128(0x5b4dae26_b807_11d0_9815_00c04fd91972);
pub const CLSID_MenuBandSite: windows_core::GUID = windows_core::GUID::from_u128(0xe13ef4e4_d2f2_11d0_9816_00c04fd91972);
pub const CLSID_MenuToolbarBase: windows_core::GUID = windows_core::GUID::from_u128(0x40b96610_b522_11d1_b3b4_00aa006efde7);
pub const CLSID_MyComputer: windows_core::GUID = windows_core::GUID::from_u128(0x20d04fe0_3aea_1069_a2d8_08002b30309d);
pub const CLSID_MyDocuments: windows_core::GUID = windows_core::GUID::from_u128(0x450d8fba_ad25_11d0_98a8_0800361b1103);
pub const CLSID_NetworkDomain: windows_core::GUID = windows_core::GUID::from_u128(0x46e06680_4bf0_11d1_83ee_00a0c90dc849);
pub const CLSID_NetworkServer: windows_core::GUID = windows_core::GUID::from_u128(0xc0542a90_4bf0_11d1_83ee_00a0c90dc849);
pub const CLSID_NetworkShare: windows_core::GUID = windows_core::GUID::from_u128(0x54a754c0_4bf0_11d1_83ee_00a0c90dc849);
pub const CLSID_NewMenu: windows_core::GUID = windows_core::GUID::from_u128(0xd969a300_e7ff_11d0_a93b_00a0c90f2719);
pub const CLSID_Printers: windows_core::GUID = windows_core::GUID::from_u128(0x2227a280_3aea_1069_a2de_08002b30309d);
pub const CLSID_ProgressDialog: windows_core::GUID = windows_core::GUID::from_u128(0xf8383852_fcd3_11d1_a6b9_006097df5bd4);
pub const CLSID_QueryAssociations: windows_core::GUID = windows_core::GUID::from_u128(0xa07034fd_6caa_4954_ac3f_97a27216f98a);
pub const CLSID_QuickLinks: windows_core::GUID = windows_core::GUID::from_u128(0x0e5cbf21_d15f_11d0_8301_00aa005b4383);
pub const CLSID_RecycleBin: windows_core::GUID = windows_core::GUID::from_u128(0x645ff040_5081_101b_9f08_00aa002f954e);
pub const CLSID_ShellFldSetExt: windows_core::GUID = windows_core::GUID::from_u128(0x6d5313c0_8c62_11d1_b2cd_006097df8c11);
pub const CLSID_ShellThumbnailDiskCache: windows_core::GUID = windows_core::GUID::from_u128(0x1ebdcf80_a200_11d0_a3a4_00c04fd706ec);
pub const CLSID_ToolbarExtButtons: windows_core::GUID = windows_core::GUID::from_u128(0x2ce4b5d8_a28f_11d2_86c5_00c04f8eea99);
pub const CMDID_INTSHORTCUTCREATE: i32 = 1i32;
pub const CMDSTR_NEWFOLDER: windows_core::PCWSTR = windows_core::w!("NewFolder");
pub const CMDSTR_NEWFOLDERA: windows_core::PCSTR = windows_core::s!("NewFolder");
pub const CMDSTR_NEWFOLDERW: windows_core::PCWSTR = windows_core::w!("NewFolder");
pub const CMDSTR_VIEWDETAILS: windows_core::PCWSTR = windows_core::w!("ViewDetails");
pub const CMDSTR_VIEWDETAILSA: windows_core::PCSTR = windows_core::s!("ViewDetails");
pub const CMDSTR_VIEWDETAILSW: windows_core::PCWSTR = windows_core::w!("ViewDetails");
pub const CMDSTR_VIEWLIST: windows_core::PCWSTR = windows_core::w!("ViewList");
pub const CMDSTR_VIEWLISTA: windows_core::PCSTR = windows_core::s!("ViewList");
pub const CMDSTR_VIEWLISTW: windows_core::PCWSTR = windows_core::w!("ViewList");
pub const CMF_ASYNCVERBSTATE: u32 = 1024u32;
pub const CMF_CANRENAME: u32 = 16u32;
pub const CMF_DEFAULTONLY: u32 = 1u32;
pub const CMF_DISABLEDVERBS: u32 = 512u32;
pub const CMF_DONOTPICKDEFAULT: u32 = 8192u32;
pub const CMF_EXPLORE: u32 = 4u32;
pub const CMF_EXTENDEDVERBS: u32 = 256u32;
pub const CMF_INCLUDESTATIC: u32 = 64u32;
pub const CMF_ITEMMENU: u32 = 128u32;
pub const CMF_NODEFAULT: u32 = 32u32;
pub const CMF_NORMAL: u32 = 0u32;
pub const CMF_NOVERBS: u32 = 8u32;
pub const CMF_OPTIMIZEFORINVOKE: u32 = 2048u32;
pub const CMF_RESERVED: u32 = 4294901760u32;
pub const CMF_SYNCCASCADEMENU: u32 = 4096u32;
pub const CMF_VERBSONLY: u32 = 2u32;
pub const CMIC_MASK_CONTROL_DOWN: u32 = 1073741824u32;
pub const CMIC_MASK_PTINVOKE: u32 = 536870912u32;
pub const CMIC_MASK_SHIFT_DOWN: u32 = 268435456u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct CMINVOKECOMMANDINFO {
    pub cbSize: u32,
    pub fMask: u32,
    pub hwnd: super::super::Foundation::HWND,
    pub lpVerb: windows_core::PCSTR,
    pub lpParameters: windows_core::PCSTR,
    pub lpDirectory: windows_core::PCSTR,
    pub nShow: i32,
    pub dwHotKey: u32,
    pub hIcon: super::super::Foundation::HANDLE,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct CMINVOKECOMMANDINFOEX {
    pub cbSize: u32,
    pub fMask: u32,
    pub hwnd: super::super::Foundation::HWND,
    pub lpVerb: windows_core::PCSTR,
    pub lpParameters: windows_core::PCSTR,
    pub lpDirectory: windows_core::PCSTR,
    pub nShow: i32,
    pub dwHotKey: u32,
    pub hIcon: super::super::Foundation::HANDLE,
    pub lpTitle: windows_core::PCSTR,
    pub lpVerbW: windows_core::PCWSTR,
    pub lpParametersW: windows_core::PCWSTR,
    pub lpDirectoryW: windows_core::PCWSTR,
    pub lpTitleW: windows_core::PCWSTR,
    pub ptInvoke: super::super::Foundation::POINT,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct CMINVOKECOMMANDINFOEX_REMOTE {
    pub cbSize: u32,
    pub fMask: u32,
    pub hwnd: super::super::Foundation::HWND,
    pub lpVerbString: windows_core::PCSTR,
    pub lpParameters: windows_core::PCSTR,
    pub lpDirectory: windows_core::PCSTR,
    pub nShow: i32,
    pub dwHotKey: u32,
    pub lpTitle: windows_core::PCSTR,
    pub lpVerbWString: windows_core::PCWSTR,
    pub lpParametersW: windows_core::PCWSTR,
    pub lpDirectoryW: windows_core::PCWSTR,
    pub lpTitleW: windows_core::PCWSTR,
    pub ptInvoke: super::super::Foundation::POINT,
    pub lpVerbInt: u32,
    pub lpVerbWInt: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct CM_COLUMNINFO {
    pub cbSize: u32,
    pub dwMask: u32,
    pub dwState: u32,
    pub uWidth: u32,
    pub uDefaultWidth: u32,
    pub uIdealWidth: u32,
    pub wszName: [u16; 80],
}
impl Default for CM_COLUMNINFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const CM_ENUM_ALL: CM_ENUM_FLAGS = CM_ENUM_FLAGS(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CM_ENUM_FLAGS(pub i32);
impl CM_ENUM_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for CM_ENUM_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for CM_ENUM_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for CM_ENUM_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for CM_ENUM_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for CM_ENUM_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const CM_ENUM_VISIBLE: CM_ENUM_FLAGS = CM_ENUM_FLAGS(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CM_MASK(pub i32);
impl CM_MASK {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for CM_MASK {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for CM_MASK {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for CM_MASK {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for CM_MASK {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for CM_MASK {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const CM_MASK_DEFAULTWIDTH: CM_MASK = CM_MASK(2i32);
pub const CM_MASK_IDEALWIDTH: CM_MASK = CM_MASK(4i32);
pub const CM_MASK_NAME: CM_MASK = CM_MASK(8i32);
pub const CM_MASK_STATE: CM_MASK = CM_MASK(16i32);
pub const CM_MASK_WIDTH: CM_MASK = CM_MASK(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CM_SET_WIDTH_VALUE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CM_STATE(pub i32);
impl CM_STATE {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for CM_STATE {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for CM_STATE {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for CM_STATE {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for CM_STATE {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for CM_STATE {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const CM_STATE_ALWAYSVISIBLE: CM_STATE = CM_STATE(8i32);
pub const CM_STATE_FIXEDWIDTH: CM_STATE = CM_STATE(2i32);
pub const CM_STATE_NONE: CM_STATE = CM_STATE(0i32);
pub const CM_STATE_NOSORTBYFOLDERNESS: CM_STATE = CM_STATE(4i32);
pub const CM_STATE_VISIBLE: CM_STATE = CM_STATE(1i32);
pub const CM_WIDTH_AUTOSIZE: CM_SET_WIDTH_VALUE = CM_SET_WIDTH_VALUE(-2i32);
pub const CM_WIDTH_USEDEFAULT: CM_SET_WIDTH_VALUE = CM_SET_WIDTH_VALUE(-1i32);
pub const COMPONENT_DEFAULT_LEFT: u32 = 65535u32;
pub const COMPONENT_DEFAULT_TOP: u32 = 65535u32;
pub const COMPONENT_TOP: u32 = 1073741823u32;
pub const COMP_ELEM_CHECKED: u32 = 2u32;
pub const COMP_ELEM_CURITEMSTATE: u32 = 16384u32;
pub const COMP_ELEM_DIRTY: u32 = 4u32;
pub const COMP_ELEM_FRIENDLYNAME: u32 = 1024u32;
pub const COMP_ELEM_NOSCROLL: u32 = 8u32;
pub const COMP_ELEM_ORIGINAL_CSI: u32 = 4096u32;
pub const COMP_ELEM_POS_LEFT: u32 = 16u32;
pub const COMP_ELEM_POS_TOP: u32 = 32u32;
pub const COMP_ELEM_POS_ZINDEX: u32 = 256u32;
pub const COMP_ELEM_RESTORED_CSI: u32 = 8192u32;
pub const COMP_ELEM_SIZE_HEIGHT: u32 = 128u32;
pub const COMP_ELEM_SIZE_WIDTH: u32 = 64u32;
pub const COMP_ELEM_SOURCE: u32 = 512u32;
pub const COMP_ELEM_SUBSCRIBEDURL: u32 = 2048u32;
pub const COMP_ELEM_TYPE: u32 = 1u32;
pub const COMP_TYPE_CFHTML: u32 = 4u32;
pub const COMP_TYPE_CONTROL: u32 = 3u32;
pub const COMP_TYPE_HTMLDOC: u32 = 0u32;
pub const COMP_TYPE_MAX: u32 = 4u32;
pub const COMP_TYPE_PICTURE: u32 = 1u32;
pub const COMP_TYPE_WEBSITE: u32 = 2u32;
#[repr(C)]
#[derive(Clone, Debug, Default, PartialEq)]
pub struct CONFIRM_CONFLICT_ITEM {
    pub pShellItem: core::mem::ManuallyDrop<Option<IShellItem2>>,
    pub pszOriginalName: windows_core::PWSTR,
    pub pszAlternateName: windows_core::PWSTR,
    pub pszLocationShort: windows_core::PWSTR,
    pub pszLocationFull: windows_core::PWSTR,
    pub nType: SYNCMGR_CONFLICT_ITEM_TYPE,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct CONFIRM_CONFLICT_RESULT_INFO {
    pub pszNewName: windows_core::PWSTR,
    pub iItemIndex: u32,
}
pub const CONFLICT_RESOLUTION_CLSID_KEY: windows_core::PCWSTR = windows_core::w!("ConflictResolutionCLSID");
pub const COPYENGINE_E_ACCESSDENIED_READONLY: windows_core::HRESULT = windows_core::HRESULT(0x8027003F_u32 as _);
pub const COPYENGINE_E_ACCESS_DENIED_DEST: windows_core::HRESULT = windows_core::HRESULT(0x80270022_u32 as _);
pub const COPYENGINE_E_ACCESS_DENIED_SRC: windows_core::HRESULT = windows_core::HRESULT(0x80270021_u32 as _);
pub const COPYENGINE_E_ALREADY_EXISTS_FOLDER: windows_core::HRESULT = windows_core::HRESULT(0x8027002C_u32 as _);
pub const COPYENGINE_E_ALREADY_EXISTS_NORMAL: windows_core::HRESULT = windows_core::HRESULT(0x80270029_u32 as _);
pub const COPYENGINE_E_ALREADY_EXISTS_READONLY: windows_core::HRESULT = windows_core::HRESULT(0x8027002A_u32 as _);
pub const COPYENGINE_E_ALREADY_EXISTS_SYSTEM: windows_core::HRESULT = windows_core::HRESULT(0x8027002B_u32 as _);
pub const COPYENGINE_E_BLOCKED_BY_DLP_POLICY: windows_core::HRESULT = windows_core::HRESULT(0x8027004E_u32 as _);
pub const COPYENGINE_E_BLOCKED_BY_EDP_FOR_REMOVABLE_DRIVE: windows_core::HRESULT = windows_core::HRESULT(0x8027004A_u32 as _);
pub const COPYENGINE_E_BLOCKED_BY_EDP_POLICY: windows_core::HRESULT = windows_core::HRESULT(0x80270048_u32 as _);
pub const COPYENGINE_E_CANCELLED: windows_core::HRESULT = windows_core::HRESULT(0x80270001_u32 as _);
pub const COPYENGINE_E_CANNOT_MOVE_FROM_RECYCLE_BIN: windows_core::HRESULT = windows_core::HRESULT(0x80270043_u32 as _);
pub const COPYENGINE_E_CANNOT_MOVE_SHARED_FOLDER: windows_core::HRESULT = windows_core::HRESULT(0x80270044_u32 as _);
pub const COPYENGINE_E_CANT_REACH_SOURCE: windows_core::HRESULT = windows_core::HRESULT(0x80270035_u32 as _);
pub const COPYENGINE_E_DEST_IS_RO_CD: windows_core::HRESULT = windows_core::HRESULT(0x8027000F_u32 as _);
pub const COPYENGINE_E_DEST_IS_RO_DVD: windows_core::HRESULT = windows_core::HRESULT(0x80270012_u32 as _);
pub const COPYENGINE_E_DEST_IS_RW_CD: windows_core::HRESULT = windows_core::HRESULT(0x80270010_u32 as _);
pub const COPYENGINE_E_DEST_IS_RW_DVD: windows_core::HRESULT = windows_core::HRESULT(0x80270013_u32 as _);
pub const COPYENGINE_E_DEST_IS_R_CD: windows_core::HRESULT = windows_core::HRESULT(0x80270011_u32 as _);
pub const COPYENGINE_E_DEST_IS_R_DVD: windows_core::HRESULT = windows_core::HRESULT(0x80270014_u32 as _);
pub const COPYENGINE_E_DEST_SAME_TREE: windows_core::HRESULT = windows_core::HRESULT(0x8027000A_u32 as _);
pub const COPYENGINE_E_DEST_SUBTREE: windows_core::HRESULT = windows_core::HRESULT(0x80270009_u32 as _);
pub const COPYENGINE_E_DIFF_DIR: windows_core::HRESULT = windows_core::HRESULT(0x80270004_u32 as _);
pub const COPYENGINE_E_DIR_NOT_EMPTY: windows_core::HRESULT = windows_core::HRESULT(0x8027003D_u32 as _);
pub const COPYENGINE_E_DISK_FULL: windows_core::HRESULT = windows_core::HRESULT(0x80270032_u32 as _);
pub const COPYENGINE_E_DISK_FULL_CLEAN: windows_core::HRESULT = windows_core::HRESULT(0x80270033_u32 as _);
pub const COPYENGINE_E_EA_LOSS: windows_core::HRESULT = windows_core::HRESULT(0x8027002E_u32 as _);
pub const COPYENGINE_E_EA_NOT_SUPPORTED: windows_core::HRESULT = windows_core::HRESULT(0x80270034_u32 as _);
pub const COPYENGINE_E_ENCRYPTION_LOSS: windows_core::HRESULT = windows_core::HRESULT(0x80270031_u32 as _);
pub const COPYENGINE_E_FAT_MAX_IN_ROOT: windows_core::HRESULT = windows_core::HRESULT(0x8027003E_u32 as _);
pub const COPYENGINE_E_FILE_IS_FLD_DEST: windows_core::HRESULT = windows_core::HRESULT(0x8027000C_u32 as _);
pub const COPYENGINE_E_FILE_TOO_LARGE: windows_core::HRESULT = windows_core::HRESULT(0x8027000D_u32 as _);
pub const COPYENGINE_E_FLD_IS_FILE_DEST: windows_core::HRESULT = windows_core::HRESULT(0x8027000B_u32 as _);
pub const COPYENGINE_E_INTERNET_ITEM_STORAGE_PROVIDER_ERROR: windows_core::HRESULT = windows_core::HRESULT(0x80270045_u32 as _);
pub const COPYENGINE_E_INTERNET_ITEM_STORAGE_PROVIDER_PAUSED: windows_core::HRESULT = windows_core::HRESULT(0x80270046_u32 as _);
pub const COPYENGINE_E_INTERNET_ITEM_UNAVAILABLE: windows_core::HRESULT = windows_core::HRESULT(0x80270042_u32 as _);
pub const COPYENGINE_E_INVALID_FILES_DEST: windows_core::HRESULT = windows_core::HRESULT(0x8027001C_u32 as _);
pub const COPYENGINE_E_INVALID_FILES_SRC: windows_core::HRESULT = windows_core::HRESULT(0x8027001B_u32 as _);
pub const COPYENGINE_E_MANY_SRC_1_DEST: windows_core::HRESULT = windows_core::HRESULT(0x80270005_u32 as _);
pub const COPYENGINE_E_NET_DISCONNECT_DEST: windows_core::HRESULT = windows_core::HRESULT(0x80270026_u32 as _);
pub const COPYENGINE_E_NET_DISCONNECT_SRC: windows_core::HRESULT = windows_core::HRESULT(0x80270025_u32 as _);
pub const COPYENGINE_E_NEWFILE_NAME_TOO_LONG: windows_core::HRESULT = windows_core::HRESULT(0x8027003B_u32 as _);
pub const COPYENGINE_E_NEWFOLDER_NAME_TOO_LONG: windows_core::HRESULT = windows_core::HRESULT(0x8027003C_u32 as _);
pub const COPYENGINE_E_PATH_NOT_FOUND_DEST: windows_core::HRESULT = windows_core::HRESULT(0x80270024_u32 as _);
pub const COPYENGINE_E_PATH_NOT_FOUND_SRC: windows_core::HRESULT = windows_core::HRESULT(0x80270023_u32 as _);
pub const COPYENGINE_E_PATH_TOO_DEEP_DEST: windows_core::HRESULT = windows_core::HRESULT(0x8027001E_u32 as _);
pub const COPYENGINE_E_PATH_TOO_DEEP_SRC: windows_core::HRESULT = windows_core::HRESULT(0x8027001D_u32 as _);
pub const COPYENGINE_E_PROPERTIES_LOSS: windows_core::HRESULT = windows_core::HRESULT(0x80270030_u32 as _);
pub const COPYENGINE_E_PROPERTY_LOSS: windows_core::HRESULT = windows_core::HRESULT(0x8027002F_u32 as _);
pub const COPYENGINE_E_RECYCLE_BIN_NOT_FOUND: windows_core::HRESULT = windows_core::HRESULT(0x8027003A_u32 as _);
pub const COPYENGINE_E_RECYCLE_FORCE_NUKE: windows_core::HRESULT = windows_core::HRESULT(0x80270036_u32 as _);
pub const COPYENGINE_E_RECYCLE_PATH_TOO_LONG: windows_core::HRESULT = windows_core::HRESULT(0x80270038_u32 as _);
pub const COPYENGINE_E_RECYCLE_SIZE_TOO_BIG: windows_core::HRESULT = windows_core::HRESULT(0x80270037_u32 as _);
pub const COPYENGINE_E_RECYCLE_UNKNOWN_ERROR: windows_core::HRESULT = windows_core::HRESULT(0x80270035_u32 as _);
pub const COPYENGINE_E_REDIRECTED_TO_WEBPAGE: windows_core::HRESULT = windows_core::HRESULT(0x80270040_u32 as _);
pub const COPYENGINE_E_REMOVABLE_FULL: windows_core::HRESULT = windows_core::HRESULT(0x8027000E_u32 as _);
pub const COPYENGINE_E_REQUIRES_EDP_CONSENT: windows_core::HRESULT = windows_core::HRESULT(0x80270047_u32 as _);
pub const COPYENGINE_E_REQUIRES_EDP_CONSENT_FOR_REMOVABLE_DRIVE: windows_core::HRESULT = windows_core::HRESULT(0x80270049_u32 as _);
pub const COPYENGINE_E_REQUIRES_ELEVATION: windows_core::HRESULT = windows_core::HRESULT(0x80270002_u32 as _);
pub const COPYENGINE_E_RMS_BLOCKED_BY_EDP_FOR_REMOVABLE_DRIVE: windows_core::HRESULT = windows_core::HRESULT(0x8027004C_u32 as _);
pub const COPYENGINE_E_RMS_REQUIRES_EDP_CONSENT_FOR_REMOVABLE_DRIVE: windows_core::HRESULT = windows_core::HRESULT(0x8027004B_u32 as _);
pub const COPYENGINE_E_ROOT_DIR_DEST: windows_core::HRESULT = windows_core::HRESULT(0x80270020_u32 as _);
pub const COPYENGINE_E_ROOT_DIR_SRC: windows_core::HRESULT = windows_core::HRESULT(0x8027001F_u32 as _);
pub const COPYENGINE_E_SAME_FILE: windows_core::HRESULT = windows_core::HRESULT(0x80270003_u32 as _);
pub const COPYENGINE_E_SERVER_BAD_FILE_TYPE: windows_core::HRESULT = windows_core::HRESULT(0x80270041_u32 as _);
pub const COPYENGINE_E_SHARING_VIOLATION_DEST: windows_core::HRESULT = windows_core::HRESULT(0x80270028_u32 as _);
pub const COPYENGINE_E_SHARING_VIOLATION_SRC: windows_core::HRESULT = windows_core::HRESULT(0x80270027_u32 as _);
pub const COPYENGINE_E_SILENT_FAIL_BY_DLP_POLICY: windows_core::HRESULT = windows_core::HRESULT(0x8027004F_u32 as _);
pub const COPYENGINE_E_SRC_IS_RO_CD: windows_core::HRESULT = windows_core::HRESULT(0x80270015_u32 as _);
pub const COPYENGINE_E_SRC_IS_RO_DVD: windows_core::HRESULT = windows_core::HRESULT(0x80270018_u32 as _);
pub const COPYENGINE_E_SRC_IS_RW_CD: windows_core::HRESULT = windows_core::HRESULT(0x80270016_u32 as _);
pub const COPYENGINE_E_SRC_IS_RW_DVD: windows_core::HRESULT = windows_core::HRESULT(0x80270019_u32 as _);
pub const COPYENGINE_E_SRC_IS_R_CD: windows_core::HRESULT = windows_core::HRESULT(0x80270017_u32 as _);
pub const COPYENGINE_E_SRC_IS_R_DVD: windows_core::HRESULT = windows_core::HRESULT(0x8027001A_u32 as _);
pub const COPYENGINE_E_STREAM_LOSS: windows_core::HRESULT = windows_core::HRESULT(0x8027002D_u32 as _);
pub const COPYENGINE_E_USER_CANCELLED: windows_core::HRESULT = windows_core::HRESULT(0x80270000_u32 as _);
pub const COPYENGINE_E_WARNED_BY_DLP_POLICY: windows_core::HRESULT = windows_core::HRESULT(0x8027004D_u32 as _);
pub const COPYENGINE_S_ALREADY_DONE: windows_core::HRESULT = windows_core::HRESULT(0x27000A_u32 as _);
pub const COPYENGINE_S_CLOSE_PROGRAM: windows_core::HRESULT = windows_core::HRESULT(0x27000D_u32 as _);
pub const COPYENGINE_S_COLLISIONRESOLVED: windows_core::HRESULT = windows_core::HRESULT(0x27000E_u32 as _);
pub const COPYENGINE_S_DONT_PROCESS_CHILDREN: windows_core::HRESULT = windows_core::HRESULT(0x270008_u32 as _);
pub const COPYENGINE_S_KEEP_BOTH: windows_core::HRESULT = windows_core::HRESULT(0x27000C_u32 as _);
pub const COPYENGINE_S_MERGE: windows_core::HRESULT = windows_core::HRESULT(0x270006_u32 as _);
pub const COPYENGINE_S_NOT_HANDLED: windows_core::HRESULT = windows_core::HRESULT(0x270003_u32 as _);
pub const COPYENGINE_S_PENDING: windows_core::HRESULT = windows_core::HRESULT(0x27000B_u32 as _);
pub const COPYENGINE_S_PENDING_DELETE: windows_core::HRESULT = windows_core::HRESULT(0x270010_u32 as _);
pub const COPYENGINE_S_PROGRESS_PAUSE: windows_core::HRESULT = windows_core::HRESULT(0x27000F_u32 as _);
pub const COPYENGINE_S_USER_IGNORED: windows_core::HRESULT = windows_core::HRESULT(0x270005_u32 as _);
pub const COPYENGINE_S_USER_RETRY: windows_core::HRESULT = windows_core::HRESULT(0x270004_u32 as _);
pub const COPYENGINE_S_YES: windows_core::HRESULT = windows_core::HRESULT(0x270001_u32 as _);
pub const CPAO_EMPTY_CONNECTED: CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS = CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS(2i32);
pub const CPAO_EMPTY_LOCAL: CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS = CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS(1i32);
pub const CPAO_NONE: CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS = CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS(0i32);
pub const CPCFO_ENABLE_PASSWORD_REVEAL: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS = CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS(1i32);
pub const CPCFO_ENABLE_TOUCH_KEYBOARD_AUTO_INVOKE: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS = CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS(4i32);
pub const CPCFO_IS_EMAIL_ADDRESS: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS = CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS(2i32);
pub const CPCFO_NONE: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS = CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS(0i32);
pub const CPCFO_NUMBERS_ONLY: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS = CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS(8i32);
pub const CPCFO_SHOW_ENGLISH_KEYBOARD: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS = CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS(16i32);
pub const CPFG_CREDENTIAL_PROVIDER_LABEL: windows_core::GUID = windows_core::GUID::from_u128(0x286bbff3_bad4_438f_b007_79b7267c3d48);
pub const CPFG_CREDENTIAL_PROVIDER_LOGO: windows_core::GUID = windows_core::GUID::from_u128(0x2d837775_f6cd_464e_a745_482fd0b47493);
pub const CPFG_LOGON_PASSWORD: windows_core::GUID = windows_core::GUID::from_u128(0x60624cfa_a477_47b1_8a8e_3a4a19981827);
pub const CPFG_LOGON_USERNAME: windows_core::GUID = windows_core::GUID::from_u128(0xda15bbe8_954d_4fd3_b0f4_1fb5b90b174b);
pub const CPFG_SMARTCARD_PIN: windows_core::GUID = windows_core::GUID::from_u128(0x4fe5263b_9181_46c1_b0a4_9dedd4db7dea);
pub const CPFG_SMARTCARD_USERNAME: windows_core::GUID = windows_core::GUID::from_u128(0x3e1ecf69_568c_4d96_9d59_46444174e2d6);
pub const CPFG_STANDALONE_SUBMIT_BUTTON: windows_core::GUID = windows_core::GUID::from_u128(0x0b7b0ad8_cc36_4d59_802b_82f714fa7022);
pub const CPFG_STYLE_LINK_AS_BUTTON: windows_core::GUID = windows_core::GUID::from_u128(0x088fa508_94a6_4430_a4cb_6fc6e3c0b9e2);
pub const CPFIS_DISABLED: CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE = CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE(2i32);
pub const CPFIS_FOCUSED: CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE = CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE(3i32);
pub const CPFIS_NONE: CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE = CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE(0i32);
pub const CPFIS_READONLY: CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE = CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE(1i32);
pub const CPFS_DISPLAY_IN_BOTH: CREDENTIAL_PROVIDER_FIELD_STATE = CREDENTIAL_PROVIDER_FIELD_STATE(3i32);
pub const CPFS_DISPLAY_IN_DESELECTED_TILE: CREDENTIAL_PROVIDER_FIELD_STATE = CREDENTIAL_PROVIDER_FIELD_STATE(2i32);
pub const CPFS_DISPLAY_IN_SELECTED_TILE: CREDENTIAL_PROVIDER_FIELD_STATE = CREDENTIAL_PROVIDER_FIELD_STATE(1i32);
pub const CPFS_HIDDEN: CREDENTIAL_PROVIDER_FIELD_STATE = CREDENTIAL_PROVIDER_FIELD_STATE(0i32);
pub const CPFT_CHECKBOX: CREDENTIAL_PROVIDER_FIELD_TYPE = CREDENTIAL_PROVIDER_FIELD_TYPE(7i32);
pub const CPFT_COMBOBOX: CREDENTIAL_PROVIDER_FIELD_TYPE = CREDENTIAL_PROVIDER_FIELD_TYPE(8i32);
pub const CPFT_COMMAND_LINK: CREDENTIAL_PROVIDER_FIELD_TYPE = CREDENTIAL_PROVIDER_FIELD_TYPE(3i32);
pub const CPFT_EDIT_TEXT: CREDENTIAL_PROVIDER_FIELD_TYPE = CREDENTIAL_PROVIDER_FIELD_TYPE(4i32);
pub const CPFT_INVALID: CREDENTIAL_PROVIDER_FIELD_TYPE = CREDENTIAL_PROVIDER_FIELD_TYPE(0i32);
pub const CPFT_LARGE_TEXT: CREDENTIAL_PROVIDER_FIELD_TYPE = CREDENTIAL_PROVIDER_FIELD_TYPE(1i32);
pub const CPFT_PASSWORD_TEXT: CREDENTIAL_PROVIDER_FIELD_TYPE = CREDENTIAL_PROVIDER_FIELD_TYPE(5i32);
pub const CPFT_SMALL_TEXT: CREDENTIAL_PROVIDER_FIELD_TYPE = CREDENTIAL_PROVIDER_FIELD_TYPE(2i32);
pub const CPFT_SUBMIT_BUTTON: CREDENTIAL_PROVIDER_FIELD_TYPE = CREDENTIAL_PROVIDER_FIELD_TYPE(9i32);
pub const CPFT_TILE_IMAGE: CREDENTIAL_PROVIDER_FIELD_TYPE = CREDENTIAL_PROVIDER_FIELD_TYPE(6i32);
pub const CPGSR_NO_CREDENTIAL_FINISHED: CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE = CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE(1i32);
pub const CPGSR_NO_CREDENTIAL_NOT_FINISHED: CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE = CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE(0i32);
pub const CPGSR_RETURN_CREDENTIAL_FINISHED: CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE = CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE(2i32);
pub const CPGSR_RETURN_NO_CREDENTIAL_FINISHED: CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE = CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE(3i32);
#[repr(C, packed(1))]
#[derive(Clone, Copy, Default)]
pub struct CPLINFO {
    pub idIcon: i32,
    pub idName: i32,
    pub idInfo: i32,
    pub lData: isize,
}
pub const CPLPAGE_DISPLAY_BACKGROUND: u32 = 1u32;
pub const CPLPAGE_KEYBOARD_SPEED: u32 = 1u32;
pub const CPLPAGE_MOUSE_BUTTONS: u32 = 1u32;
pub const CPLPAGE_MOUSE_PTRMOTION: u32 = 2u32;
pub const CPLPAGE_MOUSE_WHEEL: u32 = 3u32;
pub const CPL_DBLCLK: u32 = 5u32;
pub const CPL_DYNAMIC_RES: u32 = 0u32;
pub const CPL_EXIT: u32 = 7u32;
pub const CPL_GETCOUNT: u32 = 2u32;
pub const CPL_INIT: u32 = 1u32;
pub const CPL_INQUIRE: u32 = 3u32;
pub const CPL_NEWINQUIRE: u32 = 8u32;
pub const CPL_SELECT: u32 = 4u32;
pub const CPL_SETUP: u32 = 200u32;
pub const CPL_STARTWPARMS: u32 = 10u32;
pub const CPL_STARTWPARMSA: u32 = 9u32;
pub const CPL_STARTWPARMSW: u32 = 10u32;
pub const CPL_STOP: u32 = 6u32;
pub const CPSI_ERROR: CREDENTIAL_PROVIDER_STATUS_ICON = CREDENTIAL_PROVIDER_STATUS_ICON(1i32);
pub const CPSI_NONE: CREDENTIAL_PROVIDER_STATUS_ICON = CREDENTIAL_PROVIDER_STATUS_ICON(0i32);
pub const CPSI_SUCCESS: CREDENTIAL_PROVIDER_STATUS_ICON = CREDENTIAL_PROVIDER_STATUS_ICON(3i32);
pub const CPSI_WARNING: CREDENTIAL_PROVIDER_STATUS_ICON = CREDENTIAL_PROVIDER_STATUS_ICON(2i32);
pub const CPUS_CHANGE_PASSWORD: CREDENTIAL_PROVIDER_USAGE_SCENARIO = CREDENTIAL_PROVIDER_USAGE_SCENARIO(3i32);
pub const CPUS_CREDUI: CREDENTIAL_PROVIDER_USAGE_SCENARIO = CREDENTIAL_PROVIDER_USAGE_SCENARIO(4i32);
pub const CPUS_INVALID: CREDENTIAL_PROVIDER_USAGE_SCENARIO = CREDENTIAL_PROVIDER_USAGE_SCENARIO(0i32);
pub const CPUS_LOGON: CREDENTIAL_PROVIDER_USAGE_SCENARIO = CREDENTIAL_PROVIDER_USAGE_SCENARIO(1i32);
pub const CPUS_PLAP: CREDENTIAL_PROVIDER_USAGE_SCENARIO = CREDENTIAL_PROVIDER_USAGE_SCENARIO(5i32);
pub const CPUS_UNLOCK_WORKSTATION: CREDENTIAL_PROVIDER_USAGE_SCENARIO = CREDENTIAL_PROVIDER_USAGE_SCENARIO(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CPVIEW(pub i32);
pub const CPVIEW_ALLITEMS: CPVIEW = CPVIEW(0i32);
pub const CPVIEW_CATEGORY: CPVIEW = CPVIEW(1i32);
pub const CPVIEW_CLASSIC: CPVIEW = CPVIEW(0i32);
pub const CPVIEW_HOME: CPVIEW = CPVIEW(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS(pub i32);
impl CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS(pub i32);
impl CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION {
    pub ulAuthenticationPackage: u32,
    pub clsidCredentialProvider: windows_core::GUID,
    pub cbSerialization: u32,
    pub rgbSerialization: *mut u8,
}
impl Default for CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR {
    pub dwFieldID: u32,
    pub cpft: CREDENTIAL_PROVIDER_FIELD_TYPE,
    pub pszLabel: windows_core::PWSTR,
    pub guidFieldType: windows_core::GUID,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CREDENTIAL_PROVIDER_FIELD_STATE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CREDENTIAL_PROVIDER_FIELD_TYPE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE(pub i32);
pub const CREDENTIAL_PROVIDER_NO_DEFAULT: u32 = 4294967295u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CREDENTIAL_PROVIDER_STATUS_ICON(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CREDENTIAL_PROVIDER_USAGE_SCENARIO(pub i32);
pub const CSC_NAVIGATEBACK: CommandStateChangeConstants = CommandStateChangeConstants(2i32);
pub const CSC_NAVIGATEFORWARD: CommandStateChangeConstants = CommandStateChangeConstants(1i32);
pub const CSC_UPDATECOMMANDS: CommandStateChangeConstants = CommandStateChangeConstants(-1i32);
#[repr(C)]
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
#[derive(Clone, Debug)]
pub struct CSFV {
    pub cbSize: u32,
    pub pshf: core::mem::ManuallyDrop<Option<IShellFolder>>,
    pub psvOuter: core::mem::ManuallyDrop<Option<IShellView>>,
    pub pidl: *mut Common::ITEMIDLIST,
    pub lEvents: i32,
    pub pfnCallback: LPFNVIEWCALLBACK,
    pub fvm: FOLDERVIEWMODE,
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl Default for CSFV {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const CSIDL_ADMINTOOLS: u32 = 48u32;
pub const CSIDL_ALTSTARTUP: u32 = 29u32;
pub const CSIDL_APPDATA: u32 = 26u32;
pub const CSIDL_BITBUCKET: u32 = 10u32;
pub const CSIDL_CDBURN_AREA: u32 = 59u32;
pub const CSIDL_COMMON_ADMINTOOLS: u32 = 47u32;
pub const CSIDL_COMMON_ALTSTARTUP: u32 = 30u32;
pub const CSIDL_COMMON_APPDATA: u32 = 35u32;
pub const CSIDL_COMMON_DESKTOPDIRECTORY: u32 = 25u32;
pub const CSIDL_COMMON_DOCUMENTS: u32 = 46u32;
pub const CSIDL_COMMON_FAVORITES: u32 = 31u32;
pub const CSIDL_COMMON_MUSIC: u32 = 53u32;
pub const CSIDL_COMMON_OEM_LINKS: u32 = 58u32;
pub const CSIDL_COMMON_PICTURES: u32 = 54u32;
pub const CSIDL_COMMON_PROGRAMS: u32 = 23u32;
pub const CSIDL_COMMON_STARTMENU: u32 = 22u32;
pub const CSIDL_COMMON_STARTUP: u32 = 24u32;
pub const CSIDL_COMMON_TEMPLATES: u32 = 45u32;
pub const CSIDL_COMMON_VIDEO: u32 = 55u32;
pub const CSIDL_COMPUTERSNEARME: u32 = 61u32;
pub const CSIDL_CONNECTIONS: u32 = 49u32;
pub const CSIDL_CONTROLS: u32 = 3u32;
pub const CSIDL_COOKIES: u32 = 33u32;
pub const CSIDL_DESKTOP: u32 = 0u32;
pub const CSIDL_DESKTOPDIRECTORY: u32 = 16u32;
pub const CSIDL_DRIVES: u32 = 17u32;
pub const CSIDL_FAVORITES: u32 = 6u32;
pub const CSIDL_FLAG_CREATE: u32 = 32768u32;
pub const CSIDL_FLAG_DONT_UNEXPAND: u32 = 8192u32;
pub const CSIDL_FLAG_DONT_VERIFY: u32 = 16384u32;
pub const CSIDL_FLAG_MASK: u32 = 65280u32;
pub const CSIDL_FLAG_NO_ALIAS: u32 = 4096u32;
pub const CSIDL_FLAG_PER_USER_INIT: u32 = 2048u32;
pub const CSIDL_FLAG_PFTI_TRACKTARGET: u32 = 16384u32;
pub const CSIDL_FONTS: u32 = 20u32;
pub const CSIDL_HISTORY: u32 = 34u32;
pub const CSIDL_INTERNET: u32 = 1u32;
pub const CSIDL_INTERNET_CACHE: u32 = 32u32;
pub const CSIDL_LOCAL_APPDATA: u32 = 28u32;
pub const CSIDL_MYDOCUMENTS: u32 = 5u32;
pub const CSIDL_MYMUSIC: u32 = 13u32;
pub const CSIDL_MYPICTURES: u32 = 39u32;
pub const CSIDL_MYVIDEO: u32 = 14u32;
pub const CSIDL_NETHOOD: u32 = 19u32;
pub const CSIDL_NETWORK: u32 = 18u32;
pub const CSIDL_PERSONAL: u32 = 5u32;
pub const CSIDL_PRINTERS: u32 = 4u32;
pub const CSIDL_PRINTHOOD: u32 = 27u32;
pub const CSIDL_PROFILE: u32 = 40u32;
pub const CSIDL_PROGRAMS: u32 = 2u32;
pub const CSIDL_PROGRAM_FILES: u32 = 38u32;
pub const CSIDL_PROGRAM_FILESX86: u32 = 42u32;
pub const CSIDL_PROGRAM_FILES_COMMON: u32 = 43u32;
pub const CSIDL_PROGRAM_FILES_COMMONX86: u32 = 44u32;
pub const CSIDL_RECENT: u32 = 8u32;
pub const CSIDL_RESOURCES: u32 = 56u32;
pub const CSIDL_RESOURCES_LOCALIZED: u32 = 57u32;
pub const CSIDL_SENDTO: u32 = 9u32;
pub const CSIDL_STARTMENU: u32 = 11u32;
pub const CSIDL_STARTUP: u32 = 7u32;
pub const CSIDL_SYSTEM: u32 = 37u32;
pub const CSIDL_SYSTEMX86: u32 = 41u32;
pub const CSIDL_TEMPLATES: u32 = 21u32;
pub const CSIDL_WINDOWS: u32 = 36u32;
pub const CScriptErrorList: windows_core::GUID = windows_core::GUID::from_u128(0xefd01300_160f_11d2_bb2e_00805ff7efca);
pub const CTF_COINIT: i32 = 8i32;
pub const CTF_COINIT_MTA: i32 = 4096i32;
pub const CTF_COINIT_STA: i32 = 8i32;
pub const CTF_FREELIBANDEXIT: i32 = 16i32;
pub const CTF_INHERITWOW64: i32 = 256i32;
pub const CTF_INSIST: i32 = 1i32;
pub const CTF_KEYBOARD_LOCALE: i32 = 1024i32;
pub const CTF_NOADDREFLIB: i32 = 8192i32;
pub const CTF_OLEINITIALIZE: i32 = 2048i32;
pub const CTF_PROCESS_REF: i32 = 4i32;
pub const CTF_REF_COUNTED: i32 = 32i32;
pub const CTF_THREAD_REF: i32 = 2i32;
pub const CTF_UNUSED: i32 = 128i32;
pub const CTF_WAIT_ALLOWCOM: i32 = 64i32;
pub const CTF_WAIT_NO_REENTRANCY: i32 = 512i32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct CommandStateChangeConstants(pub i32);
pub const ConflictFolder: windows_core::GUID = windows_core::GUID::from_u128(0x289978ac_a101_4341_a817_21eba7fd046d);
#[repr(C, packed(1))]
#[derive(Clone, Copy, Default)]
pub struct DATABLOCK_HEADER {
    pub cbSize: u32,
    pub dwSignature: u32,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DATAOBJ_GET_ITEM_FLAGS(pub i32);
impl DATAOBJ_GET_ITEM_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for DATAOBJ_GET_ITEM_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for DATAOBJ_GET_ITEM_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for DATAOBJ_GET_ITEM_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for DATAOBJ_GET_ITEM_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for DATAOBJ_GET_ITEM_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const DBCID_CLSIDOFBAR: i32 = 2i32;
pub const DBCID_EMPTY: i32 = 0i32;
pub const DBCID_GETBAR: i32 = 4i32;
pub const DBCID_ONDRAG: i32 = 1i32;
pub const DBCID_RESIZE: i32 = 3i32;
pub const DBCID_UPDATESIZE: i32 = 5i32;
pub const DBC_GS_IDEAL: u32 = 0u32;
pub const DBC_GS_SIZEDOWN: u32 = 1u32;
pub const DBC_HIDE: u32 = 0u32;
pub const DBC_SHOW: u32 = 1u32;
pub const DBC_SHOWOBSCURE: u32 = 2u32;
pub const DBID_BANDINFOCHANGED: DESKBANDCID = DESKBANDCID(0i32);
pub const DBID_DELAYINIT: DESKBANDCID = DESKBANDCID(4i32);
pub const DBID_FINISHINIT: DESKBANDCID = DESKBANDCID(5i32);
pub const DBID_MAXIMIZEBAND: DESKBANDCID = DESKBANDCID(2i32);
pub const DBID_PERMITAUTOHIDE: DESKBANDCID = DESKBANDCID(7i32);
pub const DBID_PUSHCHEVRON: DESKBANDCID = DESKBANDCID(3i32);
pub const DBID_SETWINDOWTHEME: DESKBANDCID = DESKBANDCID(6i32);
pub const DBID_SHOWONLY: DESKBANDCID = DESKBANDCID(1i32);
pub const DBIF_VIEWMODE_FLOATING: u32 = 2u32;
pub const DBIF_VIEWMODE_NORMAL: u32 = 0u32;
pub const DBIF_VIEWMODE_TRANSPARENT: u32 = 4u32;
pub const DBIF_VIEWMODE_VERTICAL: u32 = 1u32;
pub const DBIMF_ADDTOFRONT: u32 = 512u32;
pub const DBIMF_ALWAYSGRIPPER: u32 = 4096u32;
pub const DBIMF_BKCOLOR: u32 = 64u32;
pub const DBIMF_BREAK: u32 = 256u32;
pub const DBIMF_DEBOSSED: u32 = 32u32;
pub const DBIMF_FIXED: u32 = 1u32;
pub const DBIMF_FIXEDBMP: u32 = 4u32;
pub const DBIMF_NOGRIPPER: u32 = 2048u32;
pub const DBIMF_NOMARGINS: u32 = 8192u32;
pub const DBIMF_NORMAL: u32 = 0u32;
pub const DBIMF_TOPALIGN: u32 = 1024u32;
pub const DBIMF_UNDELETEABLE: u32 = 16u32;
pub const DBIMF_USECHEVRON: u32 = 128u32;
pub const DBIMF_VARIABLEHEIGHT: u32 = 8u32;
pub const DBIM_ACTUAL: u32 = 8u32;
pub const DBIM_BKCOLOR: u32 = 64u32;
pub const DBIM_INTEGRAL: u32 = 4u32;
pub const DBIM_MAXSIZE: u32 = 2u32;
pub const DBIM_MINSIZE: u32 = 1u32;
pub const DBIM_MODEFLAGS: u32 = 32u32;
pub const DBIM_TITLE: u32 = 16u32;
pub const DBPC_SELECTFIRST: u32 = 4294967295u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DEFAULTSAVEFOLDERTYPE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DEFAULT_FOLDER_MENU_RESTRICTIONS(pub i32);
impl DEFAULT_FOLDER_MENU_RESTRICTIONS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for DEFAULT_FOLDER_MENU_RESTRICTIONS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for DEFAULT_FOLDER_MENU_RESTRICTIONS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for DEFAULT_FOLDER_MENU_RESTRICTIONS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for DEFAULT_FOLDER_MENU_RESTRICTIONS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for DEFAULT_FOLDER_MENU_RESTRICTIONS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(C)]
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
#[derive(Clone, Debug, PartialEq)]
pub struct DEFCONTEXTMENU {
    pub hwnd: super::super::Foundation::HWND,
    pub pcmcb: core::mem::ManuallyDrop<Option<IContextMenuCB>>,
    pub pidlFolder: *mut Common::ITEMIDLIST,
    pub psf: core::mem::ManuallyDrop<Option<IShellFolder>>,
    pub cidl: u32,
    pub apidl: *mut *mut Common::ITEMIDLIST,
    pub punkAssociationInfo: core::mem::ManuallyDrop<Option<windows_core::IUnknown>>,
    pub cKeys: u32,
    pub aKeys: *const super::super::System::Registry::HKEY,
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
impl Default for DEFCONTEXTMENU {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEFSHAREID_PUBLIC: DEF_SHARE_ID = DEF_SHARE_ID(2i32);
pub const DEFSHAREID_USERS: DEF_SHARE_ID = DEF_SHARE_ID(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DEF_SHARE_ID(pub i32);
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct DELEGATEITEMID {
    pub cbSize: u16,
    pub wOuter: u16,
    pub cbInner: u16,
    pub rgb: [u8; 1],
}
impl Default for DELEGATEITEMID {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DESKBANDCID(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct DESKBANDINFO {
    pub dwMask: u32,
    pub ptMinSize: super::super::Foundation::POINTL,
    pub ptMaxSize: super::super::Foundation::POINTL,
    pub ptIntegral: super::super::Foundation::POINTL,
    pub ptActual: super::super::Foundation::POINTL,
    pub wszTitle: [u16; 256],
    pub dwModeFlags: u32,
    pub crBkgnd: super::super::Foundation::COLORREF,
}
impl Default for DESKBANDINFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DESKTOP_SLIDESHOW_DIRECTION(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DESKTOP_SLIDESHOW_OPTIONS(pub i32);
impl DESKTOP_SLIDESHOW_OPTIONS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for DESKTOP_SLIDESHOW_OPTIONS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for DESKTOP_SLIDESHOW_OPTIONS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for DESKTOP_SLIDESHOW_OPTIONS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for DESKTOP_SLIDESHOW_OPTIONS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for DESKTOP_SLIDESHOW_OPTIONS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DESKTOP_SLIDESHOW_STATE(pub i32);
impl DESKTOP_SLIDESHOW_STATE {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for DESKTOP_SLIDESHOW_STATE {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for DESKTOP_SLIDESHOW_STATE {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for DESKTOP_SLIDESHOW_STATE {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for DESKTOP_SLIDESHOW_STATE {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for DESKTOP_SLIDESHOW_STATE {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DESKTOP_WALLPAPER_POSITION(pub i32);
#[repr(C)]
#[cfg(feature = "Win32_UI_Shell_Common")]
#[derive(Clone, Copy)]
pub struct DETAILSINFO {
    pub pidl: *mut Common::ITEMIDLIST,
    pub fmt: i32,
    pub cxChar: i32,
    pub str: Common::STRRET,
    pub iImage: i32,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl Default for DETAILSINFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DEVICE_IMMERSIVE: DISPLAY_DEVICE_TYPE = DISPLAY_DEVICE_TYPE(1i32);
pub const DEVICE_PRIMARY: DISPLAY_DEVICE_TYPE = DISPLAY_DEVICE_TYPE(0i32);
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(DFConstraint, DFConstraint_Vtbl, 0x4a3df050_23bd_11d2_939f_00a0c91eedba);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for DFConstraint {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(DFConstraint, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl DFConstraint {
    pub unsafe fn Name(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Name)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Value(&self) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Value)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct DFConstraint_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub Name: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Value: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Value: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait DFConstraint_Impl: super::super::System::Com::IDispatch_Impl {
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Value(&self) -> windows_core::Result<super::super::System::Variant::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl DFConstraint_Vtbl {
    pub const fn new<Identity: DFConstraint_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Name<Identity: DFConstraint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match DFConstraint_Impl::Name(this) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Value<Identity: DFConstraint_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pv: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match DFConstraint_Impl::Value(this) {
                    Ok(ok__) => {
                        pv.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(), Name: Name::<Identity, OFFSET>, Value: Value::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DFConstraint as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for DFConstraint {}
#[repr(C)]
#[derive(Clone, Debug, PartialEq)]
pub struct DFMICS {
    pub cbSize: u32,
    pub fMask: u32,
    pub lParam: super::super::Foundation::LPARAM,
    pub idCmdFirst: u32,
    pub idDefMax: u32,
    pub pici: *mut CMINVOKECOMMANDINFO,
    pub punkSite: core::mem::ManuallyDrop<Option<windows_core::IUnknown>>,
}
impl Default for DFMICS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const DFMR_DEFAULT: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(0i32);
pub const DFMR_NO_ASYNC_VERBS: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(1024i32);
pub const DFMR_NO_NATIVECPU_VERBS: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(2048i32);
pub const DFMR_NO_NONWOW_VERBS: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(4096i32);
pub const DFMR_NO_RESOURCE_VERBS: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(32i32);
pub const DFMR_NO_STATIC_VERBS: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(8i32);
pub const DFMR_OPTIN_HANDLERS_ONLY: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(64i32);
pub const DFMR_RESOURCE_AND_FOLDER_VERBS_ONLY: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(128i32);
pub const DFMR_STATIC_VERBS_ONLY: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(16i32);
pub const DFMR_USE_SPECIFIED_HANDLERS: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(256i32);
pub const DFMR_USE_SPECIFIED_VERBS: DEFAULT_FOLDER_MENU_RESTRICTIONS = DEFAULT_FOLDER_MENU_RESTRICTIONS(512i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DFM_CMD(pub i32);
pub const DFM_CMD_COPY: DFM_CMD = DFM_CMD(-3i32);
pub const DFM_CMD_DELETE: DFM_CMD = DFM_CMD(-1i32);
pub const DFM_CMD_LINK: DFM_CMD = DFM_CMD(-4i32);
pub const DFM_CMD_MODALPROP: DFM_CMD = DFM_CMD(-12i32);
pub const DFM_CMD_MOVE: DFM_CMD = DFM_CMD(-2i32);
pub const DFM_CMD_NEWFOLDER: DFM_CMD = DFM_CMD(-6i32);
pub const DFM_CMD_PASTE: DFM_CMD = DFM_CMD(-7i32);
pub const DFM_CMD_PASTELINK: DFM_CMD = DFM_CMD(-10i32);
pub const DFM_CMD_PASTESPECIAL: DFM_CMD = DFM_CMD(-11i32);
pub const DFM_CMD_PROPERTIES: DFM_CMD = DFM_CMD(-5i32);
pub const DFM_CMD_RENAME: DFM_CMD = DFM_CMD(-13i32);
pub const DFM_CMD_VIEWDETAILS: DFM_CMD = DFM_CMD(-9i32);
pub const DFM_CMD_VIEWLIST: DFM_CMD = DFM_CMD(-8i32);
pub const DFM_GETDEFSTATICID: DFM_MESSAGE_ID = DFM_MESSAGE_ID(14i32);
pub const DFM_GETHELPTEXT: DFM_MESSAGE_ID = DFM_MESSAGE_ID(5i32);
pub const DFM_GETHELPTEXTW: DFM_MESSAGE_ID = DFM_MESSAGE_ID(11i32);
pub const DFM_GETVERBA: DFM_MESSAGE_ID = DFM_MESSAGE_ID(16i32);
pub const DFM_GETVERBW: DFM_MESSAGE_ID = DFM_MESSAGE_ID(15i32);
pub const DFM_INVOKECOMMAND: DFM_MESSAGE_ID = DFM_MESSAGE_ID(2i32);
pub const DFM_INVOKECOMMANDEX: DFM_MESSAGE_ID = DFM_MESSAGE_ID(12i32);
pub const DFM_MAPCOMMANDNAME: DFM_MESSAGE_ID = DFM_MESSAGE_ID(13i32);
pub const DFM_MERGECONTEXTMENU: DFM_MESSAGE_ID = DFM_MESSAGE_ID(1i32);
pub const DFM_MERGECONTEXTMENU_BOTTOM: DFM_MESSAGE_ID = DFM_MESSAGE_ID(17i32);
pub const DFM_MERGECONTEXTMENU_TOP: DFM_MESSAGE_ID = DFM_MESSAGE_ID(10i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DFM_MESSAGE_ID(pub i32);
pub const DFM_MODIFYQCMFLAGS: DFM_MESSAGE_ID = DFM_MESSAGE_ID(18i32);
pub const DFM_VALIDATECMD: DFM_MESSAGE_ID = DFM_MESSAGE_ID(9i32);
pub const DFM_WM_DRAWITEM: DFM_MESSAGE_ID = DFM_MESSAGE_ID(7i32);
pub const DFM_WM_INITMENUPOPUP: DFM_MESSAGE_ID = DFM_MESSAGE_ID(8i32);
pub const DFM_WM_MEASUREITEM: DFM_MESSAGE_ID = DFM_MESSAGE_ID(6i32);
pub const DISPID_BEGINDRAG: u32 = 204u32;
pub const DISPID_CHECKSTATECHANGED: u32 = 209u32;
pub const DISPID_COLUMNSCHANGED: u32 = 212u32;
pub const DISPID_CONTENTSCHANGED: u32 = 207u32;
pub const DISPID_CTRLMOUSEWHEEL: u32 = 213u32;
pub const DISPID_DEFAULTVERBINVOKED: u32 = 203u32;
pub const DISPID_ENTERPRESSED: u32 = 200u32;
pub const DISPID_ENTERPRISEIDCHANGED: u32 = 224u32;
pub const DISPID_EXPLORERWINDOWREADY: u32 = 221u32;
pub const DISPID_FILELISTENUMDONE: u32 = 201u32;
pub const DISPID_FILTERINVOKED: u32 = 218u32;
pub const DISPID_FOCUSCHANGED: u32 = 208u32;
pub const DISPID_FOLDERCHANGED: u32 = 217u32;
pub const DISPID_IADCCTL_DEFAULTCAT: u32 = 262u32;
pub const DISPID_IADCCTL_DIRTY: u32 = 256u32;
pub const DISPID_IADCCTL_FORCEX86: u32 = 259u32;
pub const DISPID_IADCCTL_ONDOMAIN: u32 = 261u32;
pub const DISPID_IADCCTL_PUBCAT: u32 = 257u32;
pub const DISPID_IADCCTL_SHOWPOSTSETUP: u32 = 260u32;
pub const DISPID_IADCCTL_SORT: u32 = 258u32;
pub const DISPID_ICONSIZECHANGED: u32 = 215u32;
pub const DISPID_INITIALENUMERATIONDONE: u32 = 223u32;
pub const DISPID_NOITEMSTATE_CHANGED: u32 = 206u32;
pub const DISPID_ORDERCHANGED: u32 = 210u32;
pub const DISPID_SEARCHCOMMAND_ABORT: u32 = 3u32;
pub const DISPID_SEARCHCOMMAND_COMPLETE: u32 = 2u32;
pub const DISPID_SEARCHCOMMAND_ERROR: u32 = 6u32;
pub const DISPID_SEARCHCOMMAND_PROGRESSTEXT: u32 = 5u32;
pub const DISPID_SEARCHCOMMAND_RESTORE: u32 = 7u32;
pub const DISPID_SEARCHCOMMAND_START: u32 = 1u32;
pub const DISPID_SEARCHCOMMAND_UPDATE: u32 = 4u32;
pub const DISPID_SELECTEDITEMCHANGED: u32 = 220u32;
pub const DISPID_SELECTIONCHANGED: u32 = 200u32;
pub const DISPID_SORTDONE: u32 = 214u32;
pub const DISPID_UPDATEIMAGE: u32 = 222u32;
pub const DISPID_VERBINVOKED: u32 = 202u32;
pub const DISPID_VIEWMODECHANGED: u32 = 205u32;
pub const DISPID_VIEWPAINTDONE: u32 = 211u32;
pub const DISPID_WORDWHEELEDITED: u32 = 219u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DISPLAY_DEVICE_TYPE(pub i32);
pub const DI_GETDRAGIMAGE: windows_core::PCWSTR = windows_core::w!("ShellGetDragImage");
pub const DLG_SCRNSAVECONFIGURE: u32 = 2003u32;
pub type DLLGETVERSIONPROC = Option<unsafe extern "system" fn(param0: *mut DLLVERSIONINFO) -> windows_core::HRESULT>;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DLLVERSIONINFO {
    pub cbSize: u32,
    pub dwMajorVersion: u32,
    pub dwMinorVersion: u32,
    pub dwBuildNumber: u32,
    pub dwPlatformID: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DLLVERSIONINFO2 {
    pub info1: DLLVERSIONINFO,
    pub dwFlags: u32,
    pub ullVersion: u64,
}
pub const DLLVER_BUILD_MASK: u64 = 4294901760u64;
pub const DLLVER_MAJOR_MASK: u64 = 18446462598732840960u64;
pub const DLLVER_MINOR_MASK: u64 = 281470681743360u64;
pub const DLLVER_PLATFORM_NT: u32 = 2u32;
pub const DLLVER_PLATFORM_WINDOWS: u32 = 1u32;
pub const DLLVER_QFE_MASK: u64 = 65535u64;
pub const DOGIF_DEFAULT: DATAOBJ_GET_ITEM_FLAGS = DATAOBJ_GET_ITEM_FLAGS(0i32);
pub const DOGIF_NO_HDROP: DATAOBJ_GET_ITEM_FLAGS = DATAOBJ_GET_ITEM_FLAGS(2i32);
pub const DOGIF_NO_URL: DATAOBJ_GET_ITEM_FLAGS = DATAOBJ_GET_ITEM_FLAGS(4i32);
pub const DOGIF_ONLY_IF_ONE: DATAOBJ_GET_ITEM_FLAGS = DATAOBJ_GET_ITEM_FLAGS(8i32);
pub const DOGIF_TRAVERSE_LINK: DATAOBJ_GET_ITEM_FLAGS = DATAOBJ_GET_ITEM_FLAGS(1i32);
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy, Default)]
pub struct DRAGINFOA {
    pub uSize: u32,
    pub pt: super::super::Foundation::POINT,
    pub fNC: windows_core::BOOL,
    pub lpFileList: windows_core::PSTR,
    pub grfKeyState: u32,
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DRAGINFOA {
    pub uSize: u32,
    pub pt: super::super::Foundation::POINT,
    pub fNC: windows_core::BOOL,
    pub lpFileList: windows_core::PSTR,
    pub grfKeyState: u32,
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy, Default)]
pub struct DRAGINFOW {
    pub uSize: u32,
    pub pt: super::super::Foundation::POINT,
    pub fNC: windows_core::BOOL,
    pub lpFileList: windows_core::PWSTR,
    pub grfKeyState: u32,
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct DRAGINFOW {
    pub uSize: u32,
    pub pt: super::super::Foundation::POINT,
    pub fNC: windows_core::BOOL,
    pub lpFileList: windows_core::PWSTR,
    pub grfKeyState: u32,
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct DROPDESCRIPTION {
    pub r#type: DROPIMAGETYPE,
    pub szMessage: [u16; 260],
    pub szInsert: [u16; 260],
}
impl Default for DROPDESCRIPTION {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy, Default)]
pub struct DROPFILES {
    pub pFiles: u32,
    pub pt: super::super::Foundation::POINT,
    pub fNC: windows_core::BOOL,
    pub fWide: windows_core::BOOL,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DROPIMAGETYPE(pub i32);
pub const DROPIMAGE_COPY: DROPIMAGETYPE = DROPIMAGETYPE(1i32);
pub const DROPIMAGE_INVALID: DROPIMAGETYPE = DROPIMAGETYPE(-1i32);
pub const DROPIMAGE_LABEL: DROPIMAGETYPE = DROPIMAGETYPE(6i32);
pub const DROPIMAGE_LINK: DROPIMAGETYPE = DROPIMAGETYPE(4i32);
pub const DROPIMAGE_MOVE: DROPIMAGETYPE = DROPIMAGETYPE(2i32);
pub const DROPIMAGE_NOIMAGE: DROPIMAGETYPE = DROPIMAGETYPE(8i32);
pub const DROPIMAGE_NONE: DROPIMAGETYPE = DROPIMAGETYPE(0i32);
pub const DROPIMAGE_WARNING: DROPIMAGETYPE = DROPIMAGETYPE(7i32);
pub const DSD_BACKWARD: DESKTOP_SLIDESHOW_DIRECTION = DESKTOP_SLIDESHOW_DIRECTION(1i32);
pub const DSD_FORWARD: DESKTOP_SLIDESHOW_DIRECTION = DESKTOP_SLIDESHOW_DIRECTION(0i32);
pub const DSFT_DETECT: DEFAULTSAVEFOLDERTYPE = DEFAULTSAVEFOLDERTYPE(1i32);
pub const DSFT_PRIVATE: DEFAULTSAVEFOLDERTYPE = DEFAULTSAVEFOLDERTYPE(2i32);
pub const DSFT_PUBLIC: DEFAULTSAVEFOLDERTYPE = DEFAULTSAVEFOLDERTYPE(3i32);
pub const DSH_ALLOWDROPDESCRIPTIONTEXT: DSH_FLAGS = DSH_FLAGS(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct DSH_FLAGS(pub i32);
impl DSH_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for DSH_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for DSH_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for DSH_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for DSH_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for DSH_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const DSO_SHUFFLEIMAGES: DESKTOP_SLIDESHOW_OPTIONS = DESKTOP_SLIDESHOW_OPTIONS(1i32);
pub const DSS_DISABLED_BY_REMOTE_SESSION: DESKTOP_SLIDESHOW_STATE = DESKTOP_SLIDESHOW_STATE(4i32);
pub const DSS_ENABLED: DESKTOP_SLIDESHOW_STATE = DESKTOP_SLIDESHOW_STATE(1i32);
pub const DSS_SLIDESHOW: DESKTOP_SLIDESHOW_STATE = DESKTOP_SLIDESHOW_STATE(2i32);
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(DShellFolderViewEvents, DShellFolderViewEvents_Vtbl, 0x62112aa2_ebe4_11cf_a5fb_0020afe7292d);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for DShellFolderViewEvents {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(DShellFolderViewEvents, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct DShellFolderViewEvents_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait DShellFolderViewEvents_Impl: super::super::System::Com::IDispatch_Impl {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl DShellFolderViewEvents_Vtbl {
    pub const fn new<Identity: DShellFolderViewEvents_Impl, const OFFSET: isize>() -> Self {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DShellFolderViewEvents as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for DShellFolderViewEvents {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(DShellNameSpaceEvents, DShellNameSpaceEvents_Vtbl, 0x55136806_b2de_11d1_b9f2_00a0c98bc547);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for DShellNameSpaceEvents {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(DShellNameSpaceEvents, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct DShellNameSpaceEvents_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait DShellNameSpaceEvents_Impl: super::super::System::Com::IDispatch_Impl {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl DShellNameSpaceEvents_Vtbl {
    pub const fn new<Identity: DShellNameSpaceEvents_Impl, const OFFSET: isize>() -> Self {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DShellNameSpaceEvents as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for DShellNameSpaceEvents {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(DShellWindowsEvents, DShellWindowsEvents_Vtbl, 0xfe4106e0_399a_11d0_a48c_00a0c90a8f39);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for DShellWindowsEvents {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(DShellWindowsEvents, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct DShellWindowsEvents_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait DShellWindowsEvents_Impl: super::super::System::Com::IDispatch_Impl {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl DShellWindowsEvents_Vtbl {
    pub const fn new<Identity: DShellWindowsEvents_Impl, const OFFSET: isize>() -> Self {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DShellWindowsEvents as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for DShellWindowsEvents {}
pub const DVASPECT_COPY: u32 = 3u32;
pub const DVASPECT_LINK: u32 = 4u32;
pub const DVASPECT_SHORTNAME: u32 = 2u32;
pub const DWFAF_AUTOHIDE: u32 = 16u32;
pub const DWFAF_GROUP1: u32 = 2u32;
pub const DWFAF_GROUP2: u32 = 4u32;
pub const DWFAF_HIDDEN: u32 = 1u32;
pub const DWFRF_DELETECONFIGDATA: u32 = 1u32;
pub const DWFRF_NORMAL: u32 = 0u32;
pub const DWPOS_CENTER: DESKTOP_WALLPAPER_POSITION = DESKTOP_WALLPAPER_POSITION(0i32);
pub const DWPOS_FILL: DESKTOP_WALLPAPER_POSITION = DESKTOP_WALLPAPER_POSITION(4i32);
pub const DWPOS_FIT: DESKTOP_WALLPAPER_POSITION = DESKTOP_WALLPAPER_POSITION(3i32);
pub const DWPOS_SPAN: DESKTOP_WALLPAPER_POSITION = DESKTOP_WALLPAPER_POSITION(5i32);
pub const DWPOS_STRETCH: DESKTOP_WALLPAPER_POSITION = DESKTOP_WALLPAPER_POSITION(2i32);
pub const DWPOS_TILE: DESKTOP_WALLPAPER_POSITION = DESKTOP_WALLPAPER_POSITION(1i32);
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(DWebBrowserEvents, DWebBrowserEvents_Vtbl, 0xeab22ac2_30c1_11cf_a7eb_0000c05bae0b);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for DWebBrowserEvents {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(DWebBrowserEvents, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct DWebBrowserEvents_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait DWebBrowserEvents_Impl: super::super::System::Com::IDispatch_Impl {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl DWebBrowserEvents_Vtbl {
    pub const fn new<Identity: DWebBrowserEvents_Impl, const OFFSET: isize>() -> Self {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DWebBrowserEvents as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for DWebBrowserEvents {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(DWebBrowserEvents2, DWebBrowserEvents2_Vtbl, 0x34a715a0_6587_11d0_924a_0020afc7ac4d);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for DWebBrowserEvents2 {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(DWebBrowserEvents2, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct DWebBrowserEvents2_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait DWebBrowserEvents2_Impl: super::super::System::Com::IDispatch_Impl {}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl DWebBrowserEvents2_Vtbl {
    pub const fn new<Identity: DWebBrowserEvents2_Impl, const OFFSET: isize>() -> Self {
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<DWebBrowserEvents2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for DWebBrowserEvents2 {}
pub const DefFolderMenu: windows_core::GUID = windows_core::GUID::from_u128(0xc63382be_7933_48d0_9ac8_85fb46be2fdd);
pub const DesktopGadget: windows_core::GUID = windows_core::GUID::from_u128(0x924ccc1b_6562_4c85_8657_d177925222b6);
pub const DesktopWallpaper: windows_core::GUID = windows_core::GUID::from_u128(0xc2cf3110_460e_4fc1_b9d0_8a1c0c9cc4bd);
pub const DestinationList: windows_core::GUID = windows_core::GUID::from_u128(0x77f10cf0_3db5_4966_b520_b7c54fd35ed6);
pub const DocPropShellExtension: windows_core::GUID = windows_core::GUID::from_u128(0x883373c3_bf89_11d1_be35_080036b11a03);
pub const DriveSizeCategorizer: windows_core::GUID = windows_core::GUID::from_u128(0x94357b53_ca29_4b78_83ae_e8fe7409134f);
pub const DriveTypeCategorizer: windows_core::GUID = windows_core::GUID::from_u128(0xb0a8f3cf_4333_4bab_8873_1ccb1cada48b);
pub const EBF_NODROPTARGET: EXPLORER_BROWSER_FILL_FLAGS = EXPLORER_BROWSER_FILL_FLAGS(512i32);
pub const EBF_NONE: EXPLORER_BROWSER_FILL_FLAGS = EXPLORER_BROWSER_FILL_FLAGS(0i32);
pub const EBF_SELECTFROMDATAOBJECT: EXPLORER_BROWSER_FILL_FLAGS = EXPLORER_BROWSER_FILL_FLAGS(256i32);
pub const EBO_ALWAYSNAVIGATE: EXPLORER_BROWSER_OPTIONS = EXPLORER_BROWSER_OPTIONS(4i32);
pub const EBO_HTMLSHAREPOINTVIEW: EXPLORER_BROWSER_OPTIONS = EXPLORER_BROWSER_OPTIONS(32i32);
pub const EBO_NAVIGATEONCE: EXPLORER_BROWSER_OPTIONS = EXPLORER_BROWSER_OPTIONS(1i32);
pub const EBO_NOBORDER: EXPLORER_BROWSER_OPTIONS = EXPLORER_BROWSER_OPTIONS(64i32);
pub const EBO_NONE: EXPLORER_BROWSER_OPTIONS = EXPLORER_BROWSER_OPTIONS(0i32);
pub const EBO_NOPERSISTVIEWSTATE: EXPLORER_BROWSER_OPTIONS = EXPLORER_BROWSER_OPTIONS(128i32);
pub const EBO_NOTRAVELLOG: EXPLORER_BROWSER_OPTIONS = EXPLORER_BROWSER_OPTIONS(8i32);
pub const EBO_NOWRAPPERWINDOW: EXPLORER_BROWSER_OPTIONS = EXPLORER_BROWSER_OPTIONS(16i32);
pub const EBO_SHOWFRAMES: EXPLORER_BROWSER_OPTIONS = EXPLORER_BROWSER_OPTIONS(2i32);
pub const ECF_AUTOMENUICONS: _EXPCMDFLAGS = _EXPCMDFLAGS(512i32);
pub const ECF_DEFAULT: _EXPCMDFLAGS = _EXPCMDFLAGS(0i32);
pub const ECF_HASLUASHIELD: _EXPCMDFLAGS = _EXPCMDFLAGS(16i32);
pub const ECF_HASSPLITBUTTON: _EXPCMDFLAGS = _EXPCMDFLAGS(2i32);
pub const ECF_HASSUBCOMMANDS: _EXPCMDFLAGS = _EXPCMDFLAGS(1i32);
pub const ECF_HIDELABEL: _EXPCMDFLAGS = _EXPCMDFLAGS(4i32);
pub const ECF_ISDROPDOWN: _EXPCMDFLAGS = _EXPCMDFLAGS(128i32);
pub const ECF_ISSEPARATOR: _EXPCMDFLAGS = _EXPCMDFLAGS(8i32);
pub const ECF_SEPARATORAFTER: _EXPCMDFLAGS = _EXPCMDFLAGS(64i32);
pub const ECF_SEPARATORBEFORE: _EXPCMDFLAGS = _EXPCMDFLAGS(32i32);
pub const ECF_TOGGLEABLE: _EXPCMDFLAGS = _EXPCMDFLAGS(256i32);
pub const ECHUIM_DESKTOP: EC_HOST_UI_MODE = EC_HOST_UI_MODE(0i32);
pub const ECHUIM_IMMERSIVE: EC_HOST_UI_MODE = EC_HOST_UI_MODE(1i32);
pub const ECHUIM_SYSTEM_LAUNCHER: EC_HOST_UI_MODE = EC_HOST_UI_MODE(2i32);
pub const ECS_CHECKBOX: _EXPCMDSTATE = _EXPCMDSTATE(4i32);
pub const ECS_CHECKED: _EXPCMDSTATE = _EXPCMDSTATE(8i32);
pub const ECS_DISABLED: _EXPCMDSTATE = _EXPCMDSTATE(1i32);
pub const ECS_ENABLED: _EXPCMDSTATE = _EXPCMDSTATE(0i32);
pub const ECS_HIDDEN: _EXPCMDSTATE = _EXPCMDSTATE(2i32);
pub const ECS_RADIOCHECK: _EXPCMDSTATE = _EXPCMDSTATE(16i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct EC_HOST_UI_MODE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct EDGE_GESTURE_KIND(pub i32);
pub const EGK_KEYBOARD: EDGE_GESTURE_KIND = EDGE_GESTURE_KIND(1i32);
pub const EGK_MOUSE: EDGE_GESTURE_KIND = EDGE_GESTURE_KIND(2i32);
pub const EGK_TOUCH: EDGE_GESTURE_KIND = EDGE_GESTURE_KIND(0i32);
pub const EPS_DEFAULT_OFF: _EXPLORERPANESTATE = _EXPLORERPANESTATE(2i32);
pub const EPS_DEFAULT_ON: _EXPLORERPANESTATE = _EXPLORERPANESTATE(1i32);
pub const EPS_DONTCARE: _EXPLORERPANESTATE = _EXPLORERPANESTATE(0i32);
pub const EPS_FORCE: _EXPLORERPANESTATE = _EXPLORERPANESTATE(131072i32);
pub const EPS_INITIALSTATE: _EXPLORERPANESTATE = _EXPLORERPANESTATE(65536i32);
pub const EPS_STATEMASK: _EXPLORERPANESTATE = _EXPLORERPANESTATE(65535i32);
pub const EP_AdvQueryPane: windows_core::GUID = windows_core::GUID::from_u128(0xb4e9db8b_34ba_4c39_b5cc_16a1bd2c411c);
pub const EP_Commands: windows_core::GUID = windows_core::GUID::from_u128(0xd9745868_ca5f_4a76_91cd_f5a129fbb076);
pub const EP_Commands_Organize: windows_core::GUID = windows_core::GUID::from_u128(0x72e81700_e3ec_4660_bf24_3c3b7b648806);
pub const EP_Commands_View: windows_core::GUID = windows_core::GUID::from_u128(0x21f7c32d_eeaa_439b_bb51_37b96fd6a943);
pub const EP_DetailsPane: windows_core::GUID = windows_core::GUID::from_u128(0x43abf98b_89b8_472d_b9ce_e69b8229f019);
pub const EP_NavPane: windows_core::GUID = windows_core::GUID::from_u128(0xcb316b22_25f7_42b8_8a09_540d23a43c2f);
pub const EP_PreviewPane: windows_core::GUID = windows_core::GUID::from_u128(0x893c63d1_45c8_4d17_be19_223be71be365);
pub const EP_QueryPane: windows_core::GUID = windows_core::GUID::from_u128(0x65bcde4f_4f07_4f27_83a7_1afca4df7ddd);
pub const EP_Ribbon: windows_core::GUID = windows_core::GUID::from_u128(0xd27524a8_c9f2_4834_a106_df8889fd4f37);
pub const EP_StatusBar: windows_core::GUID = windows_core::GUID::from_u128(0x65fe56ce_5cfe_4bc4_ad8a_7ae3fe7e8f7c);
pub const EXECUTE_E_LAUNCH_APPLICATION: windows_core::HRESULT = windows_core::HRESULT(0x80270101_u32 as _);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct EXPLORER_BROWSER_FILL_FLAGS(pub i32);
impl EXPLORER_BROWSER_FILL_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for EXPLORER_BROWSER_FILL_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for EXPLORER_BROWSER_FILL_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for EXPLORER_BROWSER_FILL_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for EXPLORER_BROWSER_FILL_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for EXPLORER_BROWSER_FILL_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct EXPLORER_BROWSER_OPTIONS(pub i32);
impl EXPLORER_BROWSER_OPTIONS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for EXPLORER_BROWSER_OPTIONS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for EXPLORER_BROWSER_OPTIONS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for EXPLORER_BROWSER_OPTIONS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for EXPLORER_BROWSER_OPTIONS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for EXPLORER_BROWSER_OPTIONS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const EXPPS_FILETYPES: _EXPPS = _EXPPS(1i32);
pub const EXP_DARWIN_ID_SIG: u32 = 2684354566u32;
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct EXP_DARWIN_LINK {
    pub dbh: DATABLOCK_HEADER,
    pub szDarwinID: [i8; 260],
    pub szwDarwinID: [u16; 260],
}
impl Default for EXP_DARWIN_LINK {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct EXP_PROPERTYSTORAGE {
    pub cbSize: u32,
    pub dwSignature: u32,
    pub abPropertyStorage: [u8; 1],
}
impl Default for EXP_PROPERTYSTORAGE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const EXP_PROPERTYSTORAGE_SIG: u32 = 2684354569u32;
#[repr(C, packed(1))]
#[derive(Clone, Copy, Default)]
pub struct EXP_SPECIAL_FOLDER {
    pub cbSize: u32,
    pub dwSignature: u32,
    pub idSpecialFolder: u32,
    pub cbOffset: u32,
}
pub const EXP_SPECIAL_FOLDER_SIG: u32 = 2684354565u32;
pub const EXP_SZ_ICON_SIG: u32 = 2684354567u32;
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct EXP_SZ_LINK {
    pub cbSize: u32,
    pub dwSignature: u32,
    pub szTarget: [i8; 260],
    pub swzTarget: [u16; 260],
}
impl Default for EXP_SZ_LINK {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const EXP_SZ_LINK_SIG: u32 = 2684354561u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct EXTRASEARCH {
    pub guidSearch: windows_core::GUID,
    pub wszFriendlyName: [u16; 80],
    pub wszUrl: [u16; 2084],
}
impl Default for EXTRASEARCH {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const E_ACTIVATIONDENIED_SHELLERROR: windows_core::HRESULT = windows_core::HRESULT(0x80270131_u32 as _);
pub const E_ACTIVATIONDENIED_SHELLNOTREADY: windows_core::HRESULT = windows_core::HRESULT(0x80270134_u32 as _);
pub const E_ACTIVATIONDENIED_SHELLRESTART: windows_core::HRESULT = windows_core::HRESULT(0x80270132_u32 as _);
pub const E_ACTIVATIONDENIED_UNEXPECTED: windows_core::HRESULT = windows_core::HRESULT(0x80270133_u32 as _);
pub const E_ACTIVATIONDENIED_USERCLOSE: windows_core::HRESULT = windows_core::HRESULT(0x80270130_u32 as _);
pub const E_FILE_PLACEHOLDER_NOT_INITIALIZED: windows_core::HRESULT = windows_core::HRESULT(0x80270110_u32 as _);
pub const E_FILE_PLACEHOLDER_SERVER_TIMED_OUT: windows_core::HRESULT = windows_core::HRESULT(0x80270112_u32 as _);
pub const E_FILE_PLACEHOLDER_STORAGEPROVIDER_NOT_FOUND: windows_core::HRESULT = windows_core::HRESULT(0x80270113_u32 as _);
pub const E_FILE_PLACEHOLDER_VERSION_MISMATCH: windows_core::HRESULT = windows_core::HRESULT(0x80270111_u32 as _);
pub const E_FLAGS: windows_core::HRESULT = windows_core::HRESULT(0x80041000_u32 as _);
pub const E_IMAGEFEED_CHANGEDISABLED: windows_core::HRESULT = windows_core::HRESULT(0x80270310_u32 as _);
pub const E_NOTVALIDFORANIMATEDIMAGE: windows_core::HRESULT = windows_core::HRESULT(0x80040001_u32 as _);
pub const E_PREVIEWHANDLER_CORRUPT: windows_core::HRESULT = windows_core::HRESULT(0x86420004_u32 as _);
pub const E_PREVIEWHANDLER_DRM_FAIL: windows_core::HRESULT = windows_core::HRESULT(0x86420001_u32 as _);
pub const E_PREVIEWHANDLER_NOAUTH: windows_core::HRESULT = windows_core::HRESULT(0x86420002_u32 as _);
pub const E_PREVIEWHANDLER_NOTFOUND: windows_core::HRESULT = windows_core::HRESULT(0x86420003_u32 as _);
pub const E_SHELL_EXTENSION_BLOCKED: windows_core::HRESULT = windows_core::HRESULT(0x80270301_u32 as _);
pub const E_TILE_NOTIFICATIONS_PLATFORM_FAILURE: windows_core::HRESULT = windows_core::HRESULT(0x80270249_u32 as _);
pub const E_USERTILE_CHANGEDISABLED: windows_core::HRESULT = windows_core::HRESULT(0x80270211_u32 as _);
pub const E_USERTILE_FILESIZE: windows_core::HRESULT = windows_core::HRESULT(0x80270214_u32 as _);
pub const E_USERTILE_LARGEORDYNAMIC: windows_core::HRESULT = windows_core::HRESULT(0x80270212_u32 as _);
pub const E_USERTILE_UNSUPPORTEDFILETYPE: windows_core::HRESULT = windows_core::HRESULT(0x80270210_u32 as _);
pub const E_USERTILE_VIDEOFRAMESIZE: windows_core::HRESULT = windows_core::HRESULT(0x80270213_u32 as _);
pub const EnumerableObjectCollection: windows_core::GUID = windows_core::GUID::from_u128(0x2d3468c1_36a7_43b6_ac24_d3f02fd9607a);
pub const ExecuteFolder: windows_core::GUID = windows_core::GUID::from_u128(0x11dbb47c_a525_400b_9e80_a54615a090c0);
pub const ExecuteUnknown: windows_core::GUID = windows_core::GUID::from_u128(0xe44e9428_bdbc_4987_a099_40dc8fd255e7);
pub const ExplorerBrowser: windows_core::GUID = windows_core::GUID::from_u128(0x71f96385_ddd6_48d3_a0c1_ae06e8b055fb);
pub const ExtractIfNotCached: ThumbnailStreamCacheOptions = ThumbnailStreamCacheOptions(0i32);
pub const FCIDM_BROWSERFIRST: u32 = 40960u32;
pub const FCIDM_BROWSERLAST: u32 = 48896u32;
pub const FCIDM_GLOBALFIRST: u32 = 32768u32;
pub const FCIDM_GLOBALLAST: u32 = 40959u32;
pub const FCIDM_MENU_EDIT: u32 = 32832u32;
pub const FCIDM_MENU_EXPLORE: u32 = 33104u32;
pub const FCIDM_MENU_FAVORITES: u32 = 33136u32;
pub const FCIDM_MENU_FILE: u32 = 32768u32;
pub const FCIDM_MENU_FIND: u32 = 33088u32;
pub const FCIDM_MENU_HELP: u32 = 33024u32;
pub const FCIDM_MENU_TOOLS: u32 = 32960u32;
pub const FCIDM_MENU_TOOLS_SEP_GOTO: u32 = 32961u32;
pub const FCIDM_MENU_VIEW: u32 = 32896u32;
pub const FCIDM_MENU_VIEW_SEP_OPTIONS: u32 = 32897u32;
pub const FCIDM_SHVIEWFIRST: u32 = 0u32;
pub const FCIDM_SHVIEWLAST: u32 = 32767u32;
pub const FCIDM_STATUS: u32 = 40961u32;
pub const FCIDM_TOOLBAR: u32 = 40960u32;
pub const FCSM_CLSID: u32 = 8u32;
pub const FCSM_FLAGS: u32 = 64u32;
pub const FCSM_ICONFILE: u32 = 16u32;
pub const FCSM_INFOTIP: u32 = 4u32;
pub const FCSM_LOGO: u32 = 32u32;
pub const FCSM_VIEWID: u32 = 1u32;
pub const FCSM_WEBVIEWTEMPLATE: u32 = 2u32;
pub const FCS_FLAG_DRAGDROP: u32 = 2u32;
pub const FCS_FORCEWRITE: u32 = 2u32;
pub const FCS_READ: u32 = 1u32;
pub const FCT_ADDTOEND: u32 = 4u32;
pub const FCT_CONFIGABLE: u32 = 2u32;
pub const FCT_MERGE: u32 = 1u32;
pub const FCW_INTERNETBAR: u32 = 6u32;
pub const FCW_PROGRESS: u32 = 8u32;
pub const FCW_STATUS: u32 = 1u32;
pub const FCW_TOOLBAR: u32 = 2u32;
pub const FCW_TREE: u32 = 3u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FDAP(pub i32);
pub const FDAP_BOTTOM: FDAP = FDAP(0i32);
pub const FDAP_TOP: FDAP = FDAP(1i32);
pub const FDEOR_ACCEPT: FDE_OVERWRITE_RESPONSE = FDE_OVERWRITE_RESPONSE(1i32);
pub const FDEOR_DEFAULT: FDE_OVERWRITE_RESPONSE = FDE_OVERWRITE_RESPONSE(0i32);
pub const FDEOR_REFUSE: FDE_OVERWRITE_RESPONSE = FDE_OVERWRITE_RESPONSE(2i32);
pub const FDESVR_ACCEPT: FDE_SHAREVIOLATION_RESPONSE = FDE_SHAREVIOLATION_RESPONSE(1i32);
pub const FDESVR_DEFAULT: FDE_SHAREVIOLATION_RESPONSE = FDE_SHAREVIOLATION_RESPONSE(0i32);
pub const FDESVR_REFUSE: FDE_SHAREVIOLATION_RESPONSE = FDE_SHAREVIOLATION_RESPONSE(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FDE_OVERWRITE_RESPONSE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FDE_SHAREVIOLATION_RESPONSE(pub i32);
pub const FDTF_LONGDATE: u32 = 4u32;
pub const FDTF_LONGTIME: u32 = 8u32;
pub const FDTF_LTRDATE: u32 = 256u32;
pub const FDTF_NOAUTOREADINGORDER: u32 = 1024u32;
pub const FDTF_RELATIVE: u32 = 16u32;
pub const FDTF_RTLDATE: u32 = 512u32;
pub const FDTF_SHORTDATE: u32 = 2u32;
pub const FDTF_SHORTTIME: u32 = 1u32;
pub const FD_ACCESSTIME: FD_FLAGS = FD_FLAGS(16i32);
pub const FD_ATTRIBUTES: FD_FLAGS = FD_FLAGS(4i32);
pub const FD_CLSID: FD_FLAGS = FD_FLAGS(1i32);
pub const FD_CREATETIME: FD_FLAGS = FD_FLAGS(8i32);
pub const FD_FILESIZE: FD_FLAGS = FD_FLAGS(64i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FD_FLAGS(pub i32);
pub const FD_LINKUI: FD_FLAGS = FD_FLAGS(32768i32);
pub const FD_PROGRESSUI: FD_FLAGS = FD_FLAGS(16384i32);
pub const FD_SIZEPOINT: FD_FLAGS = FD_FLAGS(2i32);
pub const FD_UNICODE: FD_FLAGS = FD_FLAGS(-2147483648i32);
pub const FD_WRITESTIME: FD_FLAGS = FD_FLAGS(32i32);
pub const FEM_NAVIGATION: FOLDER_ENUM_MODE = FOLDER_ENUM_MODE(1i32);
pub const FEM_VIEWRESULT: FOLDER_ENUM_MODE = FOLDER_ENUM_MODE(0i32);
pub const FFFP_EXACTMATCH: FFFP_MODE = FFFP_MODE(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FFFP_MODE(pub i32);
pub const FFFP_NEARESTPARENTMATCH: FFFP_MODE = FFFP_MODE(1i32);
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct FILEDESCRIPTORA {
    pub dwFlags: u32,
    pub clsid: windows_core::GUID,
    pub sizel: super::super::Foundation::SIZE,
    pub pointl: super::super::Foundation::POINTL,
    pub dwFileAttributes: u32,
    pub ftCreationTime: super::super::Foundation::FILETIME,
    pub ftLastAccessTime: super::super::Foundation::FILETIME,
    pub ftLastWriteTime: super::super::Foundation::FILETIME,
    pub nFileSizeHigh: u32,
    pub nFileSizeLow: u32,
    pub cFileName: [i8; 260],
}
impl Default for FILEDESCRIPTORA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct FILEDESCRIPTORW {
    pub dwFlags: u32,
    pub clsid: windows_core::GUID,
    pub sizel: super::super::Foundation::SIZE,
    pub pointl: super::super::Foundation::POINTL,
    pub dwFileAttributes: u32,
    pub ftCreationTime: super::super::Foundation::FILETIME,
    pub ftLastAccessTime: super::super::Foundation::FILETIME,
    pub ftLastWriteTime: super::super::Foundation::FILETIME,
    pub nFileSizeHigh: u32,
    pub nFileSizeLow: u32,
    pub cFileName: [u16; 260],
}
impl Default for FILEDESCRIPTORW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct FILEGROUPDESCRIPTORA {
    pub cItems: u32,
    pub fgd: [FILEDESCRIPTORA; 1],
}
impl Default for FILEGROUPDESCRIPTORA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct FILEGROUPDESCRIPTORW {
    pub cItems: u32,
    pub fgd: [FILEDESCRIPTORW; 1],
}
impl Default for FILEGROUPDESCRIPTORW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FILEOPENDIALOGOPTIONS(pub u32);
impl FILEOPENDIALOGOPTIONS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for FILEOPENDIALOGOPTIONS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for FILEOPENDIALOGOPTIONS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for FILEOPENDIALOGOPTIONS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for FILEOPENDIALOGOPTIONS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for FILEOPENDIALOGOPTIONS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FILEOPERATION_FLAGS(pub u32);
impl FILEOPERATION_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for FILEOPERATION_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for FILEOPERATION_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for FILEOPERATION_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for FILEOPERATION_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for FILEOPERATION_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FILETYPEATTRIBUTEFLAGS(pub i32);
impl FILETYPEATTRIBUTEFLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for FILETYPEATTRIBUTEFLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for FILETYPEATTRIBUTEFLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for FILETYPEATTRIBUTEFLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for FILETYPEATTRIBUTEFLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for FILETYPEATTRIBUTEFLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct FILE_ATTRIBUTES_ARRAY {
    pub cItems: u32,
    pub dwSumFileAttributes: u32,
    pub dwProductFileAttributes: u32,
    pub rgdwFileAttributes: [u32; 1],
}
impl Default for FILE_ATTRIBUTES_ARRAY {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FILE_OPERATION_FLAGS2(pub i32);
impl FILE_OPERATION_FLAGS2 {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for FILE_OPERATION_FLAGS2 {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for FILE_OPERATION_FLAGS2 {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for FILE_OPERATION_FLAGS2 {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for FILE_OPERATION_FLAGS2 {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for FILE_OPERATION_FLAGS2 {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FILE_USAGE_TYPE(pub i32);
pub const FLVM_CONTENT: FOLDERLOGICALVIEWMODE = FOLDERLOGICALVIEWMODE(5i32);
pub const FLVM_DETAILS: FOLDERLOGICALVIEWMODE = FOLDERLOGICALVIEWMODE(1i32);
pub const FLVM_FIRST: FOLDERLOGICALVIEWMODE = FOLDERLOGICALVIEWMODE(1i32);
pub const FLVM_ICONS: FOLDERLOGICALVIEWMODE = FOLDERLOGICALVIEWMODE(3i32);
pub const FLVM_LAST: FOLDERLOGICALVIEWMODE = FOLDERLOGICALVIEWMODE(5i32);
pub const FLVM_LIST: FOLDERLOGICALVIEWMODE = FOLDERLOGICALVIEWMODE(4i32);
pub const FLVM_TILES: FOLDERLOGICALVIEWMODE = FOLDERLOGICALVIEWMODE(2i32);
pub const FLVM_UNSPECIFIED: FOLDERLOGICALVIEWMODE = FOLDERLOGICALVIEWMODE(-1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FLYOUT_PLACEMENT(pub i32);
pub const FMTID_Briefcase: windows_core::GUID = windows_core::GUID::from_u128(0x328d8b21_7729_4bfc_954c_902b329d56b0);
pub const FMTID_CustomImageProperties: windows_core::GUID = windows_core::GUID::from_u128(0x7ecd8b0e_c136_4a9b_9411_4ebd6673ccc3);
pub const FMTID_DRM: windows_core::GUID = windows_core::GUID::from_u128(0xaeac19e4_89ae_4508_b9b7_bb867abee2ed);
pub const FMTID_Displaced: windows_core::GUID = windows_core::GUID::from_u128(0x9b174b33_40ff_11d2_a27e_00c04fc30871);
pub const FMTID_ImageProperties: windows_core::GUID = windows_core::GUID::from_u128(0x14b81da1_0135_4d31_96d9_6cbfc9671a99);
pub const FMTID_InternetSite: windows_core::GUID = windows_core::GUID::from_u128(0x000214a1_0000_0000_c000_000000000046);
pub const FMTID_Intshcut: windows_core::GUID = windows_core::GUID::from_u128(0x000214a0_0000_0000_c000_000000000046);
pub const FMTID_LibraryProperties: windows_core::GUID = windows_core::GUID::from_u128(0x5d76b67f_9b3d_44bb_b6ae_25da4f638a67);
pub const FMTID_MUSIC: windows_core::GUID = windows_core::GUID::from_u128(0x56a3372e_ce9c_11d2_9f0e_006097c686f6);
pub const FMTID_Misc: windows_core::GUID = windows_core::GUID::from_u128(0x9b174b34_40ff_11d2_a27e_00c04fc30871);
pub const FMTID_Query: windows_core::GUID = windows_core::GUID::from_u128(0x49691c90_7e17_101a_a91c_08002b2ecda9);
pub const FMTID_ShellDetails: windows_core::GUID = windows_core::GUID::from_u128(0x28636aa6_953d_11d2_b5d6_00c04fd918d0);
pub const FMTID_Storage: windows_core::GUID = windows_core::GUID::from_u128(0xb725f130_47ef_101a_a5f1_02608c9eebac);
pub const FMTID_Volume: windows_core::GUID = windows_core::GUID::from_u128(0x9b174b35_40ff_11d2_a27e_00c04fc30871);
pub const FMTID_WebView: windows_core::GUID = windows_core::GUID::from_u128(0xf2275480_f782_4291_bd94_f13693513aec);
pub const FOF2_MERGEFOLDERSONCOLLISION: FILE_OPERATION_FLAGS2 = FILE_OPERATION_FLAGS2(1i32);
pub const FOF2_NONE: FILE_OPERATION_FLAGS2 = FILE_OPERATION_FLAGS2(0i32);
pub const FOFX_ADDUNDORECORD: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(536870912u32);
pub const FOFX_COPYASDOWNLOAD: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(1073741824u32);
pub const FOFX_DONTDISPLAYDESTPATH: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(134217728u32);
pub const FOFX_DONTDISPLAYLOCATIONS: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(2147483648u32);
pub const FOFX_DONTDISPLAYSOURCEPATH: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(67108864u32);
pub const FOFX_EARLYFAILURE: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(1048576u32);
pub const FOFX_KEEPNEWERFILE: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(4194304u32);
pub const FOFX_MOVEACLSACROSSVOLUMES: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(33554432u32);
pub const FOFX_NOCOPYHOOKS: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(8388608u32);
pub const FOFX_NOMINIMIZEBOX: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(16777216u32);
pub const FOFX_NOSKIPJUNCTIONS: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(65536u32);
pub const FOFX_PREFERHARDLINK: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(131072u32);
pub const FOFX_PRESERVEFILEEXTENSIONS: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(2097152u32);
pub const FOFX_RECYCLEONDELETE: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(524288u32);
pub const FOFX_REQUIREELEVATION: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(268435456u32);
pub const FOFX_SHOWELEVATIONPROMPT: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(262144u32);
pub const FOF_ALLOWUNDO: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(64u32);
pub const FOF_CONFIRMMOUSE: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(2u32);
pub const FOF_FILESONLY: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(128u32);
pub const FOF_MULTIDESTFILES: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(1u32);
pub const FOF_NOCONFIRMATION: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(16u32);
pub const FOF_NOCONFIRMMKDIR: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(512u32);
pub const FOF_NOCOPYSECURITYATTRIBS: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(2048u32);
pub const FOF_NOERRORUI: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(1024u32);
pub const FOF_NORECURSEREPARSE: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(32768u32);
pub const FOF_NORECURSION: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(4096u32);
pub const FOF_NO_CONNECTED_ELEMENTS: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(8192u32);
pub const FOF_NO_UI: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(1556u32);
pub const FOF_RENAMEONCOLLISION: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(8u32);
pub const FOF_SILENT: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(4u32);
pub const FOF_SIMPLEPROGRESS: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(256u32);
pub const FOF_WANTMAPPINGHANDLE: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(32u32);
pub const FOF_WANTNUKEWARNING: FILEOPERATION_FLAGS = FILEOPERATION_FLAGS(16384u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FOLDERFLAGS(pub i32);
impl FOLDERFLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for FOLDERFLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for FOLDERFLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for FOLDERFLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for FOLDERFLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for FOLDERFLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const FOLDERID_AccountPictures: windows_core::GUID = windows_core::GUID::from_u128(0x008ca0b1_55b4_4c56_b8a8_4de4b299d3be);
pub const FOLDERID_AddNewPrograms: windows_core::GUID = windows_core::GUID::from_u128(0xde61d971_5ebc_4f02_a3a9_6c82895e5c04);
pub const FOLDERID_AdminTools: windows_core::GUID = windows_core::GUID::from_u128(0x724ef170_a42d_4fef_9f26_b60e846fba4f);
pub const FOLDERID_AllAppMods: windows_core::GUID = windows_core::GUID::from_u128(0x7ad67899_66af_43ba_9156_6aad42e6c596);
pub const FOLDERID_AppCaptures: windows_core::GUID = windows_core::GUID::from_u128(0xedc0fe71_98d8_4f4a_b920_c8dc133cb165);
pub const FOLDERID_AppDataDesktop: windows_core::GUID = windows_core::GUID::from_u128(0xb2c5e279_7add_439f_b28c_c41fe1bbf672);
pub const FOLDERID_AppDataDocuments: windows_core::GUID = windows_core::GUID::from_u128(0x7be16610_1f7f_44ac_bff0_83e15f2ffca1);
pub const FOLDERID_AppDataFavorites: windows_core::GUID = windows_core::GUID::from_u128(0x7cfbefbc_de1f_45aa_b843_a542ac536cc9);
pub const FOLDERID_AppDataProgramData: windows_core::GUID = windows_core::GUID::from_u128(0x559d40a3_a036_40fa_af61_84cb430a4d34);
pub const FOLDERID_AppUpdates: windows_core::GUID = windows_core::GUID::from_u128(0xa305ce99_f527_492b_8b1a_7e76fa98d6e4);
pub const FOLDERID_ApplicationShortcuts: windows_core::GUID = windows_core::GUID::from_u128(0xa3918781_e5f2_4890_b3d9_a7e54332328c);
pub const FOLDERID_AppsFolder: windows_core::GUID = windows_core::GUID::from_u128(0x1e87508d_89c2_42f0_8a7e_645a0f50ca58);
pub const FOLDERID_CDBurning: windows_core::GUID = windows_core::GUID::from_u128(0x9e52ab10_f80d_49df_acb8_4330f5687855);
pub const FOLDERID_CameraRoll: windows_core::GUID = windows_core::GUID::from_u128(0xab5fb87b_7ce2_4f83_915d_550846c9537b);
pub const FOLDERID_CameraRollLibrary: windows_core::GUID = windows_core::GUID::from_u128(0x2b20df75_1eda_4039_8097_38798227d5b7);
pub const FOLDERID_ChangeRemovePrograms: windows_core::GUID = windows_core::GUID::from_u128(0xdf7266ac_9274_4867_8d55_3bd661de872d);
pub const FOLDERID_CommonAdminTools: windows_core::GUID = windows_core::GUID::from_u128(0xd0384e7d_bac3_4797_8f14_cba229b392b5);
pub const FOLDERID_CommonOEMLinks: windows_core::GUID = windows_core::GUID::from_u128(0xc1bae2d0_10df_4334_bedd_7aa20b227a9d);
pub const FOLDERID_CommonPrograms: windows_core::GUID = windows_core::GUID::from_u128(0x0139d44e_6afe_49f2_8690_3dafcae6ffb8);
pub const FOLDERID_CommonStartMenu: windows_core::GUID = windows_core::GUID::from_u128(0xa4115719_d62e_491d_aa7c_e74b8be3b067);
pub const FOLDERID_CommonStartMenuPlaces: windows_core::GUID = windows_core::GUID::from_u128(0xa440879f_87a0_4f7d_b700_0207b966194a);
pub const FOLDERID_CommonStartup: windows_core::GUID = windows_core::GUID::from_u128(0x82a5ea35_d9cd_47c5_9629_e15d2f714e6e);
pub const FOLDERID_CommonTemplates: windows_core::GUID = windows_core::GUID::from_u128(0xb94237e7_57ac_4347_9151_b08c6c32d1f7);
pub const FOLDERID_ComputerFolder: windows_core::GUID = windows_core::GUID::from_u128(0x0ac0837c_bbf8_452a_850d_79d08e667ca7);
pub const FOLDERID_ConflictFolder: windows_core::GUID = windows_core::GUID::from_u128(0x4bfefb45_347d_4006_a5be_ac0cb0567192);
pub const FOLDERID_ConnectionsFolder: windows_core::GUID = windows_core::GUID::from_u128(0x6f0cd92b_2e97_45d1_88ff_b0d186b8dedd);
pub const FOLDERID_Contacts: windows_core::GUID = windows_core::GUID::from_u128(0x56784854_c6cb_462b_8169_88e350acb882);
pub const FOLDERID_ControlPanelFolder: windows_core::GUID = windows_core::GUID::from_u128(0x82a74aeb_aeb4_465c_a014_d097ee346d63);
pub const FOLDERID_Cookies: windows_core::GUID = windows_core::GUID::from_u128(0x2b0f765d_c0e9_4171_908e_08a611b84ff6);
pub const FOLDERID_CurrentAppMods: windows_core::GUID = windows_core::GUID::from_u128(0x3db40b20_2a30_4dbe_917e_771dd21dd099);
pub const FOLDERID_Desktop: windows_core::GUID = windows_core::GUID::from_u128(0xb4bfcc3a_db2c_424c_b029_7fe99a87c641);
pub const FOLDERID_DevelopmentFiles: windows_core::GUID = windows_core::GUID::from_u128(0xdbe8e08e_3053_4bbc_b183_2a7b2b191e59);
pub const FOLDERID_Device: windows_core::GUID = windows_core::GUID::from_u128(0x1c2ac1dc_4358_4b6c_9733_af21156576f0);
pub const FOLDERID_DeviceMetadataStore: windows_core::GUID = windows_core::GUID::from_u128(0x5ce4a5e9_e4eb_479d_b89f_130c02886155);
pub const FOLDERID_Documents: windows_core::GUID = windows_core::GUID::from_u128(0xfdd39ad0_238f_46af_adb4_6c85480369c7);
pub const FOLDERID_DocumentsLibrary: windows_core::GUID = windows_core::GUID::from_u128(0x7b0db17d_9cd2_4a93_9733_46cc89022e7c);
pub const FOLDERID_Downloads: windows_core::GUID = windows_core::GUID::from_u128(0x374de290_123f_4565_9164_39c4925e467b);
pub const FOLDERID_Favorites: windows_core::GUID = windows_core::GUID::from_u128(0x1777f761_68ad_4d8a_87bd_30b759fa33dd);
pub const FOLDERID_Fonts: windows_core::GUID = windows_core::GUID::from_u128(0xfd228cb7_ae11_4ae3_864c_16f3910ab8fe);
pub const FOLDERID_GameTasks: windows_core::GUID = windows_core::GUID::from_u128(0x054fae61_4dd8_4787_80b6_090220c4b700);
pub const FOLDERID_Games: windows_core::GUID = windows_core::GUID::from_u128(0xcac52c1a_b53d_4edc_92d7_6b2e8ac19434);
pub const FOLDERID_History: windows_core::GUID = windows_core::GUID::from_u128(0xd9dc8a3b_b784_432e_a781_5a1130a75963);
pub const FOLDERID_HomeGroup: windows_core::GUID = windows_core::GUID::from_u128(0x52528a6b_b9e3_4add_b60d_588c2dba842d);
pub const FOLDERID_HomeGroupCurrentUser: windows_core::GUID = windows_core::GUID::from_u128(0x9b74b6a3_0dfd_4f11_9e78_5f7800f2e772);
pub const FOLDERID_ImplicitAppShortcuts: windows_core::GUID = windows_core::GUID::from_u128(0xbcb5256f_79f6_4cee_b725_dc34e402fd46);
pub const FOLDERID_InternetCache: windows_core::GUID = windows_core::GUID::from_u128(0x352481e8_33be_4251_ba85_6007caedcf9d);
pub const FOLDERID_InternetFolder: windows_core::GUID = windows_core::GUID::from_u128(0x4d9f7874_4e0c_4904_967b_40b0d20c3e4b);
pub const FOLDERID_Libraries: windows_core::GUID = windows_core::GUID::from_u128(0x1b3ea5dc_b587_4786_b4ef_bd1dc332aeae);
pub const FOLDERID_Links: windows_core::GUID = windows_core::GUID::from_u128(0xbfb9d5e0_c6a9_404c_b2b2_ae6db6af4968);
pub const FOLDERID_LocalAppData: windows_core::GUID = windows_core::GUID::from_u128(0xf1b32785_6fba_4fcf_9d55_7b8e7f157091);
pub const FOLDERID_LocalAppDataLow: windows_core::GUID = windows_core::GUID::from_u128(0xa520a1a4_1780_4ff6_bd18_167343c5af16);
pub const FOLDERID_LocalDocuments: windows_core::GUID = windows_core::GUID::from_u128(0xf42ee2d3_909f_4907_8871_4c22fc0bf756);
pub const FOLDERID_LocalDownloads: windows_core::GUID = windows_core::GUID::from_u128(0x7d83ee9b_2244_4e70_b1f5_5393042af1e4);
pub const FOLDERID_LocalMusic: windows_core::GUID = windows_core::GUID::from_u128(0xa0c69a99_21c8_4671_8703_7934162fcf1d);
pub const FOLDERID_LocalPictures: windows_core::GUID = windows_core::GUID::from_u128(0x0ddd015d_b06c_45d5_8c4c_f59713854639);
pub const FOLDERID_LocalStorage: windows_core::GUID = windows_core::GUID::from_u128(0xb3eb08d3_a1f3_496b_865a_42b536cda0ec);
pub const FOLDERID_LocalVideos: windows_core::GUID = windows_core::GUID::from_u128(0x35286a68_3c57_41a1_bbb1_0eae73d76c95);
pub const FOLDERID_LocalizedResourcesDir: windows_core::GUID = windows_core::GUID::from_u128(0x2a00375e_224c_49de_b8d1_440df7ef3ddc);
pub const FOLDERID_Music: windows_core::GUID = windows_core::GUID::from_u128(0x4bd8d571_6d19_48d3_be97_422220080e43);
pub const FOLDERID_MusicLibrary: windows_core::GUID = windows_core::GUID::from_u128(0x2112ab0a_c86a_4ffe_a368_0de96e47012e);
pub const FOLDERID_NetHood: windows_core::GUID = windows_core::GUID::from_u128(0xc5abbf53_e17f_4121_8900_86626fc2c973);
pub const FOLDERID_NetworkFolder: windows_core::GUID = windows_core::GUID::from_u128(0xd20beec4_5ca8_4905_ae3b_bf251ea09b53);
pub const FOLDERID_Objects3D: windows_core::GUID = windows_core::GUID::from_u128(0x31c0dd25_9439_4f12_bf41_7ff4eda38722);
pub const FOLDERID_OneDrive: windows_core::GUID = windows_core::GUID::from_u128(0xa52bba46_e9e1_435f_b3d9_28daa648c0f6);
pub const FOLDERID_OriginalImages: windows_core::GUID = windows_core::GUID::from_u128(0x2c36c0aa_5812_4b87_bfd0_4cd0dfb19b39);
pub const FOLDERID_PhotoAlbums: windows_core::GUID = windows_core::GUID::from_u128(0x69d2cf90_fc33_4fb7_9a0c_ebb0f0fcb43c);
pub const FOLDERID_Pictures: windows_core::GUID = windows_core::GUID::from_u128(0x33e28130_4e1e_4676_835a_98395c3bc3bb);
pub const FOLDERID_PicturesLibrary: windows_core::GUID = windows_core::GUID::from_u128(0xa990ae9f_a03b_4e80_94bc_9912d7504104);
pub const FOLDERID_Playlists: windows_core::GUID = windows_core::GUID::from_u128(0xde92c1c7_837f_4f69_a3bb_86e631204a23);
pub const FOLDERID_PrintHood: windows_core::GUID = windows_core::GUID::from_u128(0x9274bd8d_cfd1_41c3_b35e_b13f55a758f4);
pub const FOLDERID_PrintersFolder: windows_core::GUID = windows_core::GUID::from_u128(0x76fc4e2d_d6ad_4519_a663_37bd56068185);
pub const FOLDERID_Profile: windows_core::GUID = windows_core::GUID::from_u128(0x5e6c858f_0e22_4760_9afe_ea3317b67173);
pub const FOLDERID_ProgramData: windows_core::GUID = windows_core::GUID::from_u128(0x62ab5d82_fdc1_4dc3_a9dd_070d1d495d97);
pub const FOLDERID_ProgramFiles: windows_core::GUID = windows_core::GUID::from_u128(0x905e63b6_c1bf_494e_b29c_65b732d3d21a);
pub const FOLDERID_ProgramFilesCommon: windows_core::GUID = windows_core::GUID::from_u128(0xf7f1ed05_9f6d_47a2_aaae_29d317c6f066);
pub const FOLDERID_ProgramFilesCommonX64: windows_core::GUID = windows_core::GUID::from_u128(0x6365d5a7_0f0d_45e5_87f6_0da56b6a4f7d);
pub const FOLDERID_ProgramFilesCommonX86: windows_core::GUID = windows_core::GUID::from_u128(0xde974d24_d9c6_4d3e_bf91_f4455120b917);
pub const FOLDERID_ProgramFilesX64: windows_core::GUID = windows_core::GUID::from_u128(0x6d809377_6af0_444b_8957_a3773f02200e);
pub const FOLDERID_ProgramFilesX86: windows_core::GUID = windows_core::GUID::from_u128(0x7c5a40ef_a0fb_4bfc_874a_c0f2e0b9fa8e);
pub const FOLDERID_Programs: windows_core::GUID = windows_core::GUID::from_u128(0xa77f5d77_2e2b_44c3_a6a2_aba601054a51);
pub const FOLDERID_Public: windows_core::GUID = windows_core::GUID::from_u128(0xdfdf76a2_c82a_4d63_906a_5644ac457385);
pub const FOLDERID_PublicDesktop: windows_core::GUID = windows_core::GUID::from_u128(0xc4aa340d_f20f_4863_afef_f87ef2e6ba25);
pub const FOLDERID_PublicDocuments: windows_core::GUID = windows_core::GUID::from_u128(0xed4824af_dce4_45a8_81e2_fc7965083634);
pub const FOLDERID_PublicDownloads: windows_core::GUID = windows_core::GUID::from_u128(0x3d644c9b_1fb8_4f30_9b45_f670235f79c0);
pub const FOLDERID_PublicGameTasks: windows_core::GUID = windows_core::GUID::from_u128(0xdebf2536_e1a8_4c59_b6a2_414586476aea);
pub const FOLDERID_PublicLibraries: windows_core::GUID = windows_core::GUID::from_u128(0x48daf80b_e6cf_4f4e_b800_0e69d84ee384);
pub const FOLDERID_PublicMusic: windows_core::GUID = windows_core::GUID::from_u128(0x3214fab5_9757_4298_bb61_92a9deaa44ff);
pub const FOLDERID_PublicPictures: windows_core::GUID = windows_core::GUID::from_u128(0xb6ebfb86_6907_413c_9af7_4fc2abf07cc5);
pub const FOLDERID_PublicRingtones: windows_core::GUID = windows_core::GUID::from_u128(0xe555ab60_153b_4d17_9f04_a5fe99fc15ec);
pub const FOLDERID_PublicUserTiles: windows_core::GUID = windows_core::GUID::from_u128(0x0482af6c_08f1_4c34_8c90_e17ec98b1e17);
pub const FOLDERID_PublicVideos: windows_core::GUID = windows_core::GUID::from_u128(0x2400183a_6185_49fb_a2d8_4a392a602ba3);
pub const FOLDERID_QuickLaunch: windows_core::GUID = windows_core::GUID::from_u128(0x52a4f021_7b75_48a9_9f6b_4b87a210bc8f);
pub const FOLDERID_Recent: windows_core::GUID = windows_core::GUID::from_u128(0xae50c081_ebd2_438a_8655_8a092e34987a);
pub const FOLDERID_RecordedCalls: windows_core::GUID = windows_core::GUID::from_u128(0x2f8b40c2_83ed_48ee_b383_a1f157ec6f9a);
pub const FOLDERID_RecordedTVLibrary: windows_core::GUID = windows_core::GUID::from_u128(0x1a6fdba2_f42d_4358_a798_b74d745926c5);
pub const FOLDERID_RecycleBinFolder: windows_core::GUID = windows_core::GUID::from_u128(0xb7534046_3ecb_4c18_be4e_64cd4cb7d6ac);
pub const FOLDERID_ResourceDir: windows_core::GUID = windows_core::GUID::from_u128(0x8ad10c31_2adb_4296_a8f7_e4701232c972);
pub const FOLDERID_RetailDemo: windows_core::GUID = windows_core::GUID::from_u128(0x12d4c69e_24ad_4923_be19_31321c43a767);
pub const FOLDERID_Ringtones: windows_core::GUID = windows_core::GUID::from_u128(0xc870044b_f49e_4126_a9c3_b52a1ff411e8);
pub const FOLDERID_RoamedTileImages: windows_core::GUID = windows_core::GUID::from_u128(0xaaa8d5a5_f1d6_4259_baa8_78e7ef60835e);
pub const FOLDERID_RoamingAppData: windows_core::GUID = windows_core::GUID::from_u128(0x3eb685db_65f9_4cf6_a03a_e3ef65729f3d);
pub const FOLDERID_RoamingTiles: windows_core::GUID = windows_core::GUID::from_u128(0x00bcfc5a_ed94_4e48_96a1_3f6217f21990);
pub const FOLDERID_SEARCH_CSC: windows_core::GUID = windows_core::GUID::from_u128(0xee32e446_31ca_4aba_814f_a5ebd2fd6d5e);
pub const FOLDERID_SEARCH_MAPI: windows_core::GUID = windows_core::GUID::from_u128(0x98ec0e18_2098_4d44_8644_66979315a281);
pub const FOLDERID_SampleMusic: windows_core::GUID = windows_core::GUID::from_u128(0xb250c668_f57d_4ee1_a63c_290ee7d1aa1f);
pub const FOLDERID_SamplePictures: windows_core::GUID = windows_core::GUID::from_u128(0xc4900540_2379_4c75_844b_64e6faf8716b);
pub const FOLDERID_SamplePlaylists: windows_core::GUID = windows_core::GUID::from_u128(0x15ca69b3_30ee_49c1_ace1_6b5ec372afb5);
pub const FOLDERID_SampleVideos: windows_core::GUID = windows_core::GUID::from_u128(0x859ead94_2e85_48ad_a71a_0969cb56a6cd);
pub const FOLDERID_SavedGames: windows_core::GUID = windows_core::GUID::from_u128(0x4c5c32ff_bb9d_43b0_b5b4_2d72e54eaaa4);
pub const FOLDERID_SavedPictures: windows_core::GUID = windows_core::GUID::from_u128(0x3b193882_d3ad_4eab_965a_69829d1fb59f);
pub const FOLDERID_SavedPicturesLibrary: windows_core::GUID = windows_core::GUID::from_u128(0xe25b5812_be88_4bd9_94b0_29233477b6c3);
pub const FOLDERID_SavedSearches: windows_core::GUID = windows_core::GUID::from_u128(0x7d1d3a04_debb_4115_95cf_2f29da2920da);
pub const FOLDERID_Screenshots: windows_core::GUID = windows_core::GUID::from_u128(0xb7bede81_df94_4682_a7d8_57a52620b86f);
pub const FOLDERID_SearchHistory: windows_core::GUID = windows_core::GUID::from_u128(0x0d4c3db6_03a3_462f_a0e6_08924c41b5d4);
pub const FOLDERID_SearchHome: windows_core::GUID = windows_core::GUID::from_u128(0x190337d1_b8ca_4121_a639_6d472d16972a);
pub const FOLDERID_SearchTemplates: windows_core::GUID = windows_core::GUID::from_u128(0x7e636bfe_dfa9_4d5e_b456_d7b39851d8a9);
pub const FOLDERID_SendTo: windows_core::GUID = windows_core::GUID::from_u128(0x8983036c_27c0_404b_8f08_102d10dcfd74);
pub const FOLDERID_SidebarDefaultParts: windows_core::GUID = windows_core::GUID::from_u128(0x7b396e54_9ec5_4300_be0a_2482ebae1a26);
pub const FOLDERID_SidebarParts: windows_core::GUID = windows_core::GUID::from_u128(0xa75d362e_50fc_4fb7_ac2c_a8beaa314493);
pub const FOLDERID_SkyDrive: windows_core::GUID = windows_core::GUID::from_u128(0xa52bba46_e9e1_435f_b3d9_28daa648c0f6);
pub const FOLDERID_SkyDriveCameraRoll: windows_core::GUID = windows_core::GUID::from_u128(0x767e6811_49cb_4273_87c2_20f355e1085b);
pub const FOLDERID_SkyDriveDocuments: windows_core::GUID = windows_core::GUID::from_u128(0x24d89e24_2f19_4534_9dde_6a6671fbb8fe);
pub const FOLDERID_SkyDriveMusic: windows_core::GUID = windows_core::GUID::from_u128(0xc3f2459e_80d6_45dc_bfef_1f769f2be730);
pub const FOLDERID_SkyDrivePictures: windows_core::GUID = windows_core::GUID::from_u128(0x339719b5_8c47_4894_94c2_d8f77add44a6);
pub const FOLDERID_StartMenu: windows_core::GUID = windows_core::GUID::from_u128(0x625b53c3_ab48_4ec1_ba1f_a1ef4146fc19);
pub const FOLDERID_StartMenuAllPrograms: windows_core::GUID = windows_core::GUID::from_u128(0xf26305ef_6948_40b9_b255_81453d09c785);
pub const FOLDERID_Startup: windows_core::GUID = windows_core::GUID::from_u128(0xb97d20bb_f46a_4c97_ba10_5e3608430854);
pub const FOLDERID_SyncManagerFolder: windows_core::GUID = windows_core::GUID::from_u128(0x43668bf8_c14e_49b2_97c9_747784d784b7);
pub const FOLDERID_SyncResultsFolder: windows_core::GUID = windows_core::GUID::from_u128(0x289a9a43_be44_4057_a41b_587a76d7e7f9);
pub const FOLDERID_SyncSetupFolder: windows_core::GUID = windows_core::GUID::from_u128(0x0f214138_b1d3_4a90_bba9_27cbc0c5389a);
pub const FOLDERID_System: windows_core::GUID = windows_core::GUID::from_u128(0x1ac14e77_02e7_4e5d_b744_2eb1ae5198b7);
pub const FOLDERID_SystemX86: windows_core::GUID = windows_core::GUID::from_u128(0xd65231b0_b2f1_4857_a4ce_a8e7c6ea7d27);
pub const FOLDERID_Templates: windows_core::GUID = windows_core::GUID::from_u128(0xa63293e8_664e_48db_a079_df759e0509f7);
pub const FOLDERID_UserPinned: windows_core::GUID = windows_core::GUID::from_u128(0x9e3995ab_1f9c_4f13_b827_48b24b6c7174);
pub const FOLDERID_UserProfiles: windows_core::GUID = windows_core::GUID::from_u128(0x0762d272_c50a_4bb0_a382_697dcd729b80);
pub const FOLDERID_UserProgramFiles: windows_core::GUID = windows_core::GUID::from_u128(0x5cd7aee2_2219_4a67_b85d_6c9ce15660cb);
pub const FOLDERID_UserProgramFilesCommon: windows_core::GUID = windows_core::GUID::from_u128(0xbcbd3057_ca5c_4622_b42d_bc56db0ae516);
pub const FOLDERID_UsersFiles: windows_core::GUID = windows_core::GUID::from_u128(0xf3ce0f7c_4901_4acc_8648_d5d44b04ef8f);
pub const FOLDERID_UsersLibraries: windows_core::GUID = windows_core::GUID::from_u128(0xa302545d_deff_464b_abe8_61c8648d939b);
pub const FOLDERID_Videos: windows_core::GUID = windows_core::GUID::from_u128(0x18989b1d_99b5_455b_841c_ab7c74e4ddfc);
pub const FOLDERID_VideosLibrary: windows_core::GUID = windows_core::GUID::from_u128(0x491e922f_5643_4af4_a7eb_4e7a138d8174);
pub const FOLDERID_Windows: windows_core::GUID = windows_core::GUID::from_u128(0xf38bf404_1d43_42f2_9305_67de0b28fc23);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FOLDERLOGICALVIEWMODE(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct FOLDERSETDATA {
    pub _fs: FOLDERSETTINGS,
    pub _vidRestore: windows_core::GUID,
    pub _dwViewPriority: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct FOLDERSETTINGS {
    pub ViewMode: u32,
    pub fFlags: u32,
}
pub const FOLDERTYPEID_AccountPictures: windows_core::GUID = windows_core::GUID::from_u128(0xdb2a5d8f_06e6_4007_aba6_af877d526ea6);
pub const FOLDERTYPEID_Communications: windows_core::GUID = windows_core::GUID::from_u128(0x91475fe5_586b_4eba_8d75_d17434b8cdf6);
pub const FOLDERTYPEID_CompressedFolder: windows_core::GUID = windows_core::GUID::from_u128(0x80213e82_bcfd_4c4f_8817_bb27601267a9);
pub const FOLDERTYPEID_Contacts: windows_core::GUID = windows_core::GUID::from_u128(0xde2b70ec_9bf7_4a93_bd3d_243f7881d492);
pub const FOLDERTYPEID_ControlPanelCategory: windows_core::GUID = windows_core::GUID::from_u128(0xde4f0660_fa10_4b8f_a494_068b20b22307);
pub const FOLDERTYPEID_ControlPanelClassic: windows_core::GUID = windows_core::GUID::from_u128(0x0c3794f3_b545_43aa_a329_c37430c58d2a);
pub const FOLDERTYPEID_Documents: windows_core::GUID = windows_core::GUID::from_u128(0x7d49d726_3c21_4f05_99aa_fdc2c9474656);
pub const FOLDERTYPEID_Downloads: windows_core::GUID = windows_core::GUID::from_u128(0x885a186e_a440_4ada_812b_db871b942259);
pub const FOLDERTYPEID_Games: windows_core::GUID = windows_core::GUID::from_u128(0xb689b0d0_76d3_4cbb_87f7_585d0e0ce070);
pub const FOLDERTYPEID_Generic: windows_core::GUID = windows_core::GUID::from_u128(0x5c4f28b5_f869_4e84_8e60_f11db97c5cc7);
pub const FOLDERTYPEID_GenericLibrary: windows_core::GUID = windows_core::GUID::from_u128(0x5f4eab9a_6833_4f61_899d_31cf46979d49);
pub const FOLDERTYPEID_GenericSearchResults: windows_core::GUID = windows_core::GUID::from_u128(0x7fde1a1e_8b31_49a5_93b8_6be14cfa4943);
pub const FOLDERTYPEID_Invalid: windows_core::GUID = windows_core::GUID::from_u128(0x57807898_8c4f_4462_bb63_71042380b109);
pub const FOLDERTYPEID_Music: windows_core::GUID = windows_core::GUID::from_u128(0x94d6ddcc_4a68_4175_a374_bd584a510b78);
pub const FOLDERTYPEID_NetworkExplorer: windows_core::GUID = windows_core::GUID::from_u128(0x25cc242b_9a7c_4f51_80e0_7a2928febe42);
pub const FOLDERTYPEID_OpenSearch: windows_core::GUID = windows_core::GUID::from_u128(0x8faf9629_1980_46ff_8023_9dceab9c3ee3);
pub const FOLDERTYPEID_OtherUsers: windows_core::GUID = windows_core::GUID::from_u128(0xb337fd00_9dd5_4635_a6d4_da33fd102b7a);
pub const FOLDERTYPEID_Pictures: windows_core::GUID = windows_core::GUID::from_u128(0xb3690e58_e961_423b_b687_386ebfd83239);
pub const FOLDERTYPEID_Printers: windows_core::GUID = windows_core::GUID::from_u128(0x2c7bbec6_c844_4a0a_91fa_cef6f59cfda1);
pub const FOLDERTYPEID_PublishedItems: windows_core::GUID = windows_core::GUID::from_u128(0x7f2f5b96_ff74_41da_afd8_1c78a5f3aea2);
pub const FOLDERTYPEID_RecordedTV: windows_core::GUID = windows_core::GUID::from_u128(0x5557a28f_5da6_4f83_8809_c2c98a11a6fa);
pub const FOLDERTYPEID_RecycleBin: windows_core::GUID = windows_core::GUID::from_u128(0xd6d9e004_cd87_442b_9d57_5e0aeb4f6f72);
pub const FOLDERTYPEID_SavedGames: windows_core::GUID = windows_core::GUID::from_u128(0xd0363307_28cb_4106_9f23_2956e3e5e0e7);
pub const FOLDERTYPEID_SearchConnector: windows_core::GUID = windows_core::GUID::from_u128(0x982725ee_6f47_479e_b447_812bfa7d2e8f);
pub const FOLDERTYPEID_SearchHome: windows_core::GUID = windows_core::GUID::from_u128(0x834d8a44_0974_4ed6_866e_f203d80b3810);
pub const FOLDERTYPEID_Searches: windows_core::GUID = windows_core::GUID::from_u128(0x0b0ba2e3_405f_415e_a6ee_cad625207853);
pub const FOLDERTYPEID_SoftwareExplorer: windows_core::GUID = windows_core::GUID::from_u128(0xd674391b_52d9_4e07_834e_67c98610f39d);
pub const FOLDERTYPEID_StartMenu: windows_core::GUID = windows_core::GUID::from_u128(0xef87b4cb_f2ce_4785_8658_4ca6c63e38c6);
pub const FOLDERTYPEID_StorageProviderDocuments: windows_core::GUID = windows_core::GUID::from_u128(0xdd61bd66_70e8_48dd_9655_65c5e1aac2d1);
pub const FOLDERTYPEID_StorageProviderGeneric: windows_core::GUID = windows_core::GUID::from_u128(0x4f01ebc5_2385_41f2_a28e_2c5c91fb56e0);
pub const FOLDERTYPEID_StorageProviderMusic: windows_core::GUID = windows_core::GUID::from_u128(0x672ecd7e_af04_4399_875c_0290845b6247);
pub const FOLDERTYPEID_StorageProviderPictures: windows_core::GUID = windows_core::GUID::from_u128(0x71d642a9_f2b1_42cd_ad92_eb9300c7cc0a);
pub const FOLDERTYPEID_StorageProviderVideos: windows_core::GUID = windows_core::GUID::from_u128(0x51294da1_d7b1_485b_9e9a_17cffe33e187);
pub const FOLDERTYPEID_UserFiles: windows_core::GUID = windows_core::GUID::from_u128(0xcd0fc69b_71e2_46e5_9690_5bcd9f57aab3);
pub const FOLDERTYPEID_UsersLibraries: windows_core::GUID = windows_core::GUID::from_u128(0xc4d98f09_6124_4fe0_9942_826416082da9);
pub const FOLDERTYPEID_Videos: windows_core::GUID = windows_core::GUID::from_u128(0x5fa96407_7e77_483c_ac93_691d05850de8);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FOLDERVIEWMODE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FOLDERVIEWOPTIONS(pub i32);
impl FOLDERVIEWOPTIONS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for FOLDERVIEWOPTIONS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for FOLDERVIEWOPTIONS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for FOLDERVIEWOPTIONS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for FOLDERVIEWOPTIONS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for FOLDERVIEWOPTIONS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FOLDER_ENUM_MODE(pub i32);
pub const FOS_ALLNONSTORAGEITEMS: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(128u32);
pub const FOS_ALLOWMULTISELECT: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(512u32);
pub const FOS_CREATEPROMPT: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(8192u32);
pub const FOS_DEFAULTNOMINIMODE: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(536870912u32);
pub const FOS_DONTADDTORECENT: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(33554432u32);
pub const FOS_FILEMUSTEXIST: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(4096u32);
pub const FOS_FORCEFILESYSTEM: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(64u32);
pub const FOS_FORCEPREVIEWPANEON: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(1073741824u32);
pub const FOS_FORCESHOWHIDDEN: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(268435456u32);
pub const FOS_HIDEMRUPLACES: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(131072u32);
pub const FOS_HIDEPINNEDPLACES: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(262144u32);
pub const FOS_NOCHANGEDIR: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(8u32);
pub const FOS_NODEREFERENCELINKS: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(1048576u32);
pub const FOS_NOREADONLYRETURN: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(32768u32);
pub const FOS_NOTESTFILECREATE: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(65536u32);
pub const FOS_NOVALIDATE: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(256u32);
pub const FOS_OKBUTTONNEEDSINTERACTION: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(2097152u32);
pub const FOS_OVERWRITEPROMPT: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(2u32);
pub const FOS_PATHMUSTEXIST: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(2048u32);
pub const FOS_PICKFOLDERS: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(32u32);
pub const FOS_SHAREAWARE: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(16384u32);
pub const FOS_STRICTFILETYPES: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(4u32);
pub const FOS_SUPPORTSTREAMABLEITEMS: FILEOPENDIALOGOPTIONS = FILEOPENDIALOGOPTIONS(2147483648u32);
pub const FO_COPY: u32 = 2u32;
pub const FO_DELETE: u32 = 3u32;
pub const FO_MOVE: u32 = 1u32;
pub const FO_RENAME: u32 = 4u32;
pub const FP_ABOVE: FLYOUT_PLACEMENT = FLYOUT_PLACEMENT(1i32);
pub const FP_BELOW: FLYOUT_PLACEMENT = FLYOUT_PLACEMENT(2i32);
pub const FP_DEFAULT: FLYOUT_PLACEMENT = FLYOUT_PLACEMENT(0i32);
pub const FP_LEFT: FLYOUT_PLACEMENT = FLYOUT_PLACEMENT(3i32);
pub const FP_RIGHT: FLYOUT_PLACEMENT = FLYOUT_PLACEMENT(4i32);
pub const FSCopyHandler: windows_core::GUID = windows_core::GUID::from_u128(0xd197380a_0a79_4dc8_a033_ed882c2fa14b);
pub const FTA_AlwaysUnsafe: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(131072i32);
pub const FTA_AlwaysUseDirectInvoke: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(4194304i32);
pub const FTA_Exclude: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(1i32);
pub const FTA_HasExtension: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(4i32);
pub const FTA_NoDDE: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(8192i32);
pub const FTA_NoEdit: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(8i32);
pub const FTA_NoEditDesc: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(256i32);
pub const FTA_NoEditDflt: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(1024i32);
pub const FTA_NoEditIcon: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(512i32);
pub const FTA_NoEditMIME: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(32768i32);
pub const FTA_NoEditVerb: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(64i32);
pub const FTA_NoEditVerbCmd: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(2048i32);
pub const FTA_NoEditVerbExe: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(4096i32);
pub const FTA_NoNewVerb: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(32i32);
pub const FTA_NoRecentDocs: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(1048576i32);
pub const FTA_NoRemove: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(16i32);
pub const FTA_NoRemoveVerb: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(128i32);
pub const FTA_None: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(0i32);
pub const FTA_OpenIsSafe: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(65536i32);
pub const FTA_SafeForElevation: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(2097152i32);
pub const FTA_Show: FILETYPEATTRIBUTEFLAGS = FILETYPEATTRIBUTEFLAGS(2i32);
pub const FUT_EDITING: FILE_USAGE_TYPE = FILE_USAGE_TYPE(1i32);
pub const FUT_GENERIC: FILE_USAGE_TYPE = FILE_USAGE_TYPE(2i32);
pub const FUT_PLAYING: FILE_USAGE_TYPE = FILE_USAGE_TYPE(0i32);
pub const FVM_AUTO: FOLDERVIEWMODE = FOLDERVIEWMODE(-1i32);
pub const FVM_CONTENT: FOLDERVIEWMODE = FOLDERVIEWMODE(8i32);
pub const FVM_DETAILS: FOLDERVIEWMODE = FOLDERVIEWMODE(4i32);
pub const FVM_FIRST: FOLDERVIEWMODE = FOLDERVIEWMODE(1i32);
pub const FVM_ICON: FOLDERVIEWMODE = FOLDERVIEWMODE(1i32);
pub const FVM_LAST: FOLDERVIEWMODE = FOLDERVIEWMODE(8i32);
pub const FVM_LIST: FOLDERVIEWMODE = FOLDERVIEWMODE(3i32);
pub const FVM_SMALLICON: FOLDERVIEWMODE = FOLDERVIEWMODE(2i32);
pub const FVM_THUMBNAIL: FOLDERVIEWMODE = FOLDERVIEWMODE(5i32);
pub const FVM_THUMBSTRIP: FOLDERVIEWMODE = FOLDERVIEWMODE(7i32);
pub const FVM_TILE: FOLDERVIEWMODE = FOLDERVIEWMODE(6i32);
pub const FVO_CUSTOMORDERING: FOLDERVIEWOPTIONS = FOLDERVIEWOPTIONS(4i32);
pub const FVO_CUSTOMPOSITION: FOLDERVIEWOPTIONS = FOLDERVIEWOPTIONS(2i32);
pub const FVO_DEFAULT: FOLDERVIEWOPTIONS = FOLDERVIEWOPTIONS(0i32);
pub const FVO_NOANIMATIONS: FOLDERVIEWOPTIONS = FOLDERVIEWOPTIONS(16i32);
pub const FVO_NOSCROLLTIPS: FOLDERVIEWOPTIONS = FOLDERVIEWOPTIONS(32i32);
pub const FVO_SUPPORTHYPERLINKS: FOLDERVIEWOPTIONS = FOLDERVIEWOPTIONS(8i32);
pub const FVO_VISTALAYOUT: FOLDERVIEWOPTIONS = FOLDERVIEWOPTIONS(1i32);
pub const FVSIF_CANVIEWIT: u32 = 1073741824u32;
pub const FVSIF_NEWFAILED: u32 = 134217728u32;
pub const FVSIF_NEWFILE: u32 = 2147483648u32;
pub const FVSIF_PINNED: u32 = 2u32;
pub const FVSIF_RECT: u32 = 1u32;
pub const FVST_EMPTYTEXT: FVTEXTTYPE = FVTEXTTYPE(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct FVTEXTTYPE(pub i32);
pub const FWF_ABBREVIATEDNAMES: FOLDERFLAGS = FOLDERFLAGS(2i32);
pub const FWF_ALIGNLEFT: FOLDERFLAGS = FOLDERFLAGS(2048i32);
pub const FWF_ALLOWRTLREADING: FOLDERFLAGS = FOLDERFLAGS(-2147483648i32);
pub const FWF_AUTOARRANGE: FOLDERFLAGS = FOLDERFLAGS(1i32);
pub const FWF_AUTOCHECKSELECT: FOLDERFLAGS = FOLDERFLAGS(134217728i32);
pub const FWF_BESTFITWINDOW: FOLDERFLAGS = FOLDERFLAGS(16i32);
pub const FWF_CHECKSELECT: FOLDERFLAGS = FOLDERFLAGS(262144i32);
pub const FWF_DESKTOP: FOLDERFLAGS = FOLDERFLAGS(32i32);
pub const FWF_EXTENDEDTILES: FOLDERFLAGS = FOLDERFLAGS(33554432i32);
pub const FWF_FULLROWSELECT: FOLDERFLAGS = FOLDERFLAGS(2097152i32);
pub const FWF_HIDEFILENAMES: FOLDERFLAGS = FOLDERFLAGS(131072i32);
pub const FWF_NOBROWSERVIEWSTATE: FOLDERFLAGS = FOLDERFLAGS(268435456i32);
pub const FWF_NOCLIENTEDGE: FOLDERFLAGS = FOLDERFLAGS(512i32);
pub const FWF_NOCOLUMNHEADER: FOLDERFLAGS = FOLDERFLAGS(8388608i32);
pub const FWF_NOENUMREFRESH: FOLDERFLAGS = FOLDERFLAGS(524288i32);
pub const FWF_NOFILTERS: FOLDERFLAGS = FOLDERFLAGS(4194304i32);
pub const FWF_NOGROUPING: FOLDERFLAGS = FOLDERFLAGS(1048576i32);
pub const FWF_NOHEADERINALLVIEWS: FOLDERFLAGS = FOLDERFLAGS(16777216i32);
pub const FWF_NOICONS: FOLDERFLAGS = FOLDERFLAGS(4096i32);
pub const FWF_NONE: FOLDERFLAGS = FOLDERFLAGS(0i32);
pub const FWF_NOSCROLL: FOLDERFLAGS = FOLDERFLAGS(1024i32);
pub const FWF_NOSUBFOLDERS: FOLDERFLAGS = FOLDERFLAGS(128i32);
pub const FWF_NOVISIBLE: FOLDERFLAGS = FOLDERFLAGS(16384i32);
pub const FWF_NOWEBVIEW: FOLDERFLAGS = FOLDERFLAGS(65536i32);
pub const FWF_OWNERDATA: FOLDERFLAGS = FOLDERFLAGS(8i32);
pub const FWF_SHOWSELALWAYS: FOLDERFLAGS = FOLDERFLAGS(8192i32);
pub const FWF_SINGLECLICKACTIVATE: FOLDERFLAGS = FOLDERFLAGS(32768i32);
pub const FWF_SINGLESEL: FOLDERFLAGS = FOLDERFLAGS(64i32);
pub const FWF_SNAPTOGRID: FOLDERFLAGS = FOLDERFLAGS(4i32);
pub const FWF_SUBSETGROUPS: FOLDERFLAGS = FOLDERFLAGS(536870912i32);
pub const FWF_TRANSPARENT: FOLDERFLAGS = FOLDERFLAGS(256i32);
pub const FWF_TRICHECKSELECT: FOLDERFLAGS = FOLDERFLAGS(67108864i32);
pub const FWF_USESEARCHFOLDER: FOLDERFLAGS = FOLDERFLAGS(1073741824i32);
pub const FileOpenDialog: windows_core::GUID = windows_core::GUID::from_u128(0xdc1c5a9c_e88a_4dde_a5a1_60f82a20aef7);
pub const FileOperation: windows_core::GUID = windows_core::GUID::from_u128(0x3ad05575_8857_4850_9277_11b85bdb8e09);
pub const FileSaveDialog: windows_core::GUID = windows_core::GUID::from_u128(0xc0b4e2f3_ba21_4773_8dba_335ec946eb8b);
pub const FileSearchBand: windows_core::GUID = windows_core::GUID::from_u128(0xc4ee31f3_4768_11d2_be5c_00a0c9a83da1);
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(Folder, Folder_Vtbl, 0xbbcbde60_c3ff_11ce_8350_444553540000);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for Folder {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(Folder, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl Folder {
    pub unsafe fn Title(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Title)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Application)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Parent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn ParentFolder(&self) -> windows_core::Result<Folder> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ParentFolder)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Items(&self) -> windows_core::Result<FolderItems> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Items)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn ParseName(&self, bname: &windows_core::BSTR) -> windows_core::Result<FolderItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ParseName)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bname), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn NewFolder(&self, bname: &windows_core::BSTR, voptions: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).NewFolder)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bname), core::mem::transmute_copy(voptions)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn MoveHere(&self, vitem: &super::super::System::Variant::VARIANT, voptions: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MoveHere)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(vitem), core::mem::transmute_copy(voptions)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn CopyHere(&self, vitem: &super::super::System::Variant::VARIANT, voptions: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CopyHere)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(vitem), core::mem::transmute_copy(voptions)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn GetDetailsOf(&self, vitem: &super::super::System::Variant::VARIANT, icolumn: i32) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDetailsOf)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(vitem), icolumn, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct Folder_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub Title: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Application: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Parent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ParentFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Items: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ParseName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub NewFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    NewFolder: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub MoveHere: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    MoveHere: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub CopyHere: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    CopyHere: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub GetDetailsOf: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, i32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    GetDetailsOf: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait Folder_Impl: super::super::System::Com::IDispatch_Impl {
    fn Title(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn ParentFolder(&self) -> windows_core::Result<Folder>;
    fn Items(&self) -> windows_core::Result<FolderItems>;
    fn ParseName(&self, bname: &windows_core::BSTR) -> windows_core::Result<FolderItem>;
    fn NewFolder(&self, bname: &windows_core::BSTR, voptions: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn MoveHere(&self, vitem: &super::super::System::Variant::VARIANT, voptions: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn CopyHere(&self, vitem: &super::super::System::Variant::VARIANT, voptions: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn GetDetailsOf(&self, vitem: &super::super::System::Variant::VARIANT, icolumn: i32) -> windows_core::Result<windows_core::BSTR>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl Folder_Vtbl {
    pub const fn new<Identity: Folder_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Title<Identity: Folder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder_Impl::Title(this) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Application<Identity: Folder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder_Impl::Application(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Parent<Identity: Folder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder_Impl::Parent(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ParentFolder<Identity: Folder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder_Impl::ParentFolder(this) {
                    Ok(ok__) => {
                        ppsf.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Items<Identity: Folder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder_Impl::Items(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ParseName<Identity: Folder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bname: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder_Impl::ParseName(this, core::mem::transmute(&bname)) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn NewFolder<Identity: Folder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bname: *mut core::ffi::c_void, voptions: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                Folder_Impl::NewFolder(this, core::mem::transmute(&bname), core::mem::transmute(&voptions)).into()
            }
        }
        unsafe extern "system" fn MoveHere<Identity: Folder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vitem: super::super::System::Variant::VARIANT, voptions: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                Folder_Impl::MoveHere(this, core::mem::transmute(&vitem), core::mem::transmute(&voptions)).into()
            }
        }
        unsafe extern "system" fn CopyHere<Identity: Folder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vitem: super::super::System::Variant::VARIANT, voptions: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                Folder_Impl::CopyHere(this, core::mem::transmute(&vitem), core::mem::transmute(&voptions)).into()
            }
        }
        unsafe extern "system" fn GetDetailsOf<Identity: Folder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vitem: super::super::System::Variant::VARIANT, icolumn: i32, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder_Impl::GetDetailsOf(this, core::mem::transmute(&vitem), core::mem::transmute_copy(&icolumn)) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Title: Title::<Identity, OFFSET>,
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            ParentFolder: ParentFolder::<Identity, OFFSET>,
            Items: Items::<Identity, OFFSET>,
            ParseName: ParseName::<Identity, OFFSET>,
            NewFolder: NewFolder::<Identity, OFFSET>,
            MoveHere: MoveHere::<Identity, OFFSET>,
            CopyHere: CopyHere::<Identity, OFFSET>,
            GetDetailsOf: GetDetailsOf::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<Folder as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for Folder {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(Folder2, Folder2_Vtbl, 0xf0d2d8ef_3890_11d2_bf8b_00c04fb93661);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for Folder2 {
    type Target = Folder;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(Folder2, windows_core::IUnknown, super::super::System::Com::IDispatch, Folder);
#[cfg(feature = "Win32_System_Com")]
impl Folder2 {
    pub unsafe fn Self_(&self) -> windows_core::Result<FolderItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Self_)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn OfflineStatus(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OfflineStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Synchronize(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Synchronize)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn HaveToShowWebViewBarricade(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).HaveToShowWebViewBarricade)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DismissedWebViewBarricade(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DismissedWebViewBarricade)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct Folder2_Vtbl {
    pub base__: Folder_Vtbl,
    pub Self_: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OfflineStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub Synchronize: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub HaveToShowWebViewBarricade: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub DismissedWebViewBarricade: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait Folder2_Impl: Folder_Impl {
    fn Self_(&self) -> windows_core::Result<FolderItem>;
    fn OfflineStatus(&self) -> windows_core::Result<i32>;
    fn Synchronize(&self) -> windows_core::Result<()>;
    fn HaveToShowWebViewBarricade(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn DismissedWebViewBarricade(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl Folder2_Vtbl {
    pub const fn new<Identity: Folder2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Self_<Identity: Folder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder2_Impl::Self_(this) {
                    Ok(ok__) => {
                        ppfi.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OfflineStatus<Identity: Folder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pul: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder2_Impl::OfflineStatus(this) {
                    Ok(ok__) => {
                        pul.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Synchronize<Identity: Folder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                Folder2_Impl::Synchronize(this).into()
            }
        }
        unsafe extern "system" fn HaveToShowWebViewBarricade<Identity: Folder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbhavetoshowwebviewbarricade: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder2_Impl::HaveToShowWebViewBarricade(this) {
                    Ok(ok__) => {
                        pbhavetoshowwebviewbarricade.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DismissedWebViewBarricade<Identity: Folder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                Folder2_Impl::DismissedWebViewBarricade(this).into()
            }
        }
        Self {
            base__: Folder_Vtbl::new::<Identity, OFFSET>(),
            Self_: Self_::<Identity, OFFSET>,
            OfflineStatus: OfflineStatus::<Identity, OFFSET>,
            Synchronize: Synchronize::<Identity, OFFSET>,
            HaveToShowWebViewBarricade: HaveToShowWebViewBarricade::<Identity, OFFSET>,
            DismissedWebViewBarricade: DismissedWebViewBarricade::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<Folder2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<Folder as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for Folder2 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(Folder3, Folder3_Vtbl, 0xa7ae5f64_c4d7_4d7f_9307_4d24ee54b841);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for Folder3 {
    type Target = Folder2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(Folder3, windows_core::IUnknown, super::super::System::Com::IDispatch, Folder, Folder2);
#[cfg(feature = "Win32_System_Com")]
impl Folder3 {
    pub unsafe fn ShowWebViewBarricade(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ShowWebViewBarricade)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetShowWebViewBarricade(&self, bshowwebviewbarricade: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetShowWebViewBarricade)(windows_core::Interface::as_raw(self), bshowwebviewbarricade).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct Folder3_Vtbl {
    pub base__: Folder2_Vtbl,
    pub ShowWebViewBarricade: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetShowWebViewBarricade: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait Folder3_Impl: Folder2_Impl {
    fn ShowWebViewBarricade(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetShowWebViewBarricade(&self, bshowwebviewbarricade: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl Folder3_Vtbl {
    pub const fn new<Identity: Folder3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ShowWebViewBarricade<Identity: Folder3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbshowwebviewbarricade: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match Folder3_Impl::ShowWebViewBarricade(this) {
                    Ok(ok__) => {
                        pbshowwebviewbarricade.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetShowWebViewBarricade<Identity: Folder3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bshowwebviewbarricade: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                Folder3_Impl::SetShowWebViewBarricade(this, core::mem::transmute_copy(&bshowwebviewbarricade)).into()
            }
        }
        Self {
            base__: Folder2_Vtbl::new::<Identity, OFFSET>(),
            ShowWebViewBarricade: ShowWebViewBarricade::<Identity, OFFSET>,
            SetShowWebViewBarricade: SetShowWebViewBarricade::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<Folder3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<Folder as windows_core::Interface>::IID || iid == &<Folder2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for Folder3 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(FolderItem, FolderItem_Vtbl, 0xfac32c80_cbe4_11ce_8350_444553540000);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for FolderItem {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(FolderItem, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl FolderItem {
    pub unsafe fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Application)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Parent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Name(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Name)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SetName(&self, bs: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetName)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bs)).ok() }
    }
    pub unsafe fn Path(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Path)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetLink(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLink)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetFolder(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFolder)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn IsLink(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsLink)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsFolder(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsFolder)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsFileSystem(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsFileSystem)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsBrowsable(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsBrowsable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ModifyDate(&self) -> windows_core::Result<f64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ModifyDate)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetModifyDate(&self, dt: f64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetModifyDate)(windows_core::Interface::as_raw(self), dt).ok() }
    }
    pub unsafe fn Size(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Size)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Type(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Type)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn Verbs(&self) -> windows_core::Result<FolderItemVerbs> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Verbs)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn InvokeVerb(&self, vverb: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InvokeVerb)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(vverb)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct FolderItem_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub Application: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Parent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Name: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Path: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetLink: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsLink: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub IsFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub IsFileSystem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub IsBrowsable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ModifyDate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut f64) -> windows_core::HRESULT,
    pub SetModifyDate: unsafe extern "system" fn(*mut core::ffi::c_void, f64) -> windows_core::HRESULT,
    pub Size: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub Type: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Verbs: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub InvokeVerb: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    InvokeVerb: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait FolderItem_Impl: super::super::System::Com::IDispatch_Impl {
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetName(&self, bs: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Path(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetLink(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn GetFolder(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn IsLink(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn IsFolder(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn IsFileSystem(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn IsBrowsable(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn ModifyDate(&self) -> windows_core::Result<f64>;
    fn SetModifyDate(&self, dt: f64) -> windows_core::Result<()>;
    fn Size(&self) -> windows_core::Result<i32>;
    fn Type(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Verbs(&self) -> windows_core::Result<FolderItemVerbs>;
    fn InvokeVerb(&self, vverb: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl FolderItem_Vtbl {
    pub const fn new<Identity: FolderItem_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Application<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::Application(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Parent<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::Parent(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Name<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::Name(this) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetName<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                FolderItem_Impl::SetName(this, core::mem::transmute(&bs)).into()
            }
        }
        unsafe extern "system" fn Path<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::Path(this) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLink<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::GetLink(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFolder<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::GetFolder(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsLink<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pb: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::IsLink(this) {
                    Ok(ok__) => {
                        pb.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsFolder<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pb: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::IsFolder(this) {
                    Ok(ok__) => {
                        pb.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsFileSystem<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pb: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::IsFileSystem(this) {
                    Ok(ok__) => {
                        pb.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsBrowsable<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pb: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::IsBrowsable(this) {
                    Ok(ok__) => {
                        pb.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ModifyDate<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdt: *mut f64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::ModifyDate(this) {
                    Ok(ok__) => {
                        pdt.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetModifyDate<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dt: f64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                FolderItem_Impl::SetModifyDate(this, core::mem::transmute_copy(&dt)).into()
            }
        }
        unsafe extern "system" fn Size<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pul: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::Size(this) {
                    Ok(ok__) => {
                        pul.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Type<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::Type(this) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Verbs<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfic: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem_Impl::Verbs(this) {
                    Ok(ok__) => {
                        ppfic.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn InvokeVerb<Identity: FolderItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vverb: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                FolderItem_Impl::InvokeVerb(this, core::mem::transmute(&vverb)).into()
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Name: Name::<Identity, OFFSET>,
            SetName: SetName::<Identity, OFFSET>,
            Path: Path::<Identity, OFFSET>,
            GetLink: GetLink::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            IsLink: IsLink::<Identity, OFFSET>,
            IsFolder: IsFolder::<Identity, OFFSET>,
            IsFileSystem: IsFileSystem::<Identity, OFFSET>,
            IsBrowsable: IsBrowsable::<Identity, OFFSET>,
            ModifyDate: ModifyDate::<Identity, OFFSET>,
            SetModifyDate: SetModifyDate::<Identity, OFFSET>,
            Size: Size::<Identity, OFFSET>,
            Type: Type::<Identity, OFFSET>,
            Verbs: Verbs::<Identity, OFFSET>,
            InvokeVerb: InvokeVerb::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItem as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for FolderItem {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(FolderItem2, FolderItem2_Vtbl, 0xedc817aa_92b8_11d1_b075_00c04fc33aa5);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for FolderItem2 {
    type Target = FolderItem;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(FolderItem2, windows_core::IUnknown, super::super::System::Com::IDispatch, FolderItem);
#[cfg(feature = "Win32_System_Com")]
impl FolderItem2 {
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn InvokeVerbEx(&self, vverb: &super::super::System::Variant::VARIANT, vargs: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InvokeVerbEx)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(vverb), core::mem::transmute_copy(vargs)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn ExtendedProperty(&self, bstrpropname: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ExtendedProperty)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrpropname), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct FolderItem2_Vtbl {
    pub base__: FolderItem_Vtbl,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub InvokeVerbEx: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    InvokeVerbEx: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub ExtendedProperty: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    ExtendedProperty: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait FolderItem2_Impl: FolderItem_Impl {
    fn InvokeVerbEx(&self, vverb: &super::super::System::Variant::VARIANT, vargs: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn ExtendedProperty(&self, bstrpropname: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl FolderItem2_Vtbl {
    pub const fn new<Identity: FolderItem2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn InvokeVerbEx<Identity: FolderItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vverb: super::super::System::Variant::VARIANT, vargs: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                FolderItem2_Impl::InvokeVerbEx(this, core::mem::transmute(&vverb), core::mem::transmute(&vargs)).into()
            }
        }
        unsafe extern "system" fn ExtendedProperty<Identity: FolderItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrpropname: *mut core::ffi::c_void, pvret: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItem2_Impl::ExtendedProperty(this, core::mem::transmute(&bstrpropname)) {
                    Ok(ok__) => {
                        pvret.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: FolderItem_Vtbl::new::<Identity, OFFSET>(),
            InvokeVerbEx: InvokeVerbEx::<Identity, OFFSET>,
            ExtendedProperty: ExtendedProperty::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItem2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<FolderItem as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for FolderItem2 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(FolderItemVerb, FolderItemVerb_Vtbl, 0x08ec3e00_50b0_11cf_960c_0080c7f4ee85);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for FolderItemVerb {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(FolderItemVerb, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl FolderItemVerb {
    pub unsafe fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Application)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Parent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Name(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Name)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn DoIt(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DoIt)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct FolderItemVerb_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub Application: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Parent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Name: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DoIt: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait FolderItemVerb_Impl: super::super::System::Com::IDispatch_Impl {
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn DoIt(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl FolderItemVerb_Vtbl {
    pub const fn new<Identity: FolderItemVerb_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Application<Identity: FolderItemVerb_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItemVerb_Impl::Application(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Parent<Identity: FolderItemVerb_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItemVerb_Impl::Parent(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Name<Identity: FolderItemVerb_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItemVerb_Impl::Name(this) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DoIt<Identity: FolderItemVerb_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                FolderItemVerb_Impl::DoIt(this).into()
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Name: Name::<Identity, OFFSET>,
            DoIt: DoIt::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItemVerb as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for FolderItemVerb {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(FolderItemVerbs, FolderItemVerbs_Vtbl, 0x1f8352c0_50b0_11cf_960c_0080c7f4ee85);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for FolderItemVerbs {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(FolderItemVerbs, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl FolderItemVerbs {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Application)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Parent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Item(&self, index: &super::super::System::Variant::VARIANT) -> windows_core::Result<FolderItemVerb> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Item)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(index), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<windows_core::IUnknown> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct FolderItemVerbs_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub Application: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Parent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Item: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Item: usize,
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait FolderItemVerbs_Impl: super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Item(&self, index: &super::super::System::Variant::VARIANT) -> windows_core::Result<FolderItemVerb>;
    fn _NewEnum(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl FolderItemVerbs_Vtbl {
    pub const fn new<Identity: FolderItemVerbs_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Count<Identity: FolderItemVerbs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcount: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItemVerbs_Impl::Count(this) {
                    Ok(ok__) => {
                        plcount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Application<Identity: FolderItemVerbs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItemVerbs_Impl::Application(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Parent<Identity: FolderItemVerbs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItemVerbs_Impl::Parent(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Item<Identity: FolderItemVerbs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: super::super::System::Variant::VARIANT, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItemVerbs_Impl::Item(this, core::mem::transmute(&index)) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: FolderItemVerbs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItemVerbs_Impl::_NewEnum(this) {
                    Ok(ok__) => {
                        ppunk.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Item: Item::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItemVerbs as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for FolderItemVerbs {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(FolderItems, FolderItems_Vtbl, 0x744129e0_cbe5_11ce_8350_444553540000);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for FolderItems {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(FolderItems, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl FolderItems {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Application)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Parent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Item(&self, index: &super::super::System::Variant::VARIANT) -> windows_core::Result<FolderItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Item)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(index), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<windows_core::IUnknown> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct FolderItems_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub Application: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Parent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Item: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Item: usize,
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait FolderItems_Impl: super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Item(&self, index: &super::super::System::Variant::VARIANT) -> windows_core::Result<FolderItem>;
    fn _NewEnum(&self) -> windows_core::Result<windows_core::IUnknown>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl FolderItems_Vtbl {
    pub const fn new<Identity: FolderItems_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Count<Identity: FolderItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcount: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItems_Impl::Count(this) {
                    Ok(ok__) => {
                        plcount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Application<Identity: FolderItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItems_Impl::Application(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Parent<Identity: FolderItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItems_Impl::Parent(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Item<Identity: FolderItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: super::super::System::Variant::VARIANT, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItems_Impl::Item(this, core::mem::transmute(&index)) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: FolderItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItems_Impl::_NewEnum(this) {
                    Ok(ok__) => {
                        ppunk.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Item: Item::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItems as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for FolderItems {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(FolderItems2, FolderItems2_Vtbl, 0xc94f0ad0_f363_11d2_a327_00c04f8eec7f);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for FolderItems2 {
    type Target = FolderItems;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(FolderItems2, windows_core::IUnknown, super::super::System::Com::IDispatch, FolderItems);
#[cfg(feature = "Win32_System_Com")]
impl FolderItems2 {
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn InvokeVerbEx(&self, vverb: &super::super::System::Variant::VARIANT, vargs: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InvokeVerbEx)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(vverb), core::mem::transmute_copy(vargs)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct FolderItems2_Vtbl {
    pub base__: FolderItems_Vtbl,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub InvokeVerbEx: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    InvokeVerbEx: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait FolderItems2_Impl: FolderItems_Impl {
    fn InvokeVerbEx(&self, vverb: &super::super::System::Variant::VARIANT, vargs: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl FolderItems2_Vtbl {
    pub const fn new<Identity: FolderItems2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn InvokeVerbEx<Identity: FolderItems2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vverb: super::super::System::Variant::VARIANT, vargs: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                FolderItems2_Impl::InvokeVerbEx(this, core::mem::transmute(&vverb), core::mem::transmute(&vargs)).into()
            }
        }
        Self { base__: FolderItems_Vtbl::new::<Identity, OFFSET>(), InvokeVerbEx: InvokeVerbEx::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItems2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<FolderItems as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for FolderItems2 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(FolderItems3, FolderItems3_Vtbl, 0xeaa7c309_bbec_49d5_821d_64d966cb667f);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for FolderItems3 {
    type Target = FolderItems2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(FolderItems3, windows_core::IUnknown, super::super::System::Com::IDispatch, FolderItems, FolderItems2);
#[cfg(feature = "Win32_System_Com")]
impl FolderItems3 {
    pub unsafe fn Filter(&self, grfflags: i32, bstrfilespec: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Filter)(windows_core::Interface::as_raw(self), grfflags, core::mem::transmute_copy(bstrfilespec)).ok() }
    }
    pub unsafe fn Verbs(&self) -> windows_core::Result<FolderItemVerbs> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Verbs)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct FolderItems3_Vtbl {
    pub base__: FolderItems2_Vtbl,
    pub Filter: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Verbs: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait FolderItems3_Impl: FolderItems2_Impl {
    fn Filter(&self, grfflags: i32, bstrfilespec: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Verbs(&self) -> windows_core::Result<FolderItemVerbs>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl FolderItems3_Vtbl {
    pub const fn new<Identity: FolderItems3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Filter<Identity: FolderItems3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfflags: i32, bstrfilespec: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                FolderItems3_Impl::Filter(this, core::mem::transmute_copy(&grfflags), core::mem::transmute(&bstrfilespec)).into()
            }
        }
        unsafe extern "system" fn Verbs<Identity: FolderItems3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfic: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match FolderItems3_Impl::Verbs(this) {
                    Ok(ok__) => {
                        ppfic.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: FolderItems2_Vtbl::new::<Identity, OFFSET>(), Filter: Filter::<Identity, OFFSET>, Verbs: Verbs::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<FolderItems3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<FolderItems as windows_core::Interface>::IID || iid == &<FolderItems2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for FolderItems3 {}
pub const FolderViewHost: windows_core::GUID = windows_core::GUID::from_u128(0x20b1cb23_6968_4eb9_b7d4_a66d00d07cee);
pub const FrameworkInputPane: windows_core::GUID = windows_core::GUID::from_u128(0xd5120aa3_46ba_44c5_822d_ca8092c1fc72);
pub const FreeSpaceCategorizer: windows_core::GUID = windows_core::GUID::from_u128(0xb5607793_24ac_44c7_82e2_831726aa6cb7);
pub const GADOF_DIRTY: u32 = 1u32;
pub const GCS_HELPTEXT: u32 = 5u32;
pub const GCS_HELPTEXTA: u32 = 1u32;
pub const GCS_HELPTEXTW: u32 = 5u32;
pub const GCS_UNICODE: u32 = 4u32;
pub const GCS_VALIDATE: u32 = 6u32;
pub const GCS_VALIDATEA: u32 = 2u32;
pub const GCS_VALIDATEW: u32 = 6u32;
pub const GCS_VERB: u32 = 4u32;
pub const GCS_VERBA: u32 = 0u32;
pub const GCS_VERBICONW: u32 = 20u32;
pub const GCS_VERBW: u32 = 4u32;
pub const GCT_INVALID: u32 = 0u32;
pub const GCT_LFNCHAR: u32 = 1u32;
pub const GCT_SEPARATOR: u32 = 8u32;
pub const GCT_SHORTCHAR: u32 = 2u32;
pub const GCT_WILD: u32 = 4u32;
pub const GETPROPS_NONE: u32 = 0u32;
pub const GIL_ASYNC: u32 = 32u32;
pub const GIL_CHECKSHIELD: u32 = 512u32;
pub const GIL_DEFAULTICON: u32 = 64u32;
pub const GIL_DONTCACHE: u32 = 16u32;
pub const GIL_FORCENOSHIELD: u32 = 1024u32;
pub const GIL_FORSHELL: u32 = 2u32;
pub const GIL_FORSHORTCUT: u32 = 128u32;
pub const GIL_NOTFILENAME: u32 = 8u32;
pub const GIL_OPENICON: u32 = 1u32;
pub const GIL_PERCLASS: u32 = 4u32;
pub const GIL_PERINSTANCE: u32 = 2u32;
pub const GIL_SHIELD: u32 = 512u32;
pub const GIL_SIMULATEDOC: u32 = 1u32;
pub const GLOBALCOUNTER_APPLICATION_DESTINATIONS: SHGLOBALCOUNTER = SHGLOBALCOUNTER(12i32);
pub const GLOBALCOUNTER_APPROVEDSITES: SHGLOBALCOUNTER = SHGLOBALCOUNTER(4i32);
pub const GLOBALCOUNTER_APPSFOLDER_FILETYPEASSOCIATION_COUNTER: SHGLOBALCOUNTER = SHGLOBALCOUNTER(55i32);
pub const GLOBALCOUNTER_APP_ITEMS_STATE_STORE_CACHE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(53i32);
pub const GLOBALCOUNTER_ASSOCCHANGED: SHGLOBALCOUNTER = SHGLOBALCOUNTER(52i32);
pub const GLOBALCOUNTER_BANNERS_DATAMODEL_CACHE_MACHINEWIDE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(58i32);
pub const GLOBALCOUNTER_BITBUCKETNUMDELETERS: SHGLOBALCOUNTER = SHGLOBALCOUNTER(14i32);
pub const GLOBALCOUNTER_COMMONPLACES_LIST_CACHE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(50i32);
pub const GLOBALCOUNTER_FOLDERDEFINITION_CACHE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(49i32);
pub const GLOBALCOUNTER_FOLDERSETTINGSCHANGE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(2i32);
pub const GLOBALCOUNTER_IEONLY_SESSIONS: SHGLOBALCOUNTER = SHGLOBALCOUNTER(11i32);
pub const GLOBALCOUNTER_IESESSIONS: SHGLOBALCOUNTER = SHGLOBALCOUNTER(10i32);
pub const GLOBALCOUNTER_INTERNETTOOLBAR_LAYOUT: SHGLOBALCOUNTER = SHGLOBALCOUNTER(48i32);
pub const GLOBALCOUNTER_MAXIMUMVALUE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(59i32);
pub const GLOBALCOUNTER_OVERLAYMANAGER: SHGLOBALCOUNTER = SHGLOBALCOUNTER(8i32);
pub const GLOBALCOUNTER_PRIVATE_PROFILE_CACHE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(47i32);
pub const GLOBALCOUNTER_PRIVATE_PROFILE_CACHE_MACHINEWIDE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(51i32);
pub const GLOBALCOUNTER_QUERYASSOCIATIONS: SHGLOBALCOUNTER = SHGLOBALCOUNTER(9i32);
pub const GLOBALCOUNTER_RATINGS: SHGLOBALCOUNTER = SHGLOBALCOUNTER(3i32);
pub const GLOBALCOUNTER_RATINGS_STATECOUNTER: SHGLOBALCOUNTER = SHGLOBALCOUNTER(46i32);
pub const GLOBALCOUNTER_RECYCLEBINCORRUPTED: SHGLOBALCOUNTER = SHGLOBALCOUNTER(45i32);
pub const GLOBALCOUNTER_RECYCLEBINENUM: SHGLOBALCOUNTER = SHGLOBALCOUNTER(44i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_A: SHGLOBALCOUNTER = SHGLOBALCOUNTER(16i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_B: SHGLOBALCOUNTER = SHGLOBALCOUNTER(17i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_C: SHGLOBALCOUNTER = SHGLOBALCOUNTER(18i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_D: SHGLOBALCOUNTER = SHGLOBALCOUNTER(19i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_E: SHGLOBALCOUNTER = SHGLOBALCOUNTER(20i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_F: SHGLOBALCOUNTER = SHGLOBALCOUNTER(21i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_G: SHGLOBALCOUNTER = SHGLOBALCOUNTER(22i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_H: SHGLOBALCOUNTER = SHGLOBALCOUNTER(23i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_I: SHGLOBALCOUNTER = SHGLOBALCOUNTER(24i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_J: SHGLOBALCOUNTER = SHGLOBALCOUNTER(25i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_K: SHGLOBALCOUNTER = SHGLOBALCOUNTER(26i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_L: SHGLOBALCOUNTER = SHGLOBALCOUNTER(27i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_M: SHGLOBALCOUNTER = SHGLOBALCOUNTER(28i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_N: SHGLOBALCOUNTER = SHGLOBALCOUNTER(29i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_O: SHGLOBALCOUNTER = SHGLOBALCOUNTER(30i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_P: SHGLOBALCOUNTER = SHGLOBALCOUNTER(31i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Q: SHGLOBALCOUNTER = SHGLOBALCOUNTER(32i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_R: SHGLOBALCOUNTER = SHGLOBALCOUNTER(33i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_S: SHGLOBALCOUNTER = SHGLOBALCOUNTER(34i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_T: SHGLOBALCOUNTER = SHGLOBALCOUNTER(35i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_U: SHGLOBALCOUNTER = SHGLOBALCOUNTER(36i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_V: SHGLOBALCOUNTER = SHGLOBALCOUNTER(37i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_W: SHGLOBALCOUNTER = SHGLOBALCOUNTER(38i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_X: SHGLOBALCOUNTER = SHGLOBALCOUNTER(39i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Y: SHGLOBALCOUNTER = SHGLOBALCOUNTER(40i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_DRIVE_Z: SHGLOBALCOUNTER = SHGLOBALCOUNTER(41i32);
pub const GLOBALCOUNTER_RECYCLEDIRTYCOUNT_SHARES: SHGLOBALCOUNTER = SHGLOBALCOUNTER(15i32);
pub const GLOBALCOUNTER_RESTRICTIONS: SHGLOBALCOUNTER = SHGLOBALCOUNTER(5i32);
pub const GLOBALCOUNTER_SEARCHMANAGER: SHGLOBALCOUNTER = SHGLOBALCOUNTER(0i32);
pub const GLOBALCOUNTER_SEARCHOPTIONS: SHGLOBALCOUNTER = SHGLOBALCOUNTER(1i32);
pub const GLOBALCOUNTER_SETTINGSYNC_ENABLED: SHGLOBALCOUNTER = SHGLOBALCOUNTER(54i32);
pub const GLOBALCOUNTER_SHELLSETTINGSCHANGED: SHGLOBALCOUNTER = SHGLOBALCOUNTER(6i32);
pub const GLOBALCOUNTER_SYNC_ENGINE_INFORMATION_CACHE_MACHINEWIDE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(57i32);
pub const GLOBALCOUNTER_SYSTEMPIDLCHANGE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(7i32);
pub const GLOBALCOUNTER_USERINFOCHANGED: SHGLOBALCOUNTER = SHGLOBALCOUNTER(56i32);
pub const GPFIDL_ALTNAME: GPFIDL_FLAGS = GPFIDL_FLAGS(1u32);
pub const GPFIDL_DEFAULT: GPFIDL_FLAGS = GPFIDL_FLAGS(0u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct GPFIDL_FLAGS(pub u32);
pub const GPFIDL_UNCPRINTER: GPFIDL_FLAGS = GPFIDL_FLAGS(2u32);
pub const GenericCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0x25cbb996_92ed_457e_b28c_4774084bd562);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct HDROP(pub *mut core::ffi::c_void);
impl HDROP {
    pub fn is_invalid(&self) -> bool {
        self.0 == -1 as _ || self.0 == 0 as _
    }
}
impl Default for HDROP {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct HELPINFO {
    pub cbSize: u32,
    pub iContextType: HELP_INFO_TYPE,
    pub iCtrlId: i32,
    pub hItemHandle: super::super::Foundation::HANDLE,
    pub dwContextId: usize,
    pub MousePos: super::super::Foundation::POINT,
}
pub const HELPINFO_MENUITEM: HELP_INFO_TYPE = HELP_INFO_TYPE(2i32);
pub const HELPINFO_WINDOW: HELP_INFO_TYPE = HELP_INFO_TYPE(1i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct HELPWININFOA {
    pub wStructSize: i32,
    pub x: i32,
    pub y: i32,
    pub dx: i32,
    pub dy: i32,
    pub wMax: i32,
    pub rgchMember: [i8; 2],
}
impl Default for HELPWININFOA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct HELPWININFOW {
    pub wStructSize: i32,
    pub x: i32,
    pub y: i32,
    pub dx: i32,
    pub dy: i32,
    pub wMax: i32,
    pub rgchMember: [u16; 2],
}
impl Default for HELPWININFOW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HELP_INFO_TYPE(pub i32);
pub const HGSC_DOCUMENTSLIBRARY: HOMEGROUPSHARINGCHOICES = HOMEGROUPSHARINGCHOICES(8i32);
pub const HGSC_MUSICLIBRARY: HOMEGROUPSHARINGCHOICES = HOMEGROUPSHARINGCHOICES(1i32);
pub const HGSC_NONE: HOMEGROUPSHARINGCHOICES = HOMEGROUPSHARINGCHOICES(0i32);
pub const HGSC_PICTURESLIBRARY: HOMEGROUPSHARINGCHOICES = HOMEGROUPSHARINGCHOICES(2i32);
pub const HGSC_PRINTERS: HOMEGROUPSHARINGCHOICES = HOMEGROUPSHARINGCHOICES(16i32);
pub const HGSC_VIDEOSLIBRARY: HOMEGROUPSHARINGCHOICES = HOMEGROUPSHARINGCHOICES(4i32);
pub const HLBWIF_DOCWNDMAXIMIZED: HLBWIF_FLAGS = HLBWIF_FLAGS(8i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLBWIF_FLAGS(pub i32);
impl HLBWIF_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for HLBWIF_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for HLBWIF_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for HLBWIF_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for HLBWIF_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for HLBWIF_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const HLBWIF_FRAMEWNDMAXIMIZED: HLBWIF_FLAGS = HLBWIF_FLAGS(4i32);
pub const HLBWIF_HASDOCWNDINFO: HLBWIF_FLAGS = HLBWIF_FLAGS(2i32);
pub const HLBWIF_HASFRAMEWNDINFO: HLBWIF_FLAGS = HLBWIF_FLAGS(1i32);
pub const HLBWIF_HASWEBTOOLBARINFO: HLBWIF_FLAGS = HLBWIF_FLAGS(16i32);
pub const HLBWIF_WEBTOOLBARHIDDEN: HLBWIF_FLAGS = HLBWIF_FLAGS(32i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct HLBWINFO {
    pub cbSize: u32,
    pub grfHLBWIF: u32,
    pub rcFramePos: super::super::Foundation::RECT,
    pub rcDocPos: super::super::Foundation::RECT,
    pub hltbinfo: HLTBINFO,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLFNAMEF(pub i32);
impl HLFNAMEF {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for HLFNAMEF {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for HLFNAMEF {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for HLFNAMEF {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for HLFNAMEF {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for HLFNAMEF {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const HLFNAMEF_DEFAULT: HLFNAMEF = HLFNAMEF(0i32);
pub const HLFNAMEF_TRYCACHE: HLFNAMEF = HLFNAMEF(1i32);
pub const HLFNAMEF_TRYFULLTARGET: HLFNAMEF = HLFNAMEF(4i32);
pub const HLFNAMEF_TRYPRETTYTARGET: HLFNAMEF = HLFNAMEF(2i32);
pub const HLFNAMEF_TRYWIN95SHORTCUT: HLFNAMEF = HLFNAMEF(8i32);
pub const HLID_CURRENT: HLID_INFO = HLID_INFO(4294967293u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLID_INFO(pub u32);
pub const HLID_INVALID: HLID_INFO = HLID_INFO(0u32);
pub const HLID_NEXT: HLID_INFO = HLID_INFO(4294967294u32);
pub const HLID_PREVIOUS: HLID_INFO = HLID_INFO(4294967295u32);
pub const HLID_STACKBOTTOM: HLID_INFO = HLID_INFO(4294967292u32);
pub const HLID_STACKTOP: HLID_INFO = HLID_INFO(4294967291u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLINKGETREF(pub i32);
pub const HLINKGETREF_ABSOLUTE: HLINKGETREF = HLINKGETREF(1i32);
pub const HLINKGETREF_DEFAULT: HLINKGETREF = HLINKGETREF(0i32);
pub const HLINKGETREF_RELATIVE: HLINKGETREF = HLINKGETREF(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLINKMISC(pub i32);
pub const HLINKMISC_RELATIVE: HLINKMISC = HLINKMISC(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLINKSETF(pub i32);
pub const HLINKSETF_LOCATION: HLINKSETF = HLINKSETF(2i32);
pub const HLINKSETF_TARGET: HLINKSETF = HLINKSETF(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLINKWHICHMK(pub i32);
pub const HLINKWHICHMK_BASE: HLINKWHICHMK = HLINKWHICHMK(2i32);
pub const HLINKWHICHMK_CONTAINER: HLINKWHICHMK = HLINKWHICHMK(1i32);
pub const HLINK_E_FIRST: windows_core::HRESULT = windows_core::HRESULT(0x80040100_u32 as _);
pub const HLINK_S_DONTHIDE: i32 = 262400i32;
pub const HLINK_S_FIRST: windows_core::HRESULT = windows_core::HRESULT(0x40100_u32 as _);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct HLITEM {
    pub uHLID: u32,
    pub pwzFriendlyName: windows_core::PWSTR,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLNF(pub u32);
impl HLNF {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for HLNF {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for HLNF {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for HLNF {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for HLNF {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for HLNF {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const HLNF_ALLOW_AUTONAVIGATE: u32 = 536870912u32;
pub const HLNF_CALLERUNTRUSTED: u32 = 2097152u32;
pub const HLNF_CREATENOHISTORY: HLNF = HLNF(32u32);
pub const HLNF_DISABLEWINDOWRESTRICTIONS: u32 = 8388608u32;
pub const HLNF_EXTERNALNAVIGATE: u32 = 268435456u32;
pub const HLNF_INTERNALJUMP: HLNF = HLNF(1u32);
pub const HLNF_NAVIGATINGBACK: HLNF = HLNF(4u32);
pub const HLNF_NAVIGATINGFORWARD: HLNF = HLNF(8u32);
pub const HLNF_NAVIGATINGTOSTACKITEM: HLNF = HLNF(16u32);
pub const HLNF_NEWWINDOWSMANAGED: u32 = 2147483648u32;
pub const HLNF_OPENINNEWWINDOW: HLNF = HLNF(2u32);
pub const HLNF_TRUSTEDFORACTIVEX: u32 = 4194304u32;
pub const HLNF_TRUSTFIRSTDOWNLOAD: u32 = 16777216u32;
pub const HLNF_UNTRUSTEDFORDOWNLOAD: u32 = 33554432u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLQF_INFO(pub i32);
pub const HLQF_ISCURRENT: HLQF_INFO = HLQF_INFO(2i32);
pub const HLQF_ISVALID: HLQF_INFO = HLQF_INFO(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLSHORTCUTF(pub i32);
pub const HLSHORTCUTF_DEFAULT: HLSHORTCUTF = HLSHORTCUTF(0i32);
pub const HLSHORTCUTF_DONTACTUALLYCREATE: HLSHORTCUTF = HLSHORTCUTF(1i32);
pub const HLSHORTCUTF_MAYUSEEXISTINGSHORTCUT: HLSHORTCUTF = HLSHORTCUTF(8i32);
pub const HLSHORTCUTF_USEFILENAMEFROMFRIENDLYNAME: HLSHORTCUTF = HLSHORTCUTF(2i32);
pub const HLSHORTCUTF_USEUNIQUEFILENAME: HLSHORTCUTF = HLSHORTCUTF(4i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLSR(pub i32);
pub const HLSR_HISTORYFOLDER: HLSR = HLSR(2i32);
pub const HLSR_HOME: HLSR = HLSR(0i32);
pub const HLSR_SEARCHPAGE: HLSR = HLSR(1i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct HLTBINFO {
    pub uDockType: u32,
    pub rcTbPos: super::super::Foundation::RECT,
}
pub const HLTB_DOCKEDBOTTOM: HLTB_INFO = HLTB_INFO(3i32);
pub const HLTB_DOCKEDLEFT: HLTB_INFO = HLTB_INFO(0i32);
pub const HLTB_DOCKEDRIGHT: HLTB_INFO = HLTB_INFO(2i32);
pub const HLTB_DOCKEDTOP: HLTB_INFO = HLTB_INFO(1i32);
pub const HLTB_FLOATING: HLTB_INFO = HLTB_INFO(4i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLTB_INFO(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HLTRANSLATEF(pub i32);
pub const HLTRANSLATEF_DEFAULT: HLTRANSLATEF = HLTRANSLATEF(0i32);
pub const HLTRANSLATEF_DONTAPPLYDEFAULTPREFIX: HLTRANSLATEF = HLTRANSLATEF(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct HOMEGROUPSHARINGCHOICES(pub i32);
impl HOMEGROUPSHARINGCHOICES {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for HOMEGROUPSHARINGCHOICES {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for HOMEGROUPSHARINGCHOICES {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for HOMEGROUPSHARINGCHOICES {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for HOMEGROUPSHARINGCHOICES {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for HOMEGROUPSHARINGCHOICES {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const HOMEGROUP_SECURITY_GROUP: windows_core::PCWSTR = windows_core::w!("HomeUsers");
pub const HOMEGROUP_SECURITY_GROUP_MULTI: windows_core::PCWSTR = windows_core::w!("HUG");
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct HPSXA(pub *mut core::ffi::c_void);
impl HPSXA {
    pub fn is_invalid(&self) -> bool {
        self.0 == -1 as _ || self.0 == 0 as _
    }
}
impl windows_core::Free for HPSXA {
    #[inline]
    unsafe fn free(&mut self) {
        if !self.is_invalid() {
            windows_core::link!("shell32.dll" "system" fn SHDestroyPropSheetExtArray(hpsxa : *mut core::ffi::c_void));
            unsafe {
                SHDestroyPropSheetExtArray(self.0);
            }
        }
    }
}
impl Default for HPSXA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const HideInputPaneAnimationCoordinator: windows_core::GUID = windows_core::GUID::from_u128(0x384742b1_2a77_4cb3_8cf8_1136f5e17e59);
pub const HomeGroup: windows_core::GUID = windows_core::GUID::from_u128(0xde77ba04_3c92_4d11_a1a5_42352a53e0e3);
windows_core::imp::define_interface!(IACList, IACList_Vtbl, 0x77a130b0_94fd_11d0_a544_00c04fd7d062);
windows_core::imp::interface_hierarchy!(IACList, windows_core::IUnknown);
impl IACList {
    pub unsafe fn Expand<P0>(&self, pszexpand: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Expand)(windows_core::Interface::as_raw(self), pszexpand.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IACList_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Expand: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IACList_Impl: windows_core::IUnknownImpl {
    fn Expand(&self, pszexpand: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IACList_Vtbl {
    pub const fn new<Identity: IACList_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Expand<Identity: IACList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszexpand: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IACList_Impl::Expand(this, core::mem::transmute(&pszexpand)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Expand: Expand::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IACList as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IACList {}
windows_core::imp::define_interface!(IACList2, IACList2_Vtbl, 0x470141a0_5186_11d2_bbb6_0060977b464c);
impl core::ops::Deref for IACList2 {
    type Target = IACList;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IACList2, windows_core::IUnknown, IACList);
impl IACList2 {
    pub unsafe fn SetOptions(&self, dwflag: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOptions)(windows_core::Interface::as_raw(self), dwflag).ok() }
    }
    pub unsafe fn GetOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IACList2_Vtbl {
    pub base__: IACList_Vtbl,
    pub SetOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait IACList2_Impl: IACList_Impl {
    fn SetOptions(&self, dwflag: u32) -> windows_core::Result<()>;
    fn GetOptions(&self) -> windows_core::Result<u32>;
}
impl IACList2_Vtbl {
    pub const fn new<Identity: IACList2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetOptions<Identity: IACList2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflag: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IACList2_Impl::SetOptions(this, core::mem::transmute_copy(&dwflag)).into()
            }
        }
        unsafe extern "system" fn GetOptions<Identity: IACList2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflag: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IACList2_Impl::GetOptions(this) {
                    Ok(ok__) => {
                        pdwflag.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IACList_Vtbl::new::<Identity, OFFSET>(), SetOptions: SetOptions::<Identity, OFFSET>, GetOptions: GetOptions::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IACList2 as windows_core::Interface>::IID || iid == &<IACList as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IACList2 {}
windows_core::imp::define_interface!(IAccessibilityDockingService, IAccessibilityDockingService_Vtbl, 0x8849dc22_cedf_4c95_998d_051419dd3f76);
windows_core::imp::interface_hierarchy!(IAccessibilityDockingService, windows_core::IUnknown);
impl IAccessibilityDockingService {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetAvailableSize(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR, pcxfixed: *mut u32, pcymax: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetAvailableSize)(windows_core::Interface::as_raw(self), hmonitor, pcxfixed as _, pcymax as _).ok() }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn DockWindow<P3>(&self, hwnd: super::super::Foundation::HWND, hmonitor: super::super::Graphics::Gdi::HMONITOR, cyrequested: u32, pcallback: P3) -> windows_core::Result<()>
    where
        P3: windows_core::Param<IAccessibilityDockingServiceCallback>,
    {
        unsafe { (windows_core::Interface::vtable(self).DockWindow)(windows_core::Interface::as_raw(self), hwnd, hmonitor, cyrequested, pcallback.param().abi()).ok() }
    }
    pub unsafe fn UndockWindow(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UndockWindow)(windows_core::Interface::as_raw(self), hwnd).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAccessibilityDockingService_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetAvailableSize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HMONITOR, *mut u32, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetAvailableSize: usize,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub DockWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, super::super::Graphics::Gdi::HMONITOR, u32, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    DockWindow: usize,
    pub UndockWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IAccessibilityDockingService_Impl: windows_core::IUnknownImpl {
    fn GetAvailableSize(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR, pcxfixed: *mut u32, pcymax: *mut u32) -> windows_core::Result<()>;
    fn DockWindow(&self, hwnd: super::super::Foundation::HWND, hmonitor: super::super::Graphics::Gdi::HMONITOR, cyrequested: u32, pcallback: windows_core::Ref<IAccessibilityDockingServiceCallback>) -> windows_core::Result<()>;
    fn UndockWindow(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IAccessibilityDockingService_Vtbl {
    pub const fn new<Identity: IAccessibilityDockingService_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetAvailableSize<Identity: IAccessibilityDockingService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR, pcxfixed: *mut u32, pcymax: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAccessibilityDockingService_Impl::GetAvailableSize(this, core::mem::transmute_copy(&hmonitor), core::mem::transmute_copy(&pcxfixed), core::mem::transmute_copy(&pcymax)).into()
            }
        }
        unsafe extern "system" fn DockWindow<Identity: IAccessibilityDockingService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, hmonitor: super::super::Graphics::Gdi::HMONITOR, cyrequested: u32, pcallback: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAccessibilityDockingService_Impl::DockWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&hmonitor), core::mem::transmute_copy(&cyrequested), core::mem::transmute_copy(&pcallback)).into()
            }
        }
        unsafe extern "system" fn UndockWindow<Identity: IAccessibilityDockingService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAccessibilityDockingService_Impl::UndockWindow(this, core::mem::transmute_copy(&hwnd)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAvailableSize: GetAvailableSize::<Identity, OFFSET>,
            DockWindow: DockWindow::<Identity, OFFSET>,
            UndockWindow: UndockWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAccessibilityDockingService as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IAccessibilityDockingService {}
windows_core::imp::define_interface!(IAccessibilityDockingServiceCallback, IAccessibilityDockingServiceCallback_Vtbl, 0x157733fd_a592_42e5_b594_248468c5a81b);
windows_core::imp::interface_hierarchy!(IAccessibilityDockingServiceCallback, windows_core::IUnknown);
impl IAccessibilityDockingServiceCallback {
    pub unsafe fn Undocked(&self, undockreason: UNDOCK_REASON) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Undocked)(windows_core::Interface::as_raw(self), undockreason).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAccessibilityDockingServiceCallback_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Undocked: unsafe extern "system" fn(*mut core::ffi::c_void, UNDOCK_REASON) -> windows_core::HRESULT,
}
pub trait IAccessibilityDockingServiceCallback_Impl: windows_core::IUnknownImpl {
    fn Undocked(&self, undockreason: UNDOCK_REASON) -> windows_core::Result<()>;
}
impl IAccessibilityDockingServiceCallback_Vtbl {
    pub const fn new<Identity: IAccessibilityDockingServiceCallback_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Undocked<Identity: IAccessibilityDockingServiceCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, undockreason: UNDOCK_REASON) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAccessibilityDockingServiceCallback_Impl::Undocked(this, core::mem::transmute_copy(&undockreason)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Undocked: Undocked::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAccessibilityDockingServiceCallback as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IAccessibilityDockingServiceCallback {}
windows_core::imp::define_interface!(IAccessibleObject, IAccessibleObject_Vtbl, 0x95a391c5_9ed4_4c28_8401_ab9e06719e11);
windows_core::imp::interface_hierarchy!(IAccessibleObject, windows_core::IUnknown);
impl IAccessibleObject {
    pub unsafe fn SetAccessibleName<P0>(&self, pszname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAccessibleName)(windows_core::Interface::as_raw(self), pszname.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAccessibleObject_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetAccessibleName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IAccessibleObject_Impl: windows_core::IUnknownImpl {
    fn SetAccessibleName(&self, pszname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IAccessibleObject_Vtbl {
    pub const fn new<Identity: IAccessibleObject_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetAccessibleName<Identity: IAccessibleObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAccessibleObject_Impl::SetAccessibleName(this, core::mem::transmute(&pszname)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetAccessibleName: SetAccessibleName::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAccessibleObject as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IAccessibleObject {}
windows_core::imp::define_interface!(IActionProgress, IActionProgress_Vtbl, 0x49ff1173_eadc_446d_9285_156453a6431c);
windows_core::imp::interface_hierarchy!(IActionProgress, windows_core::IUnknown);
impl IActionProgress {
    pub unsafe fn Begin(&self, action: SPACTION, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Begin)(windows_core::Interface::as_raw(self), action, flags).ok() }
    }
    pub unsafe fn UpdateProgress(&self, ulcompleted: u64, ultotal: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateProgress)(windows_core::Interface::as_raw(self), ulcompleted, ultotal).ok() }
    }
    pub unsafe fn UpdateText<P1>(&self, sptext: SPTEXT, psztext: P1, fmaycompact: bool) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateText)(windows_core::Interface::as_raw(self), sptext, psztext.param().abi(), fmaycompact.into()).ok() }
    }
    pub unsafe fn QueryCancel(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).QueryCancel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ResetCancel(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetCancel)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn End(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).End)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IActionProgress_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Begin: unsafe extern "system" fn(*mut core::ffi::c_void, SPACTION, u32) -> windows_core::HRESULT,
    pub UpdateProgress: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64) -> windows_core::HRESULT,
    pub UpdateText: unsafe extern "system" fn(*mut core::ffi::c_void, SPTEXT, windows_core::PCWSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub QueryCancel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub ResetCancel: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub End: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IActionProgress_Impl: windows_core::IUnknownImpl {
    fn Begin(&self, action: SPACTION, flags: u32) -> windows_core::Result<()>;
    fn UpdateProgress(&self, ulcompleted: u64, ultotal: u64) -> windows_core::Result<()>;
    fn UpdateText(&self, sptext: SPTEXT, psztext: &windows_core::PCWSTR, fmaycompact: windows_core::BOOL) -> windows_core::Result<()>;
    fn QueryCancel(&self) -> windows_core::Result<windows_core::BOOL>;
    fn ResetCancel(&self) -> windows_core::Result<()>;
    fn End(&self) -> windows_core::Result<()>;
}
impl IActionProgress_Vtbl {
    pub const fn new<Identity: IActionProgress_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Begin<Identity: IActionProgress_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, action: SPACTION, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IActionProgress_Impl::Begin(this, core::mem::transmute_copy(&action), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn UpdateProgress<Identity: IActionProgress_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcompleted: u64, ultotal: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IActionProgress_Impl::UpdateProgress(this, core::mem::transmute_copy(&ulcompleted), core::mem::transmute_copy(&ultotal)).into()
            }
        }
        unsafe extern "system" fn UpdateText<Identity: IActionProgress_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sptext: SPTEXT, psztext: windows_core::PCWSTR, fmaycompact: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IActionProgress_Impl::UpdateText(this, core::mem::transmute_copy(&sptext), core::mem::transmute(&psztext), core::mem::transmute_copy(&fmaycompact)).into()
            }
        }
        unsafe extern "system" fn QueryCancel<Identity: IActionProgress_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcancelled: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IActionProgress_Impl::QueryCancel(this) {
                    Ok(ok__) => {
                        pfcancelled.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ResetCancel<Identity: IActionProgress_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IActionProgress_Impl::ResetCancel(this).into()
            }
        }
        unsafe extern "system" fn End<Identity: IActionProgress_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IActionProgress_Impl::End(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Begin: Begin::<Identity, OFFSET>,
            UpdateProgress: UpdateProgress::<Identity, OFFSET>,
            UpdateText: UpdateText::<Identity, OFFSET>,
            QueryCancel: QueryCancel::<Identity, OFFSET>,
            ResetCancel: ResetCancel::<Identity, OFFSET>,
            End: End::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IActionProgress as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IActionProgress {}
windows_core::imp::define_interface!(IActionProgressDialog, IActionProgressDialog_Vtbl, 0x49ff1172_eadc_446d_9285_156453a6431c);
windows_core::imp::interface_hierarchy!(IActionProgressDialog, windows_core::IUnknown);
impl IActionProgressDialog {
    pub unsafe fn Initialize<P1, P2>(&self, flags: u32, psztitle: P1, pszcancel: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), flags, psztitle.param().abi(), pszcancel.param().abi()).ok() }
    }
    pub unsafe fn Stop(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Stop)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IActionProgressDialog_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub Stop: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IActionProgressDialog_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, flags: u32, psztitle: &windows_core::PCWSTR, pszcancel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Stop(&self) -> windows_core::Result<()>;
}
impl IActionProgressDialog_Vtbl {
    pub const fn new<Identity: IActionProgressDialog_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IActionProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: u32, psztitle: windows_core::PCWSTR, pszcancel: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IActionProgressDialog_Impl::Initialize(this, core::mem::transmute_copy(&flags), core::mem::transmute(&psztitle), core::mem::transmute(&pszcancel)).into()
            }
        }
        unsafe extern "system" fn Stop<Identity: IActionProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IActionProgressDialog_Impl::Stop(this).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET>, Stop: Stop::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IActionProgressDialog as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IActionProgressDialog {}
windows_core::imp::define_interface!(IAppActivationUIInfo, IAppActivationUIInfo_Vtbl, 0xabad189d_9fa3_4278_b3ca_8ca448a88dcb);
windows_core::imp::interface_hierarchy!(IAppActivationUIInfo, windows_core::IUnknown);
impl IAppActivationUIInfo {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetMonitor(&self) -> windows_core::Result<super::super::Graphics::Gdi::HMONITOR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMonitor)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetInvokePoint(&self) -> windows_core::Result<super::super::Foundation::POINT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInvokePoint)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetShowCommand(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetShowCommand)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetShowUI(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetShowUI)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetKeyState(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetKeyState)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAppActivationUIInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetMonitor: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetMonitor: usize,
    pub GetInvokePoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::POINT) -> windows_core::HRESULT,
    pub GetShowCommand: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub GetShowUI: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub GetKeyState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IAppActivationUIInfo_Impl: windows_core::IUnknownImpl {
    fn GetMonitor(&self) -> windows_core::Result<super::super::Graphics::Gdi::HMONITOR>;
    fn GetInvokePoint(&self) -> windows_core::Result<super::super::Foundation::POINT>;
    fn GetShowCommand(&self) -> windows_core::Result<i32>;
    fn GetShowUI(&self) -> windows_core::Result<windows_core::BOOL>;
    fn GetKeyState(&self) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IAppActivationUIInfo_Vtbl {
    pub const fn new<Identity: IAppActivationUIInfo_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetMonitor<Identity: IAppActivationUIInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppActivationUIInfo_Impl::GetMonitor(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInvokePoint<Identity: IAppActivationUIInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppActivationUIInfo_Impl::GetInvokePoint(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetShowCommand<Identity: IAppActivationUIInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppActivationUIInfo_Impl::GetShowCommand(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetShowUI<Identity: IAppActivationUIInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppActivationUIInfo_Impl::GetShowUI(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetKeyState<Identity: IAppActivationUIInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppActivationUIInfo_Impl::GetKeyState(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetMonitor: GetMonitor::<Identity, OFFSET>,
            GetInvokePoint: GetInvokePoint::<Identity, OFFSET>,
            GetShowCommand: GetShowCommand::<Identity, OFFSET>,
            GetShowUI: GetShowUI::<Identity, OFFSET>,
            GetKeyState: GetKeyState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAppActivationUIInfo as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IAppActivationUIInfo {}
windows_core::imp::define_interface!(IAppPublisher, IAppPublisher_Vtbl, 0x07250a10_9cf9_11d1_9076_006008059382);
windows_core::imp::interface_hierarchy!(IAppPublisher, windows_core::IUnknown);
impl IAppPublisher {
    pub unsafe fn GetNumberOfCategories(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberOfCategories)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCategories(&self) -> windows_core::Result<APPCATEGORYINFOLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCategories)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetNumberOfApps(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNumberOfApps)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn EnumApps(&self, pappcategoryid: *const windows_core::GUID) -> windows_core::Result<IEnumPublishedApps> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumApps)(windows_core::Interface::as_raw(self), pappcategoryid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAppPublisher_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetNumberOfCategories: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetCategories: unsafe extern "system" fn(*mut core::ffi::c_void, *mut APPCATEGORYINFOLIST) -> windows_core::HRESULT,
    pub GetNumberOfApps: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub EnumApps: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IAppPublisher_Impl: windows_core::IUnknownImpl {
    fn GetNumberOfCategories(&self) -> windows_core::Result<u32>;
    fn GetCategories(&self) -> windows_core::Result<APPCATEGORYINFOLIST>;
    fn GetNumberOfApps(&self) -> windows_core::Result<u32>;
    fn EnumApps(&self, pappcategoryid: *const windows_core::GUID) -> windows_core::Result<IEnumPublishedApps>;
}
impl IAppPublisher_Vtbl {
    pub const fn new<Identity: IAppPublisher_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetNumberOfCategories<Identity: IAppPublisher_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcat: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppPublisher_Impl::GetNumberOfCategories(this) {
                    Ok(ok__) => {
                        pdwcat.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCategories<Identity: IAppPublisher_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pappcategorylist: *mut APPCATEGORYINFOLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppPublisher_Impl::GetCategories(this) {
                    Ok(ok__) => {
                        pappcategorylist.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNumberOfApps<Identity: IAppPublisher_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwapps: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppPublisher_Impl::GetNumberOfApps(this) {
                    Ok(ok__) => {
                        pdwapps.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumApps<Identity: IAppPublisher_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pappcategoryid: *const windows_core::GUID, ppepa: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppPublisher_Impl::EnumApps(this, core::mem::transmute_copy(&pappcategoryid)) {
                    Ok(ok__) => {
                        ppepa.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetNumberOfCategories: GetNumberOfCategories::<Identity, OFFSET>,
            GetCategories: GetCategories::<Identity, OFFSET>,
            GetNumberOfApps: GetNumberOfApps::<Identity, OFFSET>,
            EnumApps: EnumApps::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAppPublisher as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IAppPublisher {}
windows_core::imp::define_interface!(IAppVisibility, IAppVisibility_Vtbl, 0x2246ea2d_caea_4444_a3c4_6de827e44313);
windows_core::imp::interface_hierarchy!(IAppVisibility, windows_core::IUnknown);
impl IAppVisibility {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetAppVisibilityOnMonitor(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<MONITOR_APP_VISIBILITY> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAppVisibilityOnMonitor)(windows_core::Interface::as_raw(self), hmonitor, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsLauncherVisible(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsLauncherVisible)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Advise<P0>(&self, pcallback: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<IAppVisibilityEvents>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Advise)(windows_core::Interface::as_raw(self), pcallback.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Unadvise)(windows_core::Interface::as_raw(self), dwcookie).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAppVisibility_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetAppVisibilityOnMonitor: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HMONITOR, *mut MONITOR_APP_VISIBILITY) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetAppVisibilityOnMonitor: usize,
    pub IsLauncherVisible: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub Advise: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IAppVisibility_Impl: windows_core::IUnknownImpl {
    fn GetAppVisibilityOnMonitor(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<MONITOR_APP_VISIBILITY>;
    fn IsLauncherVisible(&self) -> windows_core::Result<windows_core::BOOL>;
    fn Advise(&self, pcallback: windows_core::Ref<IAppVisibilityEvents>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IAppVisibility_Vtbl {
    pub const fn new<Identity: IAppVisibility_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetAppVisibilityOnMonitor<Identity: IAppVisibility_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR, pmode: *mut MONITOR_APP_VISIBILITY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppVisibility_Impl::GetAppVisibilityOnMonitor(this, core::mem::transmute_copy(&hmonitor)) {
                    Ok(ok__) => {
                        pmode.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsLauncherVisible<Identity: IAppVisibility_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfvisible: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppVisibility_Impl::IsLauncherVisible(this) {
                    Ok(ok__) => {
                        pfvisible.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Advise<Identity: IAppVisibility_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcallback: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAppVisibility_Impl::Advise(this, core::mem::transmute_copy(&pcallback)) {
                    Ok(ok__) => {
                        pdwcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Unadvise<Identity: IAppVisibility_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAppVisibility_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAppVisibilityOnMonitor: GetAppVisibilityOnMonitor::<Identity, OFFSET>,
            IsLauncherVisible: IsLauncherVisible::<Identity, OFFSET>,
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAppVisibility as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IAppVisibility {}
windows_core::imp::define_interface!(IAppVisibilityEvents, IAppVisibilityEvents_Vtbl, 0x6584ce6b_7d82_49c2_89c9_c6bc02ba8c38);
windows_core::imp::interface_hierarchy!(IAppVisibilityEvents, windows_core::IUnknown);
impl IAppVisibilityEvents {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn AppVisibilityOnMonitorChanged(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR, previousmode: MONITOR_APP_VISIBILITY, currentmode: MONITOR_APP_VISIBILITY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AppVisibilityOnMonitorChanged)(windows_core::Interface::as_raw(self), hmonitor, previousmode, currentmode).ok() }
    }
    pub unsafe fn LauncherVisibilityChange(&self, currentvisiblestate: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).LauncherVisibilityChange)(windows_core::Interface::as_raw(self), currentvisiblestate.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAppVisibilityEvents_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub AppVisibilityOnMonitorChanged: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HMONITOR, MONITOR_APP_VISIBILITY, MONITOR_APP_VISIBILITY) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    AppVisibilityOnMonitorChanged: usize,
    pub LauncherVisibilityChange: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IAppVisibilityEvents_Impl: windows_core::IUnknownImpl {
    fn AppVisibilityOnMonitorChanged(&self, hmonitor: super::super::Graphics::Gdi::HMONITOR, previousmode: MONITOR_APP_VISIBILITY, currentmode: MONITOR_APP_VISIBILITY) -> windows_core::Result<()>;
    fn LauncherVisibilityChange(&self, currentvisiblestate: windows_core::BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IAppVisibilityEvents_Vtbl {
    pub const fn new<Identity: IAppVisibilityEvents_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AppVisibilityOnMonitorChanged<Identity: IAppVisibilityEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmonitor: super::super::Graphics::Gdi::HMONITOR, previousmode: MONITOR_APP_VISIBILITY, currentmode: MONITOR_APP_VISIBILITY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAppVisibilityEvents_Impl::AppVisibilityOnMonitorChanged(this, core::mem::transmute_copy(&hmonitor), core::mem::transmute_copy(&previousmode), core::mem::transmute_copy(&currentmode)).into()
            }
        }
        unsafe extern "system" fn LauncherVisibilityChange<Identity: IAppVisibilityEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, currentvisiblestate: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAppVisibilityEvents_Impl::LauncherVisibilityChange(this, core::mem::transmute_copy(&currentvisiblestate)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AppVisibilityOnMonitorChanged: AppVisibilityOnMonitorChanged::<Identity, OFFSET>,
            LauncherVisibilityChange: LauncherVisibilityChange::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAppVisibilityEvents as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IAppVisibilityEvents {}
windows_core::imp::define_interface!(IApplicationActivationManager, IApplicationActivationManager_Vtbl, 0x2e941141_7f97_4756_ba1d_9decde894a3d);
windows_core::imp::interface_hierarchy!(IApplicationActivationManager, windows_core::IUnknown);
impl IApplicationActivationManager {
    pub unsafe fn ActivateApplication<P0, P1>(&self, appusermodelid: P0, arguments: P1, options: ACTIVATEOPTIONS) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ActivateApplication)(windows_core::Interface::as_raw(self), appusermodelid.param().abi(), arguments.param().abi(), options, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ActivateForFile<P0, P1, P2>(&self, appusermodelid: P0, itemarray: P1, verb: P2) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IShellItemArray>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ActivateForFile)(windows_core::Interface::as_raw(self), appusermodelid.param().abi(), itemarray.param().abi(), verb.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ActivateForProtocol<P0, P1>(&self, appusermodelid: P0, itemarray: P1) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IShellItemArray>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ActivateForProtocol)(windows_core::Interface::as_raw(self), appusermodelid.param().abi(), itemarray.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IApplicationActivationManager_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ActivateApplication: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, ACTIVATEOPTIONS, *mut u32) -> windows_core::HRESULT,
    pub ActivateForFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    pub ActivateForProtocol: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait IApplicationActivationManager_Impl: windows_core::IUnknownImpl {
    fn ActivateApplication(&self, appusermodelid: &windows_core::PCWSTR, arguments: &windows_core::PCWSTR, options: ACTIVATEOPTIONS) -> windows_core::Result<u32>;
    fn ActivateForFile(&self, appusermodelid: &windows_core::PCWSTR, itemarray: windows_core::Ref<IShellItemArray>, verb: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn ActivateForProtocol(&self, appusermodelid: &windows_core::PCWSTR, itemarray: windows_core::Ref<IShellItemArray>) -> windows_core::Result<u32>;
}
impl IApplicationActivationManager_Vtbl {
    pub const fn new<Identity: IApplicationActivationManager_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ActivateApplication<Identity: IApplicationActivationManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, appusermodelid: windows_core::PCWSTR, arguments: windows_core::PCWSTR, options: ACTIVATEOPTIONS, processid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IApplicationActivationManager_Impl::ActivateApplication(this, core::mem::transmute(&appusermodelid), core::mem::transmute(&arguments), core::mem::transmute_copy(&options)) {
                    Ok(ok__) => {
                        processid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ActivateForFile<Identity: IApplicationActivationManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, appusermodelid: windows_core::PCWSTR, itemarray: *mut core::ffi::c_void, verb: windows_core::PCWSTR, processid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IApplicationActivationManager_Impl::ActivateForFile(this, core::mem::transmute(&appusermodelid), core::mem::transmute_copy(&itemarray), core::mem::transmute(&verb)) {
                    Ok(ok__) => {
                        processid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ActivateForProtocol<Identity: IApplicationActivationManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, appusermodelid: windows_core::PCWSTR, itemarray: *mut core::ffi::c_void, processid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IApplicationActivationManager_Impl::ActivateForProtocol(this, core::mem::transmute(&appusermodelid), core::mem::transmute_copy(&itemarray)) {
                    Ok(ok__) => {
                        processid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ActivateApplication: ActivateApplication::<Identity, OFFSET>,
            ActivateForFile: ActivateForFile::<Identity, OFFSET>,
            ActivateForProtocol: ActivateForProtocol::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationActivationManager as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IApplicationActivationManager {}
windows_core::imp::define_interface!(IApplicationAssociationRegistration, IApplicationAssociationRegistration_Vtbl, 0x4e530b0a_e611_4c77_a3ac_9031d022281b);
windows_core::imp::interface_hierarchy!(IApplicationAssociationRegistration, windows_core::IUnknown);
impl IApplicationAssociationRegistration {
    pub unsafe fn QueryCurrentDefault<P0>(&self, pszquery: P0, atquerytype: ASSOCIATIONTYPE, alquerylevel: ASSOCIATIONLEVEL) -> windows_core::Result<windows_core::PWSTR>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).QueryCurrentDefault)(windows_core::Interface::as_raw(self), pszquery.param().abi(), atquerytype, alquerylevel, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn QueryAppIsDefault<P0, P3>(&self, pszquery: P0, atquerytype: ASSOCIATIONTYPE, alquerylevel: ASSOCIATIONLEVEL, pszappregistryname: P3) -> windows_core::Result<windows_core::BOOL>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).QueryAppIsDefault)(windows_core::Interface::as_raw(self), pszquery.param().abi(), atquerytype, alquerylevel, pszappregistryname.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn QueryAppIsDefaultAll<P1>(&self, alquerylevel: ASSOCIATIONLEVEL, pszappregistryname: P1) -> windows_core::Result<windows_core::BOOL>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).QueryAppIsDefaultAll)(windows_core::Interface::as_raw(self), alquerylevel, pszappregistryname.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetAppAsDefault<P0, P1>(&self, pszappregistryname: P0, pszset: P1, atsettype: ASSOCIATIONTYPE) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAppAsDefault)(windows_core::Interface::as_raw(self), pszappregistryname.param().abi(), pszset.param().abi(), atsettype).ok() }
    }
    pub unsafe fn SetAppAsDefaultAll<P0>(&self, pszappregistryname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAppAsDefaultAll)(windows_core::Interface::as_raw(self), pszappregistryname.param().abi()).ok() }
    }
    pub unsafe fn ClearUserAssociations(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ClearUserAssociations)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IApplicationAssociationRegistration_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub QueryCurrentDefault: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, ASSOCIATIONTYPE, ASSOCIATIONLEVEL, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub QueryAppIsDefault: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, ASSOCIATIONTYPE, ASSOCIATIONLEVEL, windows_core::PCWSTR, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub QueryAppIsDefaultAll: unsafe extern "system" fn(*mut core::ffi::c_void, ASSOCIATIONLEVEL, windows_core::PCWSTR, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub SetAppAsDefault: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, ASSOCIATIONTYPE) -> windows_core::HRESULT,
    pub SetAppAsDefaultAll: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ClearUserAssociations: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IApplicationAssociationRegistration_Impl: windows_core::IUnknownImpl {
    fn QueryCurrentDefault(&self, pszquery: &windows_core::PCWSTR, atquerytype: ASSOCIATIONTYPE, alquerylevel: ASSOCIATIONLEVEL) -> windows_core::Result<windows_core::PWSTR>;
    fn QueryAppIsDefault(&self, pszquery: &windows_core::PCWSTR, atquerytype: ASSOCIATIONTYPE, alquerylevel: ASSOCIATIONLEVEL, pszappregistryname: &windows_core::PCWSTR) -> windows_core::Result<windows_core::BOOL>;
    fn QueryAppIsDefaultAll(&self, alquerylevel: ASSOCIATIONLEVEL, pszappregistryname: &windows_core::PCWSTR) -> windows_core::Result<windows_core::BOOL>;
    fn SetAppAsDefault(&self, pszappregistryname: &windows_core::PCWSTR, pszset: &windows_core::PCWSTR, atsettype: ASSOCIATIONTYPE) -> windows_core::Result<()>;
    fn SetAppAsDefaultAll(&self, pszappregistryname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ClearUserAssociations(&self) -> windows_core::Result<()>;
}
impl IApplicationAssociationRegistration_Vtbl {
    pub const fn new<Identity: IApplicationAssociationRegistration_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn QueryCurrentDefault<Identity: IApplicationAssociationRegistration_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszquery: windows_core::PCWSTR, atquerytype: ASSOCIATIONTYPE, alquerylevel: ASSOCIATIONLEVEL, ppszassociation: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IApplicationAssociationRegistration_Impl::QueryCurrentDefault(this, core::mem::transmute(&pszquery), core::mem::transmute_copy(&atquerytype), core::mem::transmute_copy(&alquerylevel)) {
                    Ok(ok__) => {
                        ppszassociation.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn QueryAppIsDefault<Identity: IApplicationAssociationRegistration_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszquery: windows_core::PCWSTR, atquerytype: ASSOCIATIONTYPE, alquerylevel: ASSOCIATIONLEVEL, pszappregistryname: windows_core::PCWSTR, pfdefault: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IApplicationAssociationRegistration_Impl::QueryAppIsDefault(this, core::mem::transmute(&pszquery), core::mem::transmute_copy(&atquerytype), core::mem::transmute_copy(&alquerylevel), core::mem::transmute(&pszappregistryname)) {
                    Ok(ok__) => {
                        pfdefault.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn QueryAppIsDefaultAll<Identity: IApplicationAssociationRegistration_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, alquerylevel: ASSOCIATIONLEVEL, pszappregistryname: windows_core::PCWSTR, pfdefault: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IApplicationAssociationRegistration_Impl::QueryAppIsDefaultAll(this, core::mem::transmute_copy(&alquerylevel), core::mem::transmute(&pszappregistryname)) {
                    Ok(ok__) => {
                        pfdefault.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetAppAsDefault<Identity: IApplicationAssociationRegistration_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappregistryname: windows_core::PCWSTR, pszset: windows_core::PCWSTR, atsettype: ASSOCIATIONTYPE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationAssociationRegistration_Impl::SetAppAsDefault(this, core::mem::transmute(&pszappregistryname), core::mem::transmute(&pszset), core::mem::transmute_copy(&atsettype)).into()
            }
        }
        unsafe extern "system" fn SetAppAsDefaultAll<Identity: IApplicationAssociationRegistration_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappregistryname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationAssociationRegistration_Impl::SetAppAsDefaultAll(this, core::mem::transmute(&pszappregistryname)).into()
            }
        }
        unsafe extern "system" fn ClearUserAssociations<Identity: IApplicationAssociationRegistration_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationAssociationRegistration_Impl::ClearUserAssociations(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryCurrentDefault: QueryCurrentDefault::<Identity, OFFSET>,
            QueryAppIsDefault: QueryAppIsDefault::<Identity, OFFSET>,
            QueryAppIsDefaultAll: QueryAppIsDefaultAll::<Identity, OFFSET>,
            SetAppAsDefault: SetAppAsDefault::<Identity, OFFSET>,
            SetAppAsDefaultAll: SetAppAsDefaultAll::<Identity, OFFSET>,
            ClearUserAssociations: ClearUserAssociations::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationAssociationRegistration as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IApplicationAssociationRegistration {}
windows_core::imp::define_interface!(IApplicationAssociationRegistrationUI, IApplicationAssociationRegistrationUI_Vtbl, 0x1f76a169_f994_40ac_8fc8_0959e8874710);
windows_core::imp::interface_hierarchy!(IApplicationAssociationRegistrationUI, windows_core::IUnknown);
impl IApplicationAssociationRegistrationUI {
    pub unsafe fn LaunchAdvancedAssociationUI<P0>(&self, pszappregistryname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LaunchAdvancedAssociationUI)(windows_core::Interface::as_raw(self), pszappregistryname.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IApplicationAssociationRegistrationUI_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub LaunchAdvancedAssociationUI: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IApplicationAssociationRegistrationUI_Impl: windows_core::IUnknownImpl {
    fn LaunchAdvancedAssociationUI(&self, pszappregistryname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IApplicationAssociationRegistrationUI_Vtbl {
    pub const fn new<Identity: IApplicationAssociationRegistrationUI_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn LaunchAdvancedAssociationUI<Identity: IApplicationAssociationRegistrationUI_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappregistryname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationAssociationRegistrationUI_Impl::LaunchAdvancedAssociationUI(this, core::mem::transmute(&pszappregistryname)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), LaunchAdvancedAssociationUI: LaunchAdvancedAssociationUI::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationAssociationRegistrationUI as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IApplicationAssociationRegistrationUI {}
windows_core::imp::define_interface!(IApplicationDesignModeSettings, IApplicationDesignModeSettings_Vtbl, 0x2a3dee9a_e31d_46d6_8508_bcc597db3557);
windows_core::imp::interface_hierarchy!(IApplicationDesignModeSettings, windows_core::IUnknown);
impl IApplicationDesignModeSettings {
    pub unsafe fn SetNativeDisplaySize(&self, nativedisplaysizepixels: super::super::Foundation::SIZE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNativeDisplaySize)(windows_core::Interface::as_raw(self), core::mem::transmute(nativedisplaysizepixels)).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetScaleFactor(&self, scalefactor: Common::DEVICE_SCALE_FACTOR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetScaleFactor)(windows_core::Interface::as_raw(self), scalefactor).ok() }
    }
    pub unsafe fn SetApplicationViewState(&self, viewstate: APPLICATION_VIEW_STATE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetApplicationViewState)(windows_core::Interface::as_raw(self), viewstate).ok() }
    }
    pub unsafe fn ComputeApplicationSize(&self) -> windows_core::Result<super::super::Foundation::SIZE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ComputeApplicationSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn IsApplicationViewStateSupported(&self, viewstate: APPLICATION_VIEW_STATE, nativedisplaysizepixels: super::super::Foundation::SIZE, scalefactor: Common::DEVICE_SCALE_FACTOR) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsApplicationViewStateSupported)(windows_core::Interface::as_raw(self), viewstate, core::mem::transmute(nativedisplaysizepixels), scalefactor, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn TriggerEdgeGesture(&self, edgegesturekind: EDGE_GESTURE_KIND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TriggerEdgeGesture)(windows_core::Interface::as_raw(self), edgegesturekind).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IApplicationDesignModeSettings_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetNativeDisplaySize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::SIZE) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetScaleFactor: unsafe extern "system" fn(*mut core::ffi::c_void, Common::DEVICE_SCALE_FACTOR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetScaleFactor: usize,
    pub SetApplicationViewState: unsafe extern "system" fn(*mut core::ffi::c_void, APPLICATION_VIEW_STATE) -> windows_core::HRESULT,
    pub ComputeApplicationSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::SIZE) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub IsApplicationViewStateSupported: unsafe extern "system" fn(*mut core::ffi::c_void, APPLICATION_VIEW_STATE, super::super::Foundation::SIZE, Common::DEVICE_SCALE_FACTOR, *mut windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    IsApplicationViewStateSupported: usize,
    pub TriggerEdgeGesture: unsafe extern "system" fn(*mut core::ffi::c_void, EDGE_GESTURE_KIND) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IApplicationDesignModeSettings_Impl: windows_core::IUnknownImpl {
    fn SetNativeDisplaySize(&self, nativedisplaysizepixels: &super::super::Foundation::SIZE) -> windows_core::Result<()>;
    fn SetScaleFactor(&self, scalefactor: Common::DEVICE_SCALE_FACTOR) -> windows_core::Result<()>;
    fn SetApplicationViewState(&self, viewstate: APPLICATION_VIEW_STATE) -> windows_core::Result<()>;
    fn ComputeApplicationSize(&self) -> windows_core::Result<super::super::Foundation::SIZE>;
    fn IsApplicationViewStateSupported(&self, viewstate: APPLICATION_VIEW_STATE, nativedisplaysizepixels: &super::super::Foundation::SIZE, scalefactor: Common::DEVICE_SCALE_FACTOR) -> windows_core::Result<windows_core::BOOL>;
    fn TriggerEdgeGesture(&self, edgegesturekind: EDGE_GESTURE_KIND) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IApplicationDesignModeSettings_Vtbl {
    pub const fn new<Identity: IApplicationDesignModeSettings_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetNativeDisplaySize<Identity: IApplicationDesignModeSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nativedisplaysizepixels: super::super::Foundation::SIZE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDesignModeSettings_Impl::SetNativeDisplaySize(this, core::mem::transmute(&nativedisplaysizepixels)).into()
            }
        }
        unsafe extern "system" fn SetScaleFactor<Identity: IApplicationDesignModeSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, scalefactor: Common::DEVICE_SCALE_FACTOR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDesignModeSettings_Impl::SetScaleFactor(this, core::mem::transmute_copy(&scalefactor)).into()
            }
        }
        unsafe extern "system" fn SetApplicationViewState<Identity: IApplicationDesignModeSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, viewstate: APPLICATION_VIEW_STATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDesignModeSettings_Impl::SetApplicationViewState(this, core::mem::transmute_copy(&viewstate)).into()
            }
        }
        unsafe extern "system" fn ComputeApplicationSize<Identity: IApplicationDesignModeSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, applicationsizepixels: *mut super::super::Foundation::SIZE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IApplicationDesignModeSettings_Impl::ComputeApplicationSize(this) {
                    Ok(ok__) => {
                        applicationsizepixels.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsApplicationViewStateSupported<Identity: IApplicationDesignModeSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, viewstate: APPLICATION_VIEW_STATE, nativedisplaysizepixels: super::super::Foundation::SIZE, scalefactor: Common::DEVICE_SCALE_FACTOR, supported: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IApplicationDesignModeSettings_Impl::IsApplicationViewStateSupported(this, core::mem::transmute_copy(&viewstate), core::mem::transmute(&nativedisplaysizepixels), core::mem::transmute_copy(&scalefactor)) {
                    Ok(ok__) => {
                        supported.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn TriggerEdgeGesture<Identity: IApplicationDesignModeSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, edgegesturekind: EDGE_GESTURE_KIND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDesignModeSettings_Impl::TriggerEdgeGesture(this, core::mem::transmute_copy(&edgegesturekind)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetNativeDisplaySize: SetNativeDisplaySize::<Identity, OFFSET>,
            SetScaleFactor: SetScaleFactor::<Identity, OFFSET>,
            SetApplicationViewState: SetApplicationViewState::<Identity, OFFSET>,
            ComputeApplicationSize: ComputeApplicationSize::<Identity, OFFSET>,
            IsApplicationViewStateSupported: IsApplicationViewStateSupported::<Identity, OFFSET>,
            TriggerEdgeGesture: TriggerEdgeGesture::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationDesignModeSettings as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IApplicationDesignModeSettings {}
windows_core::imp::define_interface!(IApplicationDesignModeSettings2, IApplicationDesignModeSettings2_Vtbl, 0x490514e1_675a_4d6e_a58d_e54901b4ca2f);
impl core::ops::Deref for IApplicationDesignModeSettings2 {
    type Target = IApplicationDesignModeSettings;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IApplicationDesignModeSettings2, windows_core::IUnknown, IApplicationDesignModeSettings);
impl IApplicationDesignModeSettings2 {
    pub unsafe fn SetNativeDisplayOrientation(&self, nativedisplayorientation: NATIVE_DISPLAY_ORIENTATION) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNativeDisplayOrientation)(windows_core::Interface::as_raw(self), nativedisplayorientation).ok() }
    }
    pub unsafe fn SetApplicationViewOrientation(&self, vieworientation: APPLICATION_VIEW_ORIENTATION) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetApplicationViewOrientation)(windows_core::Interface::as_raw(self), vieworientation).ok() }
    }
    pub unsafe fn SetAdjacentDisplayEdges(&self, adjacentdisplayedges: ADJACENT_DISPLAY_EDGES) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAdjacentDisplayEdges)(windows_core::Interface::as_raw(self), adjacentdisplayedges).ok() }
    }
    pub unsafe fn SetIsOnLockScreen(&self, isonlockscreen: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetIsOnLockScreen)(windows_core::Interface::as_raw(self), isonlockscreen.into()).ok() }
    }
    pub unsafe fn SetApplicationViewMinWidth(&self, viewminwidth: APPLICATION_VIEW_MIN_WIDTH) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetApplicationViewMinWidth)(windows_core::Interface::as_raw(self), viewminwidth).ok() }
    }
    pub unsafe fn GetApplicationSizeBounds(&self, minapplicationsizepixels: *mut super::super::Foundation::SIZE, maxapplicationsizepixels: *mut super::super::Foundation::SIZE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetApplicationSizeBounds)(windows_core::Interface::as_raw(self), minapplicationsizepixels as _, maxapplicationsizepixels as _).ok() }
    }
    pub unsafe fn GetApplicationViewOrientation(&self, applicationsizepixels: super::super::Foundation::SIZE) -> windows_core::Result<APPLICATION_VIEW_ORIENTATION> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetApplicationViewOrientation)(windows_core::Interface::as_raw(self), core::mem::transmute(applicationsizepixels), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IApplicationDesignModeSettings2_Vtbl {
    pub base__: IApplicationDesignModeSettings_Vtbl,
    pub SetNativeDisplayOrientation: unsafe extern "system" fn(*mut core::ffi::c_void, NATIVE_DISPLAY_ORIENTATION) -> windows_core::HRESULT,
    pub SetApplicationViewOrientation: unsafe extern "system" fn(*mut core::ffi::c_void, APPLICATION_VIEW_ORIENTATION) -> windows_core::HRESULT,
    pub SetAdjacentDisplayEdges: unsafe extern "system" fn(*mut core::ffi::c_void, ADJACENT_DISPLAY_EDGES) -> windows_core::HRESULT,
    pub SetIsOnLockScreen: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub SetApplicationViewMinWidth: unsafe extern "system" fn(*mut core::ffi::c_void, APPLICATION_VIEW_MIN_WIDTH) -> windows_core::HRESULT,
    pub GetApplicationSizeBounds: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::SIZE, *mut super::super::Foundation::SIZE) -> windows_core::HRESULT,
    pub GetApplicationViewOrientation: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::SIZE, *mut APPLICATION_VIEW_ORIENTATION) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IApplicationDesignModeSettings2_Impl: IApplicationDesignModeSettings_Impl {
    fn SetNativeDisplayOrientation(&self, nativedisplayorientation: NATIVE_DISPLAY_ORIENTATION) -> windows_core::Result<()>;
    fn SetApplicationViewOrientation(&self, vieworientation: APPLICATION_VIEW_ORIENTATION) -> windows_core::Result<()>;
    fn SetAdjacentDisplayEdges(&self, adjacentdisplayedges: ADJACENT_DISPLAY_EDGES) -> windows_core::Result<()>;
    fn SetIsOnLockScreen(&self, isonlockscreen: windows_core::BOOL) -> windows_core::Result<()>;
    fn SetApplicationViewMinWidth(&self, viewminwidth: APPLICATION_VIEW_MIN_WIDTH) -> windows_core::Result<()>;
    fn GetApplicationSizeBounds(&self, minapplicationsizepixels: *mut super::super::Foundation::SIZE, maxapplicationsizepixels: *mut super::super::Foundation::SIZE) -> windows_core::Result<()>;
    fn GetApplicationViewOrientation(&self, applicationsizepixels: &super::super::Foundation::SIZE) -> windows_core::Result<APPLICATION_VIEW_ORIENTATION>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IApplicationDesignModeSettings2_Vtbl {
    pub const fn new<Identity: IApplicationDesignModeSettings2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetNativeDisplayOrientation<Identity: IApplicationDesignModeSettings2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nativedisplayorientation: NATIVE_DISPLAY_ORIENTATION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDesignModeSettings2_Impl::SetNativeDisplayOrientation(this, core::mem::transmute_copy(&nativedisplayorientation)).into()
            }
        }
        unsafe extern "system" fn SetApplicationViewOrientation<Identity: IApplicationDesignModeSettings2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vieworientation: APPLICATION_VIEW_ORIENTATION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDesignModeSettings2_Impl::SetApplicationViewOrientation(this, core::mem::transmute_copy(&vieworientation)).into()
            }
        }
        unsafe extern "system" fn SetAdjacentDisplayEdges<Identity: IApplicationDesignModeSettings2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, adjacentdisplayedges: ADJACENT_DISPLAY_EDGES) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDesignModeSettings2_Impl::SetAdjacentDisplayEdges(this, core::mem::transmute_copy(&adjacentdisplayedges)).into()
            }
        }
        unsafe extern "system" fn SetIsOnLockScreen<Identity: IApplicationDesignModeSettings2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, isonlockscreen: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDesignModeSettings2_Impl::SetIsOnLockScreen(this, core::mem::transmute_copy(&isonlockscreen)).into()
            }
        }
        unsafe extern "system" fn SetApplicationViewMinWidth<Identity: IApplicationDesignModeSettings2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, viewminwidth: APPLICATION_VIEW_MIN_WIDTH) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDesignModeSettings2_Impl::SetApplicationViewMinWidth(this, core::mem::transmute_copy(&viewminwidth)).into()
            }
        }
        unsafe extern "system" fn GetApplicationSizeBounds<Identity: IApplicationDesignModeSettings2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, minapplicationsizepixels: *mut super::super::Foundation::SIZE, maxapplicationsizepixels: *mut super::super::Foundation::SIZE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDesignModeSettings2_Impl::GetApplicationSizeBounds(this, core::mem::transmute_copy(&minapplicationsizepixels), core::mem::transmute_copy(&maxapplicationsizepixels)).into()
            }
        }
        unsafe extern "system" fn GetApplicationViewOrientation<Identity: IApplicationDesignModeSettings2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, applicationsizepixels: super::super::Foundation::SIZE, vieworientation: *mut APPLICATION_VIEW_ORIENTATION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IApplicationDesignModeSettings2_Impl::GetApplicationViewOrientation(this, core::mem::transmute(&applicationsizepixels)) {
                    Ok(ok__) => {
                        vieworientation.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IApplicationDesignModeSettings_Vtbl::new::<Identity, OFFSET>(),
            SetNativeDisplayOrientation: SetNativeDisplayOrientation::<Identity, OFFSET>,
            SetApplicationViewOrientation: SetApplicationViewOrientation::<Identity, OFFSET>,
            SetAdjacentDisplayEdges: SetAdjacentDisplayEdges::<Identity, OFFSET>,
            SetIsOnLockScreen: SetIsOnLockScreen::<Identity, OFFSET>,
            SetApplicationViewMinWidth: SetApplicationViewMinWidth::<Identity, OFFSET>,
            GetApplicationSizeBounds: GetApplicationSizeBounds::<Identity, OFFSET>,
            GetApplicationViewOrientation: GetApplicationViewOrientation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationDesignModeSettings2 as windows_core::Interface>::IID || iid == &<IApplicationDesignModeSettings as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IApplicationDesignModeSettings2 {}
windows_core::imp::define_interface!(IApplicationDestinations, IApplicationDestinations_Vtbl, 0x12337d35_94c6_48a0_bce7_6a9c69d4d600);
windows_core::imp::interface_hierarchy!(IApplicationDestinations, windows_core::IUnknown);
impl IApplicationDestinations {
    pub unsafe fn SetAppID<P0>(&self, pszappid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAppID)(windows_core::Interface::as_raw(self), pszappid.param().abi()).ok() }
    }
    pub unsafe fn RemoveDestination<P0>(&self, punk: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveDestination)(windows_core::Interface::as_raw(self), punk.param().abi()).ok() }
    }
    pub unsafe fn RemoveAllDestinations(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveAllDestinations)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IApplicationDestinations_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetAppID: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub RemoveDestination: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveAllDestinations: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IApplicationDestinations_Impl: windows_core::IUnknownImpl {
    fn SetAppID(&self, pszappid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn RemoveDestination(&self, punk: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn RemoveAllDestinations(&self) -> windows_core::Result<()>;
}
impl IApplicationDestinations_Vtbl {
    pub const fn new<Identity: IApplicationDestinations_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetAppID<Identity: IApplicationDestinations_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDestinations_Impl::SetAppID(this, core::mem::transmute(&pszappid)).into()
            }
        }
        unsafe extern "system" fn RemoveDestination<Identity: IApplicationDestinations_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDestinations_Impl::RemoveDestination(this, core::mem::transmute_copy(&punk)).into()
            }
        }
        unsafe extern "system" fn RemoveAllDestinations<Identity: IApplicationDestinations_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDestinations_Impl::RemoveAllDestinations(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAppID: SetAppID::<Identity, OFFSET>,
            RemoveDestination: RemoveDestination::<Identity, OFFSET>,
            RemoveAllDestinations: RemoveAllDestinations::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationDestinations as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IApplicationDestinations {}
windows_core::imp::define_interface!(IApplicationDocumentLists, IApplicationDocumentLists_Vtbl, 0x3c594f9f_9f30_47a1_979a_c9e83d3d0a06);
windows_core::imp::interface_hierarchy!(IApplicationDocumentLists, windows_core::IUnknown);
impl IApplicationDocumentLists {
    pub unsafe fn SetAppID<P0>(&self, pszappid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAppID)(windows_core::Interface::as_raw(self), pszappid.param().abi()).ok() }
    }
    pub unsafe fn GetList<T>(&self, listtype: APPDOCLISTTYPE, citemsdesired: u32) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetList)(windows_core::Interface::as_raw(self), listtype, citemsdesired, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IApplicationDocumentLists_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetAppID: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetList: unsafe extern "system" fn(*mut core::ffi::c_void, APPDOCLISTTYPE, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IApplicationDocumentLists_Impl: windows_core::IUnknownImpl {
    fn SetAppID(&self, pszappid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetList(&self, listtype: APPDOCLISTTYPE, citemsdesired: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl IApplicationDocumentLists_Vtbl {
    pub const fn new<Identity: IApplicationDocumentLists_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetAppID<Identity: IApplicationDocumentLists_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDocumentLists_Impl::SetAppID(this, core::mem::transmute(&pszappid)).into()
            }
        }
        unsafe extern "system" fn GetList<Identity: IApplicationDocumentLists_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, listtype: APPDOCLISTTYPE, citemsdesired: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IApplicationDocumentLists_Impl::GetList(this, core::mem::transmute_copy(&listtype), core::mem::transmute_copy(&citemsdesired), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetAppID: SetAppID::<Identity, OFFSET>, GetList: GetList::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IApplicationDocumentLists as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IApplicationDocumentLists {}
windows_core::imp::define_interface!(IAssocHandler, IAssocHandler_Vtbl, 0xf04061ac_1659_4a3f_a954_775aa57fc083);
windows_core::imp::interface_hierarchy!(IAssocHandler, windows_core::IUnknown);
impl IAssocHandler {
    pub unsafe fn GetName(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetUIName(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetUIName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetIconLocation(&self, ppszpath: *mut windows_core::PWSTR, pindex: *mut i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetIconLocation)(windows_core::Interface::as_raw(self), ppszpath as _, pindex as _).ok() }
    }
    pub unsafe fn IsRecommended(&self) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).IsRecommended)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn MakeDefault<P0>(&self, pszdescription: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).MakeDefault)(windows_core::Interface::as_raw(self), pszdescription.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Invoke<P0>(&self, pdo: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).Invoke)(windows_core::Interface::as_raw(self), pdo.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CreateInvoker<P0>(&self, pdo: P0) -> windows_core::Result<IAssocHandlerInvoker>
    where
        P0: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateInvoker)(windows_core::Interface::as_raw(self), pdo.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAssocHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetUIName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetIconLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR, *mut i32) -> windows_core::HRESULT,
    pub IsRecommended: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub MakeDefault: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Invoke: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Invoke: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub CreateInvoker: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CreateInvoker: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IAssocHandler_Impl: windows_core::IUnknownImpl {
    fn GetName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetUIName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetIconLocation(&self, ppszpath: *mut windows_core::PWSTR, pindex: *mut i32) -> windows_core::Result<()>;
    fn IsRecommended(&self) -> windows_core::HRESULT;
    fn MakeDefault(&self, pszdescription: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Invoke(&self, pdo: windows_core::Ref<super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
    fn CreateInvoker(&self, pdo: windows_core::Ref<super::super::System::Com::IDataObject>) -> windows_core::Result<IAssocHandlerInvoker>;
}
#[cfg(feature = "Win32_System_Com")]
impl IAssocHandler_Vtbl {
    pub const fn new<Identity: IAssocHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetName<Identity: IAssocHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsz: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAssocHandler_Impl::GetName(this) {
                    Ok(ok__) => {
                        ppsz.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetUIName<Identity: IAssocHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsz: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAssocHandler_Impl::GetUIName(this) {
                    Ok(ok__) => {
                        ppsz.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetIconLocation<Identity: IAssocHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszpath: *mut windows_core::PWSTR, pindex: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAssocHandler_Impl::GetIconLocation(this, core::mem::transmute_copy(&ppszpath), core::mem::transmute_copy(&pindex)).into()
            }
        }
        unsafe extern "system" fn IsRecommended<Identity: IAssocHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAssocHandler_Impl::IsRecommended(this)
            }
        }
        unsafe extern "system" fn MakeDefault<Identity: IAssocHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdescription: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAssocHandler_Impl::MakeDefault(this, core::mem::transmute(&pszdescription)).into()
            }
        }
        unsafe extern "system" fn Invoke<Identity: IAssocHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdo: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAssocHandler_Impl::Invoke(this, core::mem::transmute_copy(&pdo)).into()
            }
        }
        unsafe extern "system" fn CreateInvoker<Identity: IAssocHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdo: *mut core::ffi::c_void, ppinvoker: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAssocHandler_Impl::CreateInvoker(this, core::mem::transmute_copy(&pdo)) {
                    Ok(ok__) => {
                        ppinvoker.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetName: GetName::<Identity, OFFSET>,
            GetUIName: GetUIName::<Identity, OFFSET>,
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            IsRecommended: IsRecommended::<Identity, OFFSET>,
            MakeDefault: MakeDefault::<Identity, OFFSET>,
            Invoke: Invoke::<Identity, OFFSET>,
            CreateInvoker: CreateInvoker::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAssocHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IAssocHandler {}
windows_core::imp::define_interface!(IAssocHandlerInvoker, IAssocHandlerInvoker_Vtbl, 0x92218cab_ecaa_4335_8133_807fd234c2ee);
windows_core::imp::interface_hierarchy!(IAssocHandlerInvoker, windows_core::IUnknown);
impl IAssocHandlerInvoker {
    pub unsafe fn SupportsSelection(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SupportsSelection)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Invoke(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Invoke)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAssocHandlerInvoker_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SupportsSelection: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Invoke: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IAssocHandlerInvoker_Impl: windows_core::IUnknownImpl {
    fn SupportsSelection(&self) -> windows_core::Result<()>;
    fn Invoke(&self) -> windows_core::Result<()>;
}
impl IAssocHandlerInvoker_Vtbl {
    pub const fn new<Identity: IAssocHandlerInvoker_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SupportsSelection<Identity: IAssocHandlerInvoker_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAssocHandlerInvoker_Impl::SupportsSelection(this).into()
            }
        }
        unsafe extern "system" fn Invoke<Identity: IAssocHandlerInvoker_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAssocHandlerInvoker_Impl::Invoke(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SupportsSelection: SupportsSelection::<Identity, OFFSET>,
            Invoke: Invoke::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAssocHandlerInvoker as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IAssocHandlerInvoker {}
windows_core::imp::define_interface!(IAttachmentExecute, IAttachmentExecute_Vtbl, 0x73db1241_1e85_4581_8e4f_a81e1d0f8c57);
windows_core::imp::interface_hierarchy!(IAttachmentExecute, windows_core::IUnknown);
impl IAttachmentExecute {
    pub unsafe fn SetClientTitle<P0>(&self, psztitle: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetClientTitle)(windows_core::Interface::as_raw(self), psztitle.param().abi()).ok() }
    }
    pub unsafe fn SetClientGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetClientGuid)(windows_core::Interface::as_raw(self), guid).ok() }
    }
    pub unsafe fn SetLocalPath<P0>(&self, pszlocalpath: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetLocalPath)(windows_core::Interface::as_raw(self), pszlocalpath.param().abi()).ok() }
    }
    pub unsafe fn SetFileName<P0>(&self, pszfilename: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFileName)(windows_core::Interface::as_raw(self), pszfilename.param().abi()).ok() }
    }
    pub unsafe fn SetSource<P0>(&self, pszsource: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSource)(windows_core::Interface::as_raw(self), pszsource.param().abi()).ok() }
    }
    pub unsafe fn SetReferrer<P0>(&self, pszreferrer: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetReferrer)(windows_core::Interface::as_raw(self), pszreferrer.param().abi()).ok() }
    }
    pub unsafe fn CheckPolicy(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CheckPolicy)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Prompt(&self, hwnd: super::super::Foundation::HWND, prompt: ATTACHMENT_PROMPT) -> windows_core::Result<ATTACHMENT_ACTION> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Prompt)(windows_core::Interface::as_raw(self), hwnd, prompt, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Save(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Save)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Execute<P1>(&self, hwnd: super::super::Foundation::HWND, pszverb: P1, phprocess: Option<*mut super::super::Foundation::HANDLE>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Execute)(windows_core::Interface::as_raw(self), hwnd, pszverb.param().abi(), phprocess.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SaveWithUI(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SaveWithUI)(windows_core::Interface::as_raw(self), hwnd).ok() }
    }
    pub unsafe fn ClearClientState(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ClearClientState)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAttachmentExecute_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetClientTitle: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetClientGuid: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub SetLocalPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetFileName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetSource: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetReferrer: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub CheckPolicy: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Prompt: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, ATTACHMENT_PROMPT, *mut ATTACHMENT_ACTION) -> windows_core::HRESULT,
    pub Save: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Execute: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, windows_core::PCWSTR, *mut super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub SaveWithUI: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub ClearClientState: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IAttachmentExecute_Impl: windows_core::IUnknownImpl {
    fn SetClientTitle(&self, psztitle: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetClientGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn SetLocalPath(&self, pszlocalpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFileName(&self, pszfilename: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetSource(&self, pszsource: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetReferrer(&self, pszreferrer: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn CheckPolicy(&self) -> windows_core::Result<()>;
    fn Prompt(&self, hwnd: super::super::Foundation::HWND, prompt: ATTACHMENT_PROMPT) -> windows_core::Result<ATTACHMENT_ACTION>;
    fn Save(&self) -> windows_core::Result<()>;
    fn Execute(&self, hwnd: super::super::Foundation::HWND, pszverb: &windows_core::PCWSTR, phprocess: *mut super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn SaveWithUI(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn ClearClientState(&self) -> windows_core::Result<()>;
}
impl IAttachmentExecute_Vtbl {
    pub const fn new<Identity: IAttachmentExecute_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetClientTitle<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztitle: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::SetClientTitle(this, core::mem::transmute(&psztitle)).into()
            }
        }
        unsafe extern "system" fn SetClientGuid<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::SetClientGuid(this, core::mem::transmute_copy(&guid)).into()
            }
        }
        unsafe extern "system" fn SetLocalPath<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszlocalpath: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::SetLocalPath(this, core::mem::transmute(&pszlocalpath)).into()
            }
        }
        unsafe extern "system" fn SetFileName<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfilename: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::SetFileName(this, core::mem::transmute(&pszfilename)).into()
            }
        }
        unsafe extern "system" fn SetSource<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszsource: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::SetSource(this, core::mem::transmute(&pszsource)).into()
            }
        }
        unsafe extern "system" fn SetReferrer<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszreferrer: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::SetReferrer(this, core::mem::transmute(&pszreferrer)).into()
            }
        }
        unsafe extern "system" fn CheckPolicy<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::CheckPolicy(this).into()
            }
        }
        unsafe extern "system" fn Prompt<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, prompt: ATTACHMENT_PROMPT, paction: *mut ATTACHMENT_ACTION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAttachmentExecute_Impl::Prompt(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&prompt)) {
                    Ok(ok__) => {
                        paction.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Save<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::Save(this).into()
            }
        }
        unsafe extern "system" fn Execute<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pszverb: windows_core::PCWSTR, phprocess: *mut super::super::Foundation::HANDLE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::Execute(this, core::mem::transmute_copy(&hwnd), core::mem::transmute(&pszverb), core::mem::transmute_copy(&phprocess)).into()
            }
        }
        unsafe extern "system" fn SaveWithUI<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::SaveWithUI(this, core::mem::transmute_copy(&hwnd)).into()
            }
        }
        unsafe extern "system" fn ClearClientState<Identity: IAttachmentExecute_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAttachmentExecute_Impl::ClearClientState(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetClientTitle: SetClientTitle::<Identity, OFFSET>,
            SetClientGuid: SetClientGuid::<Identity, OFFSET>,
            SetLocalPath: SetLocalPath::<Identity, OFFSET>,
            SetFileName: SetFileName::<Identity, OFFSET>,
            SetSource: SetSource::<Identity, OFFSET>,
            SetReferrer: SetReferrer::<Identity, OFFSET>,
            CheckPolicy: CheckPolicy::<Identity, OFFSET>,
            Prompt: Prompt::<Identity, OFFSET>,
            Save: Save::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
            SaveWithUI: SaveWithUI::<Identity, OFFSET>,
            ClearClientState: ClearClientState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAttachmentExecute as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IAttachmentExecute {}
windows_core::imp::define_interface!(IAutoComplete, IAutoComplete_Vtbl, 0x00bb2762_6a77_11d0_a535_00c04fd7d062);
windows_core::imp::interface_hierarchy!(IAutoComplete, windows_core::IUnknown);
impl IAutoComplete {
    pub unsafe fn Init<P1, P2, P3>(&self, hwndedit: super::super::Foundation::HWND, punkacl: P1, pwszregkeypath: P2, pwszquickcomplete: P3) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Init)(windows_core::Interface::as_raw(self), hwndedit, punkacl.param().abi(), pwszregkeypath.param().abi(), pwszquickcomplete.param().abi()).ok() }
    }
    pub unsafe fn Enable(&self, fenable: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Enable)(windows_core::Interface::as_raw(self), fenable.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutoComplete_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Init: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub Enable: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait IAutoComplete_Impl: windows_core::IUnknownImpl {
    fn Init(&self, hwndedit: super::super::Foundation::HWND, punkacl: windows_core::Ref<windows_core::IUnknown>, pwszregkeypath: &windows_core::PCWSTR, pwszquickcomplete: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Enable(&self, fenable: windows_core::BOOL) -> windows_core::Result<()>;
}
impl IAutoComplete_Vtbl {
    pub const fn new<Identity: IAutoComplete_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Init<Identity: IAutoComplete_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndedit: super::super::Foundation::HWND, punkacl: *mut core::ffi::c_void, pwszregkeypath: windows_core::PCWSTR, pwszquickcomplete: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAutoComplete_Impl::Init(this, core::mem::transmute_copy(&hwndedit), core::mem::transmute_copy(&punkacl), core::mem::transmute(&pwszregkeypath), core::mem::transmute(&pwszquickcomplete)).into()
            }
        }
        unsafe extern "system" fn Enable<Identity: IAutoComplete_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAutoComplete_Impl::Enable(this, core::mem::transmute_copy(&fenable)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Init: Init::<Identity, OFFSET>, Enable: Enable::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAutoComplete as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IAutoComplete {}
windows_core::imp::define_interface!(IAutoComplete2, IAutoComplete2_Vtbl, 0xeac04bc0_3791_11d2_bb95_0060977b464c);
impl core::ops::Deref for IAutoComplete2 {
    type Target = IAutoComplete;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IAutoComplete2, windows_core::IUnknown, IAutoComplete);
impl IAutoComplete2 {
    pub unsafe fn SetOptions(&self, dwflag: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOptions)(windows_core::Interface::as_raw(self), dwflag).ok() }
    }
    pub unsafe fn GetOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutoComplete2_Vtbl {
    pub base__: IAutoComplete_Vtbl,
    pub SetOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait IAutoComplete2_Impl: IAutoComplete_Impl {
    fn SetOptions(&self, dwflag: u32) -> windows_core::Result<()>;
    fn GetOptions(&self) -> windows_core::Result<u32>;
}
impl IAutoComplete2_Vtbl {
    pub const fn new<Identity: IAutoComplete2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetOptions<Identity: IAutoComplete2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflag: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAutoComplete2_Impl::SetOptions(this, core::mem::transmute_copy(&dwflag)).into()
            }
        }
        unsafe extern "system" fn GetOptions<Identity: IAutoComplete2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflag: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IAutoComplete2_Impl::GetOptions(this) {
                    Ok(ok__) => {
                        pdwflag.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IAutoComplete_Vtbl::new::<Identity, OFFSET>(), SetOptions: SetOptions::<Identity, OFFSET>, GetOptions: GetOptions::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAutoComplete2 as windows_core::Interface>::IID || iid == &<IAutoComplete as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IAutoComplete2 {}
windows_core::imp::define_interface!(IAutoCompleteDropDown, IAutoCompleteDropDown_Vtbl, 0x3cd141f4_3c6a_11d2_bcaa_00c04fd929db);
windows_core::imp::interface_hierarchy!(IAutoCompleteDropDown, windows_core::IUnknown);
impl IAutoCompleteDropDown {
    pub unsafe fn GetDropDownStatus(&self, pdwflags: *mut u32, ppwszstring: *mut windows_core::PWSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDropDownStatus)(windows_core::Interface::as_raw(self), pdwflags as _, ppwszstring as _).ok() }
    }
    pub unsafe fn ResetEnumerator(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetEnumerator)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IAutoCompleteDropDown_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetDropDownStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub ResetEnumerator: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IAutoCompleteDropDown_Impl: windows_core::IUnknownImpl {
    fn GetDropDownStatus(&self, pdwflags: *mut u32, ppwszstring: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn ResetEnumerator(&self) -> windows_core::Result<()>;
}
impl IAutoCompleteDropDown_Vtbl {
    pub const fn new<Identity: IAutoCompleteDropDown_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDropDownStatus<Identity: IAutoCompleteDropDown_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32, ppwszstring: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAutoCompleteDropDown_Impl::GetDropDownStatus(this, core::mem::transmute_copy(&pdwflags), core::mem::transmute_copy(&ppwszstring)).into()
            }
        }
        unsafe extern "system" fn ResetEnumerator<Identity: IAutoCompleteDropDown_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IAutoCompleteDropDown_Impl::ResetEnumerator(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDropDownStatus: GetDropDownStatus::<Identity, OFFSET>,
            ResetEnumerator: ResetEnumerator::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IAutoCompleteDropDown as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IAutoCompleteDropDown {}
windows_core::imp::define_interface!(IBandHost, IBandHost_Vtbl, 0xb9075c7c_d48e_403f_ab99_d6c77a1084ac);
windows_core::imp::interface_hierarchy!(IBandHost, windows_core::IUnknown);
impl IBandHost {
    pub unsafe fn CreateBand<T>(&self, rclsidband: *const windows_core::GUID, favailable: bool, fvisible: bool) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).CreateBand)(windows_core::Interface::as_raw(self), rclsidband, favailable.into(), fvisible.into(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn SetBandAvailability(&self, rclsidband: *const windows_core::GUID, favailable: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetBandAvailability)(windows_core::Interface::as_raw(self), rclsidband, favailable.into()).ok() }
    }
    pub unsafe fn DestroyBand(&self, rclsidband: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DestroyBand)(windows_core::Interface::as_raw(self), rclsidband).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IBandHost_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CreateBand: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, windows_core::BOOL, windows_core::BOOL, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetBandAvailability: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, windows_core::BOOL) -> windows_core::HRESULT,
    pub DestroyBand: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
}
pub trait IBandHost_Impl: windows_core::IUnknownImpl {
    fn CreateBand(&self, rclsidband: *const windows_core::GUID, favailable: windows_core::BOOL, fvisible: windows_core::BOOL, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn SetBandAvailability(&self, rclsidband: *const windows_core::GUID, favailable: windows_core::BOOL) -> windows_core::Result<()>;
    fn DestroyBand(&self, rclsidband: *const windows_core::GUID) -> windows_core::Result<()>;
}
impl IBandHost_Vtbl {
    pub const fn new<Identity: IBandHost_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CreateBand<Identity: IBandHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rclsidband: *const windows_core::GUID, favailable: windows_core::BOOL, fvisible: windows_core::BOOL, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBandHost_Impl::CreateBand(this, core::mem::transmute_copy(&rclsidband), core::mem::transmute_copy(&favailable), core::mem::transmute_copy(&fvisible), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn SetBandAvailability<Identity: IBandHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rclsidband: *const windows_core::GUID, favailable: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBandHost_Impl::SetBandAvailability(this, core::mem::transmute_copy(&rclsidband), core::mem::transmute_copy(&favailable)).into()
            }
        }
        unsafe extern "system" fn DestroyBand<Identity: IBandHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rclsidband: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBandHost_Impl::DestroyBand(this, core::mem::transmute_copy(&rclsidband)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateBand: CreateBand::<Identity, OFFSET>,
            SetBandAvailability: SetBandAvailability::<Identity, OFFSET>,
            DestroyBand: DestroyBand::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBandHost as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IBandHost {}
windows_core::imp::define_interface!(IBandSite, IBandSite_Vtbl, 0x4cf504b0_de96_11d0_8b3f_00a0c911e8e5);
windows_core::imp::interface_hierarchy!(IBandSite, windows_core::IUnknown);
impl IBandSite {
    pub unsafe fn AddBand<P0>(&self, punk: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddBand)(windows_core::Interface::as_raw(self), punk.param().abi()).ok() }
    }
    pub unsafe fn EnumBands(&self, uband: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumBands)(windows_core::Interface::as_raw(self), uband, &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn QueryBand(&self, dwbandid: u32, ppstb: Option<*mut Option<IDeskBand>>, pdwstate: Option<*mut u32>, pszname: Option<&mut [u16]>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).QueryBand)(windows_core::Interface::as_raw(self), dwbandid, ppstb.unwrap_or(core::mem::zeroed()) as _, pdwstate.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszname.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), pszname.as_deref().map_or(0, |slice| slice.len().try_into().unwrap())).ok() }
    }
    pub unsafe fn SetBandState(&self, dwbandid: u32, dwmask: u32, dwstate: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetBandState)(windows_core::Interface::as_raw(self), dwbandid, dwmask, dwstate).ok() }
    }
    pub unsafe fn RemoveBand(&self, dwbandid: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveBand)(windows_core::Interface::as_raw(self), dwbandid).ok() }
    }
    pub unsafe fn GetBandObject<T>(&self, dwbandid: u32) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetBandObject)(windows_core::Interface::as_raw(self), dwbandid, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn SetBandSiteInfo(&self, pbsinfo: *const BANDSITEINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetBandSiteInfo)(windows_core::Interface::as_raw(self), pbsinfo).ok() }
    }
    pub unsafe fn GetBandSiteInfo(&self, pbsinfo: *mut BANDSITEINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBandSiteInfo)(windows_core::Interface::as_raw(self), pbsinfo as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IBandSite_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AddBand: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumBands: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub QueryBand: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32, windows_core::PWSTR, i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    QueryBand: usize,
    pub SetBandState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    pub RemoveBand: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetBandObject: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetBandSiteInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *const BANDSITEINFO) -> windows_core::HRESULT,
    pub GetBandSiteInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut BANDSITEINFO) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IBandSite_Impl: windows_core::IUnknownImpl {
    fn AddBand(&self, punk: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn EnumBands(&self, uband: u32) -> windows_core::Result<u32>;
    fn QueryBand(&self, dwbandid: u32, ppstb: windows_core::OutRef<IDeskBand>, pdwstate: *mut u32, pszname: windows_core::PWSTR, cchname: i32) -> windows_core::Result<()>;
    fn SetBandState(&self, dwbandid: u32, dwmask: u32, dwstate: u32) -> windows_core::Result<()>;
    fn RemoveBand(&self, dwbandid: u32) -> windows_core::Result<()>;
    fn GetBandObject(&self, dwbandid: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn SetBandSiteInfo(&self, pbsinfo: *const BANDSITEINFO) -> windows_core::Result<()>;
    fn GetBandSiteInfo(&self, pbsinfo: *mut BANDSITEINFO) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl IBandSite_Vtbl {
    pub const fn new<Identity: IBandSite_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddBand<Identity: IBandSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBandSite_Impl::AddBand(this, core::mem::transmute_copy(&punk)).into()
            }
        }
        unsafe extern "system" fn EnumBands<Identity: IBandSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uband: u32, pdwbandid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBandSite_Impl::EnumBands(this, core::mem::transmute_copy(&uband)) {
                    Ok(ok__) => {
                        pdwbandid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn QueryBand<Identity: IBandSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32, ppstb: *mut *mut core::ffi::c_void, pdwstate: *mut u32, pszname: windows_core::PWSTR, cchname: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBandSite_Impl::QueryBand(this, core::mem::transmute_copy(&dwbandid), core::mem::transmute_copy(&ppstb), core::mem::transmute_copy(&pdwstate), core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cchname)).into()
            }
        }
        unsafe extern "system" fn SetBandState<Identity: IBandSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32, dwmask: u32, dwstate: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBandSite_Impl::SetBandState(this, core::mem::transmute_copy(&dwbandid), core::mem::transmute_copy(&dwmask), core::mem::transmute_copy(&dwstate)).into()
            }
        }
        unsafe extern "system" fn RemoveBand<Identity: IBandSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBandSite_Impl::RemoveBand(this, core::mem::transmute_copy(&dwbandid)).into()
            }
        }
        unsafe extern "system" fn GetBandObject<Identity: IBandSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBandSite_Impl::GetBandObject(this, core::mem::transmute_copy(&dwbandid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn SetBandSiteInfo<Identity: IBandSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbsinfo: *const BANDSITEINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBandSite_Impl::SetBandSiteInfo(this, core::mem::transmute_copy(&pbsinfo)).into()
            }
        }
        unsafe extern "system" fn GetBandSiteInfo<Identity: IBandSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbsinfo: *mut BANDSITEINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBandSite_Impl::GetBandSiteInfo(this, core::mem::transmute_copy(&pbsinfo)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddBand: AddBand::<Identity, OFFSET>,
            EnumBands: EnumBands::<Identity, OFFSET>,
            QueryBand: QueryBand::<Identity, OFFSET>,
            SetBandState: SetBandState::<Identity, OFFSET>,
            RemoveBand: RemoveBand::<Identity, OFFSET>,
            GetBandObject: GetBandObject::<Identity, OFFSET>,
            SetBandSiteInfo: SetBandSiteInfo::<Identity, OFFSET>,
            GetBandSiteInfo: GetBandSiteInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBandSite as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IBandSite {}
windows_core::imp::define_interface!(IBannerNotificationHandler, IBannerNotificationHandler_Vtbl, 0x8d7b2ba7_db05_46a8_823c_d2b6de08ee91);
windows_core::imp::interface_hierarchy!(IBannerNotificationHandler, windows_core::IUnknown);
impl IBannerNotificationHandler {
    pub unsafe fn OnBannerEvent(&self, notification: *const BANNER_NOTIFICATION) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnBannerEvent)(windows_core::Interface::as_raw(self), notification).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IBannerNotificationHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnBannerEvent: unsafe extern "system" fn(*mut core::ffi::c_void, *const BANNER_NOTIFICATION) -> windows_core::HRESULT,
}
pub trait IBannerNotificationHandler_Impl: windows_core::IUnknownImpl {
    fn OnBannerEvent(&self, notification: *const BANNER_NOTIFICATION) -> windows_core::Result<()>;
}
impl IBannerNotificationHandler_Vtbl {
    pub const fn new<Identity: IBannerNotificationHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnBannerEvent<Identity: IBannerNotificationHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, notification: *const BANNER_NOTIFICATION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBannerNotificationHandler_Impl::OnBannerEvent(this, core::mem::transmute_copy(&notification)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnBannerEvent: OnBannerEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBannerNotificationHandler as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IBannerNotificationHandler {}
windows_core::imp::define_interface!(IBanneredBar, IBanneredBar_Vtbl, 0x596a9a94_013e_11d1_8d34_00a0c90f2719);
windows_core::imp::interface_hierarchy!(IBanneredBar, windows_core::IUnknown);
impl IBanneredBar {
    pub unsafe fn SetIconSize(&self, iicon: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetIconSize)(windows_core::Interface::as_raw(self), iicon).ok() }
    }
    pub unsafe fn GetIconSize(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIconSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn SetBitmap(&self, hbitmap: super::super::Graphics::Gdi::HBITMAP) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetBitmap)(windows_core::Interface::as_raw(self), hbitmap).ok() }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetBitmap(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBitmap)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IBanneredBar_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetIconSize: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetIconSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub SetBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    SetBitmap: usize,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetBitmap: usize,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IBanneredBar_Impl: windows_core::IUnknownImpl {
    fn SetIconSize(&self, iicon: u32) -> windows_core::Result<()>;
    fn GetIconSize(&self) -> windows_core::Result<u32>;
    fn SetBitmap(&self, hbitmap: super::super::Graphics::Gdi::HBITMAP) -> windows_core::Result<()>;
    fn GetBitmap(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IBanneredBar_Vtbl {
    pub const fn new<Identity: IBanneredBar_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetIconSize<Identity: IBanneredBar_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iicon: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBanneredBar_Impl::SetIconSize(this, core::mem::transmute_copy(&iicon)).into()
            }
        }
        unsafe extern "system" fn GetIconSize<Identity: IBanneredBar_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, piicon: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBanneredBar_Impl::GetIconSize(this) {
                    Ok(ok__) => {
                        piicon.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetBitmap<Identity: IBanneredBar_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hbitmap: super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBanneredBar_Impl::SetBitmap(this, core::mem::transmute_copy(&hbitmap)).into()
            }
        }
        unsafe extern "system" fn GetBitmap<Identity: IBanneredBar_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phbitmap: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBanneredBar_Impl::GetBitmap(this) {
                    Ok(ok__) => {
                        phbitmap.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetIconSize: SetIconSize::<Identity, OFFSET>,
            GetIconSize: GetIconSize::<Identity, OFFSET>,
            SetBitmap: SetBitmap::<Identity, OFFSET>,
            GetBitmap: GetBitmap::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBanneredBar as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IBanneredBar {}
windows_core::imp::define_interface!(IBrowserFrameOptions, IBrowserFrameOptions_Vtbl, 0x10df43c8_1dbe_11d3_8b34_006097df5bd4);
windows_core::imp::interface_hierarchy!(IBrowserFrameOptions, windows_core::IUnknown);
impl IBrowserFrameOptions {
    pub unsafe fn GetFrameOptions(&self, dwmask: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFrameOptions)(windows_core::Interface::as_raw(self), dwmask, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IBrowserFrameOptions_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetFrameOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IBrowserFrameOptions_Impl: windows_core::IUnknownImpl {
    fn GetFrameOptions(&self, dwmask: u32) -> windows_core::Result<u32>;
}
impl IBrowserFrameOptions_Vtbl {
    pub const fn new<Identity: IBrowserFrameOptions_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetFrameOptions<Identity: IBrowserFrameOptions_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmask: u32, pdwoptions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserFrameOptions_Impl::GetFrameOptions(this, core::mem::transmute_copy(&dwmask)) {
                    Ok(ok__) => {
                        pdwoptions.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetFrameOptions: GetFrameOptions::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBrowserFrameOptions as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IBrowserFrameOptions {}
windows_core::imp::define_interface!(IBrowserService, IBrowserService_Vtbl, 0x02ba3b52_0547_11d1_b833_00c04fc9b31f);
windows_core::imp::interface_hierarchy!(IBrowserService, windows_core::IUnknown);
impl IBrowserService {
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn GetParentSite(&self) -> windows_core::Result<super::super::System::Ole::IOleInPlaceSite> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetParentSite)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn SetTitle<P0, P1>(&self, psv: P0, pszname: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTitle)(windows_core::Interface::as_raw(self), psv.param().abi(), pszname.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn GetTitle<P0>(&self, psv: P0, pszname: &mut [u16]) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetTitle)(windows_core::Interface::as_raw(self), psv.param().abi(), core::mem::transmute(pszname.as_ptr()), pszname.len().try_into().unwrap()).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn GetOleObject(&self) -> windows_core::Result<super::super::System::Ole::IOleObject> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOleObject)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetTravelLog(&self) -> windows_core::Result<ITravelLog> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTravelLog)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn ShowControlWindow(&self, id: u32, fshow: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowControlWindow)(windows_core::Interface::as_raw(self), id, fshow.into()).ok() }
    }
    pub unsafe fn IsControlWindowShown(&self, id: u32) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsControlWindowShown)(windows_core::Interface::as_raw(self), id, &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn IEGetDisplayName(&self, pidl: *const Common::ITEMIDLIST, pwszname: windows_core::PWSTR, uflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IEGetDisplayName)(windows_core::Interface::as_raw(self), pidl, core::mem::transmute(pwszname), uflags).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn IEParseDisplayName<P1>(&self, uicp: u32, pwszpath: P1) -> windows_core::Result<*mut Common::ITEMIDLIST>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IEParseDisplayName)(windows_core::Interface::as_raw(self), uicp, pwszpath.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DisplayParseError<P1>(&self, hres: windows_core::HRESULT, pwszpath: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).DisplayParseError)(windows_core::Interface::as_raw(self), hres, pwszpath.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn NavigateToPidl(&self, pidl: *const Common::ITEMIDLIST, grfhlnf: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).NavigateToPidl)(windows_core::Interface::as_raw(self), pidl, grfhlnf).ok() }
    }
    pub unsafe fn SetNavigateState(&self, bnstate: BNSTATE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNavigateState)(windows_core::Interface::as_raw(self), bnstate).ok() }
    }
    pub unsafe fn GetNavigateState(&self) -> windows_core::Result<BNSTATE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNavigateState)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn NotifyRedirect<P0>(&self, psv: P0, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<windows_core::BOOL>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).NotifyRedirect)(windows_core::Interface::as_raw(self), psv.param().abi(), pidl, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn UpdateWindowList(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateWindowList)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn UpdateBackForwardState(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateBackForwardState)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetFlags(&self, dwflags: u32, dwflagmask: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFlags)(windows_core::Interface::as_raw(self), dwflags, dwflagmask).ok() }
    }
    pub unsafe fn GetFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CanNavigateNow(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CanNavigateNow)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetPidl(&self) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPidl)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetReferrer(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetReferrer)(windows_core::Interface::as_raw(self), pidl).ok() }
    }
    pub unsafe fn GetBrowserIndex(&self) -> u32 {
        unsafe { (windows_core::Interface::vtable(self).GetBrowserIndex)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn GetBrowserByIndex(&self, dwid: u32) -> windows_core::Result<windows_core::IUnknown> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBrowserByIndex)(windows_core::Interface::as_raw(self), dwid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn GetHistoryObject(&self, ppole: *mut Option<super::super::System::Ole::IOleObject>, pstm: *mut Option<super::super::System::Com::IStream>, ppbc: *mut Option<super::super::System::Com::IBindCtx>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetHistoryObject)(windows_core::Interface::as_raw(self), core::mem::transmute(ppole), core::mem::transmute(pstm), core::mem::transmute(ppbc)).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn SetHistoryObject<P0>(&self, pole: P0, fislocalanchor: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Ole::IOleObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetHistoryObject)(windows_core::Interface::as_raw(self), pole.param().abi(), fislocalanchor.into()).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn CacheOLEServer<P0>(&self, pole: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Ole::IOleObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).CacheOLEServer)(windows_core::Interface::as_raw(self), pole.param().abi()).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn GetSetCodePage(&self, pvarin: *const super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSetCodePage)(windows_core::Interface::as_raw(self), core::mem::transmute(pvarin), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn OnHttpEquiv<P0>(&self, psv: P0, fdone: bool, pvarargin: *const super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OnHttpEquiv)(windows_core::Interface::as_raw(self), psv.param().abi(), fdone.into(), core::mem::transmute(pvarargin), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetPalette(&self) -> windows_core::Result<super::super::Graphics::Gdi::HPALETTE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPalette)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RegisterWindow(&self, fforceregister: bool, swc: ShellWindowTypeConstants) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RegisterWindow)(windows_core::Interface::as_raw(self), fforceregister.into(), swc).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IBrowserService_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Ole")]
    pub GetParentSite: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    GetParentSite: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub SetTitle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    SetTitle: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub GetTitle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PWSTR, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    GetTitle: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub GetOleObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    GetOleObject: usize,
    pub GetTravelLog: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ShowControlWindow: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::BOOL) -> windows_core::HRESULT,
    pub IsControlWindowShown: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub IEGetDisplayName: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, windows_core::PWSTR, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    IEGetDisplayName: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub IEParseDisplayName: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    IEParseDisplayName: usize,
    pub DisplayParseError: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::HRESULT, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub NavigateToPidl: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    NavigateToPidl: usize,
    pub SetNavigateState: unsafe extern "system" fn(*mut core::ffi::c_void, BNSTATE) -> windows_core::HRESULT,
    pub GetNavigateState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut BNSTATE) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
    pub NotifyRedirect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common")))]
    NotifyRedirect: usize,
    pub UpdateWindowList: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UpdateBackForwardState: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub CanNavigateNow: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetPidl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetPidl: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetReferrer: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetReferrer: usize,
    pub GetBrowserIndex: unsafe extern "system" fn(*mut core::ffi::c_void) -> u32,
    pub GetBrowserByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub GetHistoryObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    GetHistoryObject: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub SetHistoryObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    SetHistoryObject: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub CacheOLEServer: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    CacheOLEServer: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub GetSetCodePage: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::System::Variant::VARIANT, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    GetSetCodePage: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub OnHttpEquiv: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL, *const super::super::System::Variant::VARIANT, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    OnHttpEquiv: usize,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetPalette: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Graphics::Gdi::HPALETTE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetPalette: usize,
    pub RegisterWindow: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL, ShellWindowTypeConstants) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
pub trait IBrowserService_Impl: windows_core::IUnknownImpl {
    fn GetParentSite(&self) -> windows_core::Result<super::super::System::Ole::IOleInPlaceSite>;
    fn SetTitle(&self, psv: windows_core::Ref<IShellView>, pszname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetTitle(&self, psv: windows_core::Ref<IShellView>, pszname: windows_core::PWSTR, cchname: u32) -> windows_core::Result<()>;
    fn GetOleObject(&self) -> windows_core::Result<super::super::System::Ole::IOleObject>;
    fn GetTravelLog(&self) -> windows_core::Result<ITravelLog>;
    fn ShowControlWindow(&self, id: u32, fshow: windows_core::BOOL) -> windows_core::Result<()>;
    fn IsControlWindowShown(&self, id: u32) -> windows_core::Result<windows_core::BOOL>;
    fn IEGetDisplayName(&self, pidl: *const Common::ITEMIDLIST, pwszname: windows_core::PWSTR, uflags: u32) -> windows_core::Result<()>;
    fn IEParseDisplayName(&self, uicp: u32, pwszpath: &windows_core::PCWSTR) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn DisplayParseError(&self, hres: windows_core::HRESULT, pwszpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn NavigateToPidl(&self, pidl: *const Common::ITEMIDLIST, grfhlnf: u32) -> windows_core::Result<()>;
    fn SetNavigateState(&self, bnstate: BNSTATE) -> windows_core::Result<()>;
    fn GetNavigateState(&self) -> windows_core::Result<BNSTATE>;
    fn NotifyRedirect(&self, psv: windows_core::Ref<IShellView>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<windows_core::BOOL>;
    fn UpdateWindowList(&self) -> windows_core::Result<()>;
    fn UpdateBackForwardState(&self) -> windows_core::Result<()>;
    fn SetFlags(&self, dwflags: u32, dwflagmask: u32) -> windows_core::Result<()>;
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn CanNavigateNow(&self) -> windows_core::Result<()>;
    fn GetPidl(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn SetReferrer(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetBrowserIndex(&self) -> u32;
    fn GetBrowserByIndex(&self, dwid: u32) -> windows_core::Result<windows_core::IUnknown>;
    fn GetHistoryObject(&self, ppole: windows_core::OutRef<super::super::System::Ole::IOleObject>, pstm: windows_core::OutRef<super::super::System::Com::IStream>, ppbc: windows_core::OutRef<super::super::System::Com::IBindCtx>) -> windows_core::Result<()>;
    fn SetHistoryObject(&self, pole: windows_core::Ref<super::super::System::Ole::IOleObject>, fislocalanchor: windows_core::BOOL) -> windows_core::Result<()>;
    fn CacheOLEServer(&self, pole: windows_core::Ref<super::super::System::Ole::IOleObject>) -> windows_core::Result<()>;
    fn GetSetCodePage(&self, pvarin: *const super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn OnHttpEquiv(&self, psv: windows_core::Ref<IShellView>, fdone: windows_core::BOOL, pvarargin: *const super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn GetPalette(&self) -> windows_core::Result<super::super::Graphics::Gdi::HPALETTE>;
    fn RegisterWindow(&self, fforceregister: windows_core::BOOL, swc: ShellWindowTypeConstants) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
impl IBrowserService_Vtbl {
    pub const fn new<Identity: IBrowserService_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetParentSite<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppipsite: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::GetParentSite(this) {
                    Ok(ok__) => {
                        ppipsite.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetTitle<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void, pszname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::SetTitle(this, core::mem::transmute_copy(&psv), core::mem::transmute(&pszname)).into()
            }
        }
        unsafe extern "system" fn GetTitle<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void, pszname: windows_core::PWSTR, cchname: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::GetTitle(this, core::mem::transmute_copy(&psv), core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cchname)).into()
            }
        }
        unsafe extern "system" fn GetOleObject<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppobjv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::GetOleObject(this) {
                    Ok(ok__) => {
                        ppobjv.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTravelLog<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pptl: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::GetTravelLog(this) {
                    Ok(ok__) => {
                        pptl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ShowControlWindow<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, fshow: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::ShowControlWindow(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&fshow)).into()
            }
        }
        unsafe extern "system" fn IsControlWindowShown<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, pfshown: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::IsControlWindowShown(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        pfshown.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IEGetDisplayName<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pwszname: windows_core::PWSTR, uflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::IEGetDisplayName(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&pwszname), core::mem::transmute_copy(&uflags)).into()
            }
        }
        unsafe extern "system" fn IEParseDisplayName<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uicp: u32, pwszpath: windows_core::PCWSTR, ppidlout: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::IEParseDisplayName(this, core::mem::transmute_copy(&uicp), core::mem::transmute(&pwszpath)) {
                    Ok(ok__) => {
                        ppidlout.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DisplayParseError<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hres: windows_core::HRESULT, pwszpath: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::DisplayParseError(this, core::mem::transmute_copy(&hres), core::mem::transmute(&pwszpath)).into()
            }
        }
        unsafe extern "system" fn NavigateToPidl<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, grfhlnf: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::NavigateToPidl(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&grfhlnf)).into()
            }
        }
        unsafe extern "system" fn SetNavigateState<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bnstate: BNSTATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::SetNavigateState(this, core::mem::transmute_copy(&bnstate)).into()
            }
        }
        unsafe extern "system" fn GetNavigateState<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbnstate: *mut BNSTATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::GetNavigateState(this) {
                    Ok(ok__) => {
                        pbnstate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn NotifyRedirect<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pfdidbrowse: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::NotifyRedirect(this, core::mem::transmute_copy(&psv), core::mem::transmute_copy(&pidl)) {
                    Ok(ok__) => {
                        pfdidbrowse.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn UpdateWindowList<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::UpdateWindowList(this).into()
            }
        }
        unsafe extern "system" fn UpdateBackForwardState<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::UpdateBackForwardState(this).into()
            }
        }
        unsafe extern "system" fn SetFlags<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, dwflagmask: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::SetFlags(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&dwflagmask)).into()
            }
        }
        unsafe extern "system" fn GetFlags<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::GetFlags(this) {
                    Ok(ok__) => {
                        pdwflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CanNavigateNow<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::CanNavigateNow(this).into()
            }
        }
        unsafe extern "system" fn GetPidl<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::GetPidl(this) {
                    Ok(ok__) => {
                        ppidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetReferrer<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::SetReferrer(this, core::mem::transmute_copy(&pidl)).into()
            }
        }
        unsafe extern "system" fn GetBrowserIndex<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::GetBrowserIndex(this)
            }
        }
        unsafe extern "system" fn GetBrowserByIndex<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwid: u32, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::GetBrowserByIndex(this, core::mem::transmute_copy(&dwid)) {
                    Ok(ok__) => {
                        ppunk.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetHistoryObject<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppole: *mut *mut core::ffi::c_void, pstm: *mut *mut core::ffi::c_void, ppbc: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::GetHistoryObject(this, core::mem::transmute_copy(&ppole), core::mem::transmute_copy(&pstm), core::mem::transmute_copy(&ppbc)).into()
            }
        }
        unsafe extern "system" fn SetHistoryObject<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pole: *mut core::ffi::c_void, fislocalanchor: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::SetHistoryObject(this, core::mem::transmute_copy(&pole), core::mem::transmute_copy(&fislocalanchor)).into()
            }
        }
        unsafe extern "system" fn CacheOLEServer<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pole: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::CacheOLEServer(this, core::mem::transmute_copy(&pole)).into()
            }
        }
        unsafe extern "system" fn GetSetCodePage<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarin: *const super::super::System::Variant::VARIANT, pvarout: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::GetSetCodePage(this, core::mem::transmute_copy(&pvarin)) {
                    Ok(ok__) => {
                        pvarout.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OnHttpEquiv<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void, fdone: windows_core::BOOL, pvarargin: *const super::super::System::Variant::VARIANT, pvarargout: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::OnHttpEquiv(this, core::mem::transmute_copy(&psv), core::mem::transmute_copy(&fdone), core::mem::transmute_copy(&pvarargin)) {
                    Ok(ok__) => {
                        pvarargout.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPalette<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hpal: *mut super::super::Graphics::Gdi::HPALETTE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService_Impl::GetPalette(this) {
                    Ok(ok__) => {
                        hpal.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RegisterWindow<Identity: IBrowserService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fforceregister: windows_core::BOOL, swc: ShellWindowTypeConstants) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService_Impl::RegisterWindow(this, core::mem::transmute_copy(&fforceregister), core::mem::transmute_copy(&swc)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetParentSite: GetParentSite::<Identity, OFFSET>,
            SetTitle: SetTitle::<Identity, OFFSET>,
            GetTitle: GetTitle::<Identity, OFFSET>,
            GetOleObject: GetOleObject::<Identity, OFFSET>,
            GetTravelLog: GetTravelLog::<Identity, OFFSET>,
            ShowControlWindow: ShowControlWindow::<Identity, OFFSET>,
            IsControlWindowShown: IsControlWindowShown::<Identity, OFFSET>,
            IEGetDisplayName: IEGetDisplayName::<Identity, OFFSET>,
            IEParseDisplayName: IEParseDisplayName::<Identity, OFFSET>,
            DisplayParseError: DisplayParseError::<Identity, OFFSET>,
            NavigateToPidl: NavigateToPidl::<Identity, OFFSET>,
            SetNavigateState: SetNavigateState::<Identity, OFFSET>,
            GetNavigateState: GetNavigateState::<Identity, OFFSET>,
            NotifyRedirect: NotifyRedirect::<Identity, OFFSET>,
            UpdateWindowList: UpdateWindowList::<Identity, OFFSET>,
            UpdateBackForwardState: UpdateBackForwardState::<Identity, OFFSET>,
            SetFlags: SetFlags::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            CanNavigateNow: CanNavigateNow::<Identity, OFFSET>,
            GetPidl: GetPidl::<Identity, OFFSET>,
            SetReferrer: SetReferrer::<Identity, OFFSET>,
            GetBrowserIndex: GetBrowserIndex::<Identity, OFFSET>,
            GetBrowserByIndex: GetBrowserByIndex::<Identity, OFFSET>,
            GetHistoryObject: GetHistoryObject::<Identity, OFFSET>,
            SetHistoryObject: SetHistoryObject::<Identity, OFFSET>,
            CacheOLEServer: CacheOLEServer::<Identity, OFFSET>,
            GetSetCodePage: GetSetCodePage::<Identity, OFFSET>,
            OnHttpEquiv: OnHttpEquiv::<Identity, OFFSET>,
            GetPalette: GetPalette::<Identity, OFFSET>,
            RegisterWindow: RegisterWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBrowserService as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IBrowserService {}
windows_core::imp::define_interface!(IBrowserService2, IBrowserService2_Vtbl, 0x68bd21cc_438b_11d2_a560_00a0c92dbfe8);
impl core::ops::Deref for IBrowserService2 {
    type Target = IBrowserService;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IBrowserService2, windows_core::IUnknown, IBrowserService);
impl IBrowserService2 {
    pub unsafe fn WndProcBS(&self, hwnd: super::super::Foundation::HWND, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT {
        unsafe { (windows_core::Interface::vtable(self).WndProcBS)(windows_core::Interface::as_raw(self), hwnd, umsg, wparam, lparam) }
    }
    pub unsafe fn SetAsDefFolderSettings(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAsDefFolderSettings)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetViewRect(&self) -> windows_core::Result<super::super::Foundation::RECT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetViewRect)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OnSize(&self, wparam: super::super::Foundation::WPARAM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnSize)(windows_core::Interface::as_raw(self), wparam).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn OnCreate(&self, pcs: *const super::WindowsAndMessaging::CREATESTRUCTW) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnCreate)(windows_core::Interface::as_raw(self), pcs).ok() }
    }
    pub unsafe fn OnCommand(&self, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT {
        unsafe { (windows_core::Interface::vtable(self).OnCommand)(windows_core::Interface::as_raw(self), wparam, lparam) }
    }
    pub unsafe fn OnDestroy(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnDestroy)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn OnNotify(&self, pnm: *const super::Controls::NMHDR) -> super::super::Foundation::LRESULT {
        unsafe { (windows_core::Interface::vtable(self).OnNotify)(windows_core::Interface::as_raw(self), pnm) }
    }
    pub unsafe fn OnSetFocus(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnSetFocus)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn OnFrameWindowActivateBS(&self, factive: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnFrameWindowActivateBS)(windows_core::Interface::as_raw(self), factive.into()).ok() }
    }
    pub unsafe fn ReleaseShellView(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReleaseShellView)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ActivatePendingView(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ActivatePendingView)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn CreateViewWindow<P0, P1>(&self, psvnew: P0, psvold: P1, prcview: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::HWND>
    where
        P0: windows_core::Param<IShellView>,
        P1: windows_core::Param<IShellView>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateViewWindow)(windows_core::Interface::as_raw(self), psvnew.param().abi(), psvold.param().abi(), prcview, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CreateBrowserPropSheetExt(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CreateBrowserPropSheetExt)(windows_core::Interface::as_raw(self), riid, ppv as _).ok() }
    }
    pub unsafe fn GetViewWindow(&self) -> windows_core::Result<super::super::Foundation::HWND> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetViewWindow)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn GetBaseBrowserData(&self) -> windows_core::Result<*mut BASEBROWSERDATALH> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBaseBrowserData)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn PutBaseBrowserData(&self) -> *mut BASEBROWSERDATALH {
        unsafe { (windows_core::Interface::vtable(self).PutBaseBrowserData)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn InitializeTravelLog<P0>(&self, ptl: P0, dw: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITravelLog>,
    {
        unsafe { (windows_core::Interface::vtable(self).InitializeTravelLog)(windows_core::Interface::as_raw(self), ptl.param().abi(), dw).ok() }
    }
    pub unsafe fn SetTopBrowser(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTopBrowser)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Offline(&self, icmd: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Offline)(windows_core::Interface::as_raw(self), icmd).ok() }
    }
    pub unsafe fn AllowViewResize(&self, f: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AllowViewResize)(windows_core::Interface::as_raw(self), f.into()).ok() }
    }
    pub unsafe fn SetActivateState(&self, u: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetActivateState)(windows_core::Interface::as_raw(self), u).ok() }
    }
    pub unsafe fn UpdateSecureLockIcon(&self, esecurelock: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateSecureLockIcon)(windows_core::Interface::as_raw(self), esecurelock).ok() }
    }
    pub unsafe fn InitializeDownloadManager(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InitializeDownloadManager)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn InitializeTransitionSite(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InitializeTransitionSite)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn _Initialize<P1>(&self, hwnd: super::super::Foundation::HWND, pauto: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self)._Initialize)(windows_core::Interface::as_raw(self), hwnd, pauto.param().abi()).ok() }
    }
    pub unsafe fn _CancelPendingNavigationAsync(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._CancelPendingNavigationAsync)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn _CancelPendingView(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._CancelPendingView)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn _MaySaveChanges(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._MaySaveChanges)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn _PauseOrResumeView(&self, fpaused: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._PauseOrResumeView)(windows_core::Interface::as_raw(self), fpaused.into()).ok() }
    }
    pub unsafe fn _DisableModeless(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._DisableModeless)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn _NavigateToPidl2(&self, pidl: *const Common::ITEMIDLIST, grfhlnf: u32, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._NavigateToPidl2)(windows_core::Interface::as_raw(self), pidl, grfhlnf, dwflags).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn _TryShell2Rename<P0>(&self, psv: P0, pidlnew: *const Common::ITEMIDLIST) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self)._TryShell2Rename)(windows_core::Interface::as_raw(self), psv.param().abi(), pidlnew).ok() }
    }
    pub unsafe fn _SwitchActivationNow(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._SwitchActivationNow)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn _ExecChildren<P0>(&self, punkbar: P0, fbroadcast: bool, pguidcmdgroup: Option<*const windows_core::GUID>, ncmdid: u32, ncmdexecopt: u32, pvarargin: Option<*const super::super::System::Variant::VARIANT>, pvarargout: Option<*mut super::super::System::Variant::VARIANT>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self)._ExecChildren)(windows_core::Interface::as_raw(self), punkbar.param().abi(), fbroadcast.into(), pguidcmdgroup.unwrap_or(core::mem::zeroed()) as _, ncmdid, ncmdexecopt, pvarargin.unwrap_or(core::mem::zeroed()) as _, pvarargout.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn _SendChildren(&self, hwndbar: super::super::Foundation::HWND, fbroadcast: bool, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._SendChildren)(windows_core::Interface::as_raw(self), hwndbar, fbroadcast.into(), umsg, wparam, lparam).ok() }
    }
    pub unsafe fn GetFolderSetData(&self, pfsd: *mut FOLDERSETDATA) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFolderSetData)(windows_core::Interface::as_raw(self), pfsd as _).ok() }
    }
    pub unsafe fn _OnFocusChange(&self, itb: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._OnFocusChange)(windows_core::Interface::as_raw(self), itb).ok() }
    }
    pub unsafe fn v_ShowHideChildWindows(&self, fchildonly: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).v_ShowHideChildWindows)(windows_core::Interface::as_raw(self), fchildonly.into()).ok() }
    }
    pub unsafe fn _get_itbLastFocus(&self) -> u32 {
        unsafe { (windows_core::Interface::vtable(self)._get_itbLastFocus)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn _put_itbLastFocus(&self, itblastfocus: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._put_itbLastFocus)(windows_core::Interface::as_raw(self), itblastfocus).ok() }
    }
    pub unsafe fn _UIActivateView(&self, ustate: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._UIActivateView)(windows_core::Interface::as_raw(self), ustate).ok() }
    }
    pub unsafe fn _GetViewBorderRect(&self, prc: *mut super::super::Foundation::RECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._GetViewBorderRect)(windows_core::Interface::as_raw(self), prc as _).ok() }
    }
    pub unsafe fn _UpdateViewRectSize(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._UpdateViewRectSize)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn _ResizeNextBorder(&self, itb: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._ResizeNextBorder)(windows_core::Interface::as_raw(self), itb).ok() }
    }
    pub unsafe fn _ResizeView(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._ResizeView)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn _GetEffectiveClientArea(&self, lprectborder: *mut super::super::Foundation::RECT, hmon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._GetEffectiveClientArea)(windows_core::Interface::as_raw(self), lprectborder as _, hmon).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn v_GetViewStream<P2>(&self, pidl: *mut Common::ITEMIDLIST, grfmode: u32, pwszname: P2) -> Option<super::super::System::Com::IStream>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).v_GetViewStream)(windows_core::Interface::as_raw(self), pidl as _, grfmode, pwszname.param().abi()) }
    }
    pub unsafe fn ForwardViewMsg(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT {
        unsafe { (windows_core::Interface::vtable(self).ForwardViewMsg)(windows_core::Interface::as_raw(self), umsg, wparam, lparam) }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn SetAcceleratorMenu(&self, hacc: super::WindowsAndMessaging::HACCEL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAcceleratorMenu)(windows_core::Interface::as_raw(self), hacc).ok() }
    }
    pub unsafe fn _GetToolbarCount(&self) -> i32 {
        unsafe { (windows_core::Interface::vtable(self)._GetToolbarCount)(windows_core::Interface::as_raw(self)) }
    }
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Ole"))]
    pub unsafe fn _GetToolbarItem(&self, itb: i32) -> *mut TOOLBARITEM {
        unsafe { (windows_core::Interface::vtable(self)._GetToolbarItem)(windows_core::Interface::as_raw(self), itb) }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn _SaveToolbars<P0>(&self, pstm: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IStream>,
    {
        unsafe { (windows_core::Interface::vtable(self)._SaveToolbars)(windows_core::Interface::as_raw(self), pstm.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn _LoadToolbars<P0>(&self, pstm: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IStream>,
    {
        unsafe { (windows_core::Interface::vtable(self)._LoadToolbars)(windows_core::Interface::as_raw(self), pstm.param().abi()).ok() }
    }
    pub unsafe fn _CloseAndReleaseToolbars(&self, fclose: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._CloseAndReleaseToolbars)(windows_core::Interface::as_raw(self), fclose.into()).ok() }
    }
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Ole", feature = "Win32_UI_WindowsAndMessaging"))]
    pub unsafe fn v_MayGetNextToolbarFocus(&self, lpmsg: *const super::WindowsAndMessaging::MSG, itbnext: u32, citb: i32, pptbi: *mut *mut TOOLBARITEM, phwnd: *mut super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).v_MayGetNextToolbarFocus)(windows_core::Interface::as_raw(self), lpmsg, itbnext, citb, pptbi as _, phwnd as _).ok() }
    }
    pub unsafe fn _ResizeNextBorderHelper(&self, itb: u32, busehmonitor: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._ResizeNextBorderHelper)(windows_core::Interface::as_raw(self), itb, busehmonitor.into()).ok() }
    }
    pub unsafe fn _FindTBar<P0>(&self, punksrc: P0) -> u32
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self)._FindTBar)(windows_core::Interface::as_raw(self), punksrc.param().abi()) }
    }
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Ole", feature = "Win32_UI_WindowsAndMessaging"))]
    pub unsafe fn _SetFocus(&self, ptbi: *const TOOLBARITEM, hwnd: super::super::Foundation::HWND, lpmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._SetFocus)(windows_core::Interface::as_raw(self), core::mem::transmute(ptbi), hwnd, lpmsg).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn v_MayTranslateAccelerator(&self, pmsg: *mut super::WindowsAndMessaging::MSG) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).v_MayTranslateAccelerator)(windows_core::Interface::as_raw(self), pmsg as _).ok() }
    }
    pub unsafe fn _GetBorderDWHelper<P0>(&self, punksrc: P0, lprectborder: *mut super::super::Foundation::RECT, busehmonitor: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self)._GetBorderDWHelper)(windows_core::Interface::as_raw(self), punksrc.param().abi(), lprectborder as _, busehmonitor.into()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn v_CheckZoneCrossing(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).v_CheckZoneCrossing)(windows_core::Interface::as_raw(self), pidl).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IBrowserService2_Vtbl {
    pub base__: IBrowserService_Vtbl,
    pub WndProcBS: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT,
    pub SetAsDefFolderSettings: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetViewRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub OnSize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::WPARAM) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub OnCreate: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::CREATESTRUCTW) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    OnCreate: usize,
    pub OnCommand: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT,
    pub OnDestroy: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Controls")]
    pub OnNotify: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::Controls::NMHDR) -> super::super::Foundation::LRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    OnNotify: usize,
    pub OnSetFocus: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnFrameWindowActivateBS: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub ReleaseShellView: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ActivatePendingView: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub CreateViewWindow: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::Foundation::RECT, *mut super::super::Foundation::HWND) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    CreateViewWindow: usize,
    pub CreateBrowserPropSheetExt: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetViewWindow: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::HWND) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
    pub GetBaseBrowserData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut BASEBROWSERDATALH) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common")))]
    GetBaseBrowserData: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
    pub PutBaseBrowserData: unsafe extern "system" fn(*mut core::ffi::c_void) -> *mut BASEBROWSERDATALH,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common")))]
    PutBaseBrowserData: usize,
    pub InitializeTravelLog: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetTopBrowser: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Offline: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub AllowViewResize: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub SetActivateState: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub UpdateSecureLockIcon: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub InitializeDownloadManager: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub InitializeTransitionSite: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub _Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub _CancelPendingNavigationAsync: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub _CancelPendingView: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub _MaySaveChanges: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub _PauseOrResumeView: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub _DisableModeless: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub _NavigateToPidl2: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, u32, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    _NavigateToPidl2: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
    pub _TryShell2Rename: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common")))]
    _TryShell2Rename: usize,
    pub _SwitchActivationNow: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub _ExecChildren: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL, *const windows_core::GUID, u32, u32, *const super::super::System::Variant::VARIANT, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    _ExecChildren: usize,
    pub _SendChildren: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, windows_core::BOOL, u32, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM) -> windows_core::HRESULT,
    pub GetFolderSetData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut FOLDERSETDATA) -> windows_core::HRESULT,
    pub _OnFocusChange: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub v_ShowHideChildWindows: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub _get_itbLastFocus: unsafe extern "system" fn(*mut core::ffi::c_void) -> u32,
    pub _put_itbLastFocus: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub _UIActivateView: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub _GetViewBorderRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub _UpdateViewRectSize: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub _ResizeNextBorder: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub _ResizeView: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub _GetEffectiveClientArea: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::RECT, super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    _GetEffectiveClientArea: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub v_GetViewStream: unsafe extern "system" fn(*mut core::ffi::c_void, *mut Common::ITEMIDLIST, u32, windows_core::PCWSTR) -> Option<super::super::System::Com::IStream>,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common")))]
    v_GetViewStream: usize,
    pub ForwardViewMsg: unsafe extern "system" fn(*mut core::ffi::c_void, u32, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub SetAcceleratorMenu: unsafe extern "system" fn(*mut core::ffi::c_void, super::WindowsAndMessaging::HACCEL) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    SetAcceleratorMenu: usize,
    pub _GetToolbarCount: unsafe extern "system" fn(*mut core::ffi::c_void) -> i32,
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Ole"))]
    pub _GetToolbarItem: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> *mut TOOLBARITEM,
    #[cfg(not(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Ole")))]
    _GetToolbarItem: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub _SaveToolbars: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    _SaveToolbars: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub _LoadToolbars: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    _LoadToolbars: usize,
    pub _CloseAndReleaseToolbars: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Ole", feature = "Win32_UI_WindowsAndMessaging"))]
    pub v_MayGetNextToolbarFocus: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::MSG, u32, i32, *mut *mut TOOLBARITEM, *mut super::super::Foundation::HWND) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Ole", feature = "Win32_UI_WindowsAndMessaging")))]
    v_MayGetNextToolbarFocus: usize,
    pub _ResizeNextBorderHelper: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::BOOL) -> windows_core::HRESULT,
    pub _FindTBar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> u32,
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Ole", feature = "Win32_UI_WindowsAndMessaging"))]
    pub _SetFocus: unsafe extern "system" fn(*mut core::ffi::c_void, *const TOOLBARITEM, super::super::Foundation::HWND, *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Ole", feature = "Win32_UI_WindowsAndMessaging")))]
    _SetFocus: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub v_MayTranslateAccelerator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::WindowsAndMessaging::MSG) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    v_MayTranslateAccelerator: usize,
    pub _GetBorderDWHelper: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::Foundation::RECT, windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub v_CheckZoneCrossing: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    v_CheckZoneCrossing: usize,
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IBrowserService2_Impl: IBrowserService_Impl {
    fn WndProcBS(&self, hwnd: super::super::Foundation::HWND, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT;
    fn SetAsDefFolderSettings(&self) -> windows_core::Result<()>;
    fn GetViewRect(&self) -> windows_core::Result<super::super::Foundation::RECT>;
    fn OnSize(&self, wparam: super::super::Foundation::WPARAM) -> windows_core::Result<()>;
    fn OnCreate(&self, pcs: *const super::WindowsAndMessaging::CREATESTRUCTW) -> windows_core::Result<()>;
    fn OnCommand(&self, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT;
    fn OnDestroy(&self) -> windows_core::Result<()>;
    fn OnNotify(&self, pnm: *const super::Controls::NMHDR) -> super::super::Foundation::LRESULT;
    fn OnSetFocus(&self) -> windows_core::Result<()>;
    fn OnFrameWindowActivateBS(&self, factive: windows_core::BOOL) -> windows_core::Result<()>;
    fn ReleaseShellView(&self) -> windows_core::Result<()>;
    fn ActivatePendingView(&self) -> windows_core::Result<()>;
    fn CreateViewWindow(&self, psvnew: windows_core::Ref<IShellView>, psvold: windows_core::Ref<IShellView>, prcview: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::HWND>;
    fn CreateBrowserPropSheetExt(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetViewWindow(&self) -> windows_core::Result<super::super::Foundation::HWND>;
    fn GetBaseBrowserData(&self) -> windows_core::Result<*mut BASEBROWSERDATALH>;
    fn PutBaseBrowserData(&self) -> *mut BASEBROWSERDATALH;
    fn InitializeTravelLog(&self, ptl: windows_core::Ref<ITravelLog>, dw: u32) -> windows_core::Result<()>;
    fn SetTopBrowser(&self) -> windows_core::Result<()>;
    fn Offline(&self, icmd: i32) -> windows_core::Result<()>;
    fn AllowViewResize(&self, f: windows_core::BOOL) -> windows_core::Result<()>;
    fn SetActivateState(&self, u: u32) -> windows_core::Result<()>;
    fn UpdateSecureLockIcon(&self, esecurelock: i32) -> windows_core::Result<()>;
    fn InitializeDownloadManager(&self) -> windows_core::Result<()>;
    fn InitializeTransitionSite(&self) -> windows_core::Result<()>;
    fn _Initialize(&self, hwnd: super::super::Foundation::HWND, pauto: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn _CancelPendingNavigationAsync(&self) -> windows_core::Result<()>;
    fn _CancelPendingView(&self) -> windows_core::Result<()>;
    fn _MaySaveChanges(&self) -> windows_core::Result<()>;
    fn _PauseOrResumeView(&self, fpaused: windows_core::BOOL) -> windows_core::Result<()>;
    fn _DisableModeless(&self) -> windows_core::Result<()>;
    fn _NavigateToPidl2(&self, pidl: *const Common::ITEMIDLIST, grfhlnf: u32, dwflags: u32) -> windows_core::Result<()>;
    fn _TryShell2Rename(&self, psv: windows_core::Ref<IShellView>, pidlnew: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn _SwitchActivationNow(&self) -> windows_core::Result<()>;
    fn _ExecChildren(&self, punkbar: windows_core::Ref<windows_core::IUnknown>, fbroadcast: windows_core::BOOL, pguidcmdgroup: *const windows_core::GUID, ncmdid: u32, ncmdexecopt: u32, pvarargin: *const super::super::System::Variant::VARIANT, pvarargout: *mut super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn _SendChildren(&self, hwndbar: super::super::Foundation::HWND, fbroadcast: windows_core::BOOL, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
    fn GetFolderSetData(&self, pfsd: *mut FOLDERSETDATA) -> windows_core::Result<()>;
    fn _OnFocusChange(&self, itb: u32) -> windows_core::Result<()>;
    fn v_ShowHideChildWindows(&self, fchildonly: windows_core::BOOL) -> windows_core::Result<()>;
    fn _get_itbLastFocus(&self) -> u32;
    fn _put_itbLastFocus(&self, itblastfocus: u32) -> windows_core::Result<()>;
    fn _UIActivateView(&self, ustate: u32) -> windows_core::Result<()>;
    fn _GetViewBorderRect(&self, prc: *mut super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn _UpdateViewRectSize(&self) -> windows_core::Result<()>;
    fn _ResizeNextBorder(&self, itb: u32) -> windows_core::Result<()>;
    fn _ResizeView(&self) -> windows_core::Result<()>;
    fn _GetEffectiveClientArea(&self, lprectborder: *mut super::super::Foundation::RECT, hmon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()>;
    fn v_GetViewStream(&self, pidl: *mut Common::ITEMIDLIST, grfmode: u32, pwszname: &windows_core::PCWSTR) -> Option<super::super::System::Com::IStream>;
    fn ForwardViewMsg(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT;
    fn SetAcceleratorMenu(&self, hacc: super::WindowsAndMessaging::HACCEL) -> windows_core::Result<()>;
    fn _GetToolbarCount(&self) -> i32;
    fn _GetToolbarItem(&self, itb: i32) -> *mut TOOLBARITEM;
    fn _SaveToolbars(&self, pstm: windows_core::Ref<super::super::System::Com::IStream>) -> windows_core::Result<()>;
    fn _LoadToolbars(&self, pstm: windows_core::Ref<super::super::System::Com::IStream>) -> windows_core::Result<()>;
    fn _CloseAndReleaseToolbars(&self, fclose: windows_core::BOOL) -> windows_core::Result<()>;
    fn v_MayGetNextToolbarFocus(&self, lpmsg: *const super::WindowsAndMessaging::MSG, itbnext: u32, citb: i32, pptbi: *mut *mut TOOLBARITEM, phwnd: *mut super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn _ResizeNextBorderHelper(&self, itb: u32, busehmonitor: windows_core::BOOL) -> windows_core::Result<()>;
    fn _FindTBar(&self, punksrc: windows_core::Ref<windows_core::IUnknown>) -> u32;
    fn _SetFocus(&self, ptbi: *const TOOLBARITEM, hwnd: super::super::Foundation::HWND, lpmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
    fn v_MayTranslateAccelerator(&self, pmsg: *mut super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
    fn _GetBorderDWHelper(&self, punksrc: windows_core::Ref<windows_core::IUnknown>, lprectborder: *mut super::super::Foundation::RECT, busehmonitor: windows_core::BOOL) -> windows_core::Result<()>;
    fn v_CheckZoneCrossing(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IBrowserService2_Vtbl {
    pub const fn new<Identity: IBrowserService2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn WndProcBS<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::WndProcBS(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam))
            }
        }
        unsafe extern "system" fn SetAsDefFolderSettings<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::SetAsDefFolderSettings(this).into()
            }
        }
        unsafe extern "system" fn GetViewRect<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prc: *mut super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService2_Impl::GetViewRect(this) {
                    Ok(ok__) => {
                        prc.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OnSize<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, wparam: super::super::Foundation::WPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::OnSize(this, core::mem::transmute_copy(&wparam)).into()
            }
        }
        unsafe extern "system" fn OnCreate<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcs: *const super::WindowsAndMessaging::CREATESTRUCTW) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::OnCreate(this, core::mem::transmute_copy(&pcs)).into()
            }
        }
        unsafe extern "system" fn OnCommand<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::OnCommand(this, core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam))
            }
        }
        unsafe extern "system" fn OnDestroy<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::OnDestroy(this).into()
            }
        }
        unsafe extern "system" fn OnNotify<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnm: *const super::Controls::NMHDR) -> super::super::Foundation::LRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::OnNotify(this, core::mem::transmute_copy(&pnm))
            }
        }
        unsafe extern "system" fn OnSetFocus<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::OnSetFocus(this).into()
            }
        }
        unsafe extern "system" fn OnFrameWindowActivateBS<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, factive: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::OnFrameWindowActivateBS(this, core::mem::transmute_copy(&factive)).into()
            }
        }
        unsafe extern "system" fn ReleaseShellView<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::ReleaseShellView(this).into()
            }
        }
        unsafe extern "system" fn ActivatePendingView<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::ActivatePendingView(this).into()
            }
        }
        unsafe extern "system" fn CreateViewWindow<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psvnew: *mut core::ffi::c_void, psvold: *mut core::ffi::c_void, prcview: *const super::super::Foundation::RECT, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService2_Impl::CreateViewWindow(this, core::mem::transmute_copy(&psvnew), core::mem::transmute_copy(&psvold), core::mem::transmute_copy(&prcview)) {
                    Ok(ok__) => {
                        phwnd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateBrowserPropSheetExt<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::CreateBrowserPropSheetExt(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetViewWindow<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwndview: *mut super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService2_Impl::GetViewWindow(this) {
                    Ok(ok__) => {
                        phwndview.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBaseBrowserData<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbbd: *mut *mut BASEBROWSERDATALH) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService2_Impl::GetBaseBrowserData(this) {
                    Ok(ok__) => {
                        pbbd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PutBaseBrowserData<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> *mut BASEBROWSERDATALH {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::PutBaseBrowserData(this)
            }
        }
        unsafe extern "system" fn InitializeTravelLog<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptl: *mut core::ffi::c_void, dw: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::InitializeTravelLog(this, core::mem::transmute_copy(&ptl), core::mem::transmute_copy(&dw)).into()
            }
        }
        unsafe extern "system" fn SetTopBrowser<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::SetTopBrowser(this).into()
            }
        }
        unsafe extern "system" fn Offline<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, icmd: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::Offline(this, core::mem::transmute_copy(&icmd)).into()
            }
        }
        unsafe extern "system" fn AllowViewResize<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, f: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::AllowViewResize(this, core::mem::transmute_copy(&f)).into()
            }
        }
        unsafe extern "system" fn SetActivateState<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, u: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::SetActivateState(this, core::mem::transmute_copy(&u)).into()
            }
        }
        unsafe extern "system" fn UpdateSecureLockIcon<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, esecurelock: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::UpdateSecureLockIcon(this, core::mem::transmute_copy(&esecurelock)).into()
            }
        }
        unsafe extern "system" fn InitializeDownloadManager<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::InitializeDownloadManager(this).into()
            }
        }
        unsafe extern "system" fn InitializeTransitionSite<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::InitializeTransitionSite(this).into()
            }
        }
        unsafe extern "system" fn _Initialize<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pauto: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_Initialize(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&pauto)).into()
            }
        }
        unsafe extern "system" fn _CancelPendingNavigationAsync<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_CancelPendingNavigationAsync(this).into()
            }
        }
        unsafe extern "system" fn _CancelPendingView<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_CancelPendingView(this).into()
            }
        }
        unsafe extern "system" fn _MaySaveChanges<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_MaySaveChanges(this).into()
            }
        }
        unsafe extern "system" fn _PauseOrResumeView<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fpaused: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_PauseOrResumeView(this, core::mem::transmute_copy(&fpaused)).into()
            }
        }
        unsafe extern "system" fn _DisableModeless<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_DisableModeless(this).into()
            }
        }
        unsafe extern "system" fn _NavigateToPidl2<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, grfhlnf: u32, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_NavigateToPidl2(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&grfhlnf), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn _TryShell2Rename<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void, pidlnew: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_TryShell2Rename(this, core::mem::transmute_copy(&psv), core::mem::transmute_copy(&pidlnew)).into()
            }
        }
        unsafe extern "system" fn _SwitchActivationNow<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_SwitchActivationNow(this).into()
            }
        }
        unsafe extern "system" fn _ExecChildren<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkbar: *mut core::ffi::c_void, fbroadcast: windows_core::BOOL, pguidcmdgroup: *const windows_core::GUID, ncmdid: u32, ncmdexecopt: u32, pvarargin: *const super::super::System::Variant::VARIANT, pvarargout: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_ExecChildren(this, core::mem::transmute_copy(&punkbar), core::mem::transmute_copy(&fbroadcast), core::mem::transmute_copy(&pguidcmdgroup), core::mem::transmute_copy(&ncmdid), core::mem::transmute_copy(&ncmdexecopt), core::mem::transmute_copy(&pvarargin), core::mem::transmute_copy(&pvarargout)).into()
            }
        }
        unsafe extern "system" fn _SendChildren<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndbar: super::super::Foundation::HWND, fbroadcast: windows_core::BOOL, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_SendChildren(this, core::mem::transmute_copy(&hwndbar), core::mem::transmute_copy(&fbroadcast), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
            }
        }
        unsafe extern "system" fn GetFolderSetData<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfsd: *mut FOLDERSETDATA) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::GetFolderSetData(this, core::mem::transmute_copy(&pfsd)).into()
            }
        }
        unsafe extern "system" fn _OnFocusChange<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, itb: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_OnFocusChange(this, core::mem::transmute_copy(&itb)).into()
            }
        }
        unsafe extern "system" fn v_ShowHideChildWindows<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchildonly: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::v_ShowHideChildWindows(this, core::mem::transmute_copy(&fchildonly)).into()
            }
        }
        unsafe extern "system" fn _get_itbLastFocus<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_get_itbLastFocus(this)
            }
        }
        unsafe extern "system" fn _put_itbLastFocus<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, itblastfocus: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_put_itbLastFocus(this, core::mem::transmute_copy(&itblastfocus)).into()
            }
        }
        unsafe extern "system" fn _UIActivateView<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ustate: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_UIActivateView(this, core::mem::transmute_copy(&ustate)).into()
            }
        }
        unsafe extern "system" fn _GetViewBorderRect<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prc: *mut super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_GetViewBorderRect(this, core::mem::transmute_copy(&prc)).into()
            }
        }
        unsafe extern "system" fn _UpdateViewRectSize<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_UpdateViewRectSize(this).into()
            }
        }
        unsafe extern "system" fn _ResizeNextBorder<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, itb: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_ResizeNextBorder(this, core::mem::transmute_copy(&itb)).into()
            }
        }
        unsafe extern "system" fn _ResizeView<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_ResizeView(this).into()
            }
        }
        unsafe extern "system" fn _GetEffectiveClientArea<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lprectborder: *mut super::super::Foundation::RECT, hmon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_GetEffectiveClientArea(this, core::mem::transmute_copy(&lprectborder), core::mem::transmute_copy(&hmon)).into()
            }
        }
        unsafe extern "system" fn v_GetViewStream<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *mut Common::ITEMIDLIST, grfmode: u32, pwszname: windows_core::PCWSTR) -> Option<super::super::System::Com::IStream> {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::v_GetViewStream(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&grfmode), core::mem::transmute(&pwszname))
            }
        }
        unsafe extern "system" fn ForwardViewMsg<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> super::super::Foundation::LRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::ForwardViewMsg(this, core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam))
            }
        }
        unsafe extern "system" fn SetAcceleratorMenu<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hacc: super::WindowsAndMessaging::HACCEL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::SetAcceleratorMenu(this, core::mem::transmute_copy(&hacc)).into()
            }
        }
        unsafe extern "system" fn _GetToolbarCount<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> i32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_GetToolbarCount(this)
            }
        }
        unsafe extern "system" fn _GetToolbarItem<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, itb: i32) -> *mut TOOLBARITEM {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_GetToolbarItem(this, core::mem::transmute_copy(&itb))
            }
        }
        unsafe extern "system" fn _SaveToolbars<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstm: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_SaveToolbars(this, core::mem::transmute_copy(&pstm)).into()
            }
        }
        unsafe extern "system" fn _LoadToolbars<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstm: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_LoadToolbars(this, core::mem::transmute_copy(&pstm)).into()
            }
        }
        unsafe extern "system" fn _CloseAndReleaseToolbars<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fclose: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_CloseAndReleaseToolbars(this, core::mem::transmute_copy(&fclose)).into()
            }
        }
        unsafe extern "system" fn v_MayGetNextToolbarFocus<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpmsg: *const super::WindowsAndMessaging::MSG, itbnext: u32, citb: i32, pptbi: *mut *mut TOOLBARITEM, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::v_MayGetNextToolbarFocus(this, core::mem::transmute_copy(&lpmsg), core::mem::transmute_copy(&itbnext), core::mem::transmute_copy(&citb), core::mem::transmute_copy(&pptbi), core::mem::transmute_copy(&phwnd)).into()
            }
        }
        unsafe extern "system" fn _ResizeNextBorderHelper<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, itb: u32, busehmonitor: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_ResizeNextBorderHelper(this, core::mem::transmute_copy(&itb), core::mem::transmute_copy(&busehmonitor)).into()
            }
        }
        unsafe extern "system" fn _FindTBar<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksrc: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_FindTBar(this, core::mem::transmute_copy(&punksrc))
            }
        }
        unsafe extern "system" fn _SetFocus<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptbi: *const TOOLBARITEM, hwnd: super::super::Foundation::HWND, lpmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_SetFocus(this, core::mem::transmute_copy(&ptbi), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&lpmsg)).into()
            }
        }
        unsafe extern "system" fn v_MayTranslateAccelerator<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *mut super::WindowsAndMessaging::MSG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::v_MayTranslateAccelerator(this, core::mem::transmute_copy(&pmsg)).into()
            }
        }
        unsafe extern "system" fn _GetBorderDWHelper<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksrc: *mut core::ffi::c_void, lprectborder: *mut super::super::Foundation::RECT, busehmonitor: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::_GetBorderDWHelper(this, core::mem::transmute_copy(&punksrc), core::mem::transmute_copy(&lprectborder), core::mem::transmute_copy(&busehmonitor)).into()
            }
        }
        unsafe extern "system" fn v_CheckZoneCrossing<Identity: IBrowserService2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService2_Impl::v_CheckZoneCrossing(this, core::mem::transmute_copy(&pidl)).into()
            }
        }
        Self {
            base__: IBrowserService_Vtbl::new::<Identity, OFFSET>(),
            WndProcBS: WndProcBS::<Identity, OFFSET>,
            SetAsDefFolderSettings: SetAsDefFolderSettings::<Identity, OFFSET>,
            GetViewRect: GetViewRect::<Identity, OFFSET>,
            OnSize: OnSize::<Identity, OFFSET>,
            OnCreate: OnCreate::<Identity, OFFSET>,
            OnCommand: OnCommand::<Identity, OFFSET>,
            OnDestroy: OnDestroy::<Identity, OFFSET>,
            OnNotify: OnNotify::<Identity, OFFSET>,
            OnSetFocus: OnSetFocus::<Identity, OFFSET>,
            OnFrameWindowActivateBS: OnFrameWindowActivateBS::<Identity, OFFSET>,
            ReleaseShellView: ReleaseShellView::<Identity, OFFSET>,
            ActivatePendingView: ActivatePendingView::<Identity, OFFSET>,
            CreateViewWindow: CreateViewWindow::<Identity, OFFSET>,
            CreateBrowserPropSheetExt: CreateBrowserPropSheetExt::<Identity, OFFSET>,
            GetViewWindow: GetViewWindow::<Identity, OFFSET>,
            GetBaseBrowserData: GetBaseBrowserData::<Identity, OFFSET>,
            PutBaseBrowserData: PutBaseBrowserData::<Identity, OFFSET>,
            InitializeTravelLog: InitializeTravelLog::<Identity, OFFSET>,
            SetTopBrowser: SetTopBrowser::<Identity, OFFSET>,
            Offline: Offline::<Identity, OFFSET>,
            AllowViewResize: AllowViewResize::<Identity, OFFSET>,
            SetActivateState: SetActivateState::<Identity, OFFSET>,
            UpdateSecureLockIcon: UpdateSecureLockIcon::<Identity, OFFSET>,
            InitializeDownloadManager: InitializeDownloadManager::<Identity, OFFSET>,
            InitializeTransitionSite: InitializeTransitionSite::<Identity, OFFSET>,
            _Initialize: _Initialize::<Identity, OFFSET>,
            _CancelPendingNavigationAsync: _CancelPendingNavigationAsync::<Identity, OFFSET>,
            _CancelPendingView: _CancelPendingView::<Identity, OFFSET>,
            _MaySaveChanges: _MaySaveChanges::<Identity, OFFSET>,
            _PauseOrResumeView: _PauseOrResumeView::<Identity, OFFSET>,
            _DisableModeless: _DisableModeless::<Identity, OFFSET>,
            _NavigateToPidl2: _NavigateToPidl2::<Identity, OFFSET>,
            _TryShell2Rename: _TryShell2Rename::<Identity, OFFSET>,
            _SwitchActivationNow: _SwitchActivationNow::<Identity, OFFSET>,
            _ExecChildren: _ExecChildren::<Identity, OFFSET>,
            _SendChildren: _SendChildren::<Identity, OFFSET>,
            GetFolderSetData: GetFolderSetData::<Identity, OFFSET>,
            _OnFocusChange: _OnFocusChange::<Identity, OFFSET>,
            v_ShowHideChildWindows: v_ShowHideChildWindows::<Identity, OFFSET>,
            _get_itbLastFocus: _get_itbLastFocus::<Identity, OFFSET>,
            _put_itbLastFocus: _put_itbLastFocus::<Identity, OFFSET>,
            _UIActivateView: _UIActivateView::<Identity, OFFSET>,
            _GetViewBorderRect: _GetViewBorderRect::<Identity, OFFSET>,
            _UpdateViewRectSize: _UpdateViewRectSize::<Identity, OFFSET>,
            _ResizeNextBorder: _ResizeNextBorder::<Identity, OFFSET>,
            _ResizeView: _ResizeView::<Identity, OFFSET>,
            _GetEffectiveClientArea: _GetEffectiveClientArea::<Identity, OFFSET>,
            v_GetViewStream: v_GetViewStream::<Identity, OFFSET>,
            ForwardViewMsg: ForwardViewMsg::<Identity, OFFSET>,
            SetAcceleratorMenu: SetAcceleratorMenu::<Identity, OFFSET>,
            _GetToolbarCount: _GetToolbarCount::<Identity, OFFSET>,
            _GetToolbarItem: _GetToolbarItem::<Identity, OFFSET>,
            _SaveToolbars: _SaveToolbars::<Identity, OFFSET>,
            _LoadToolbars: _LoadToolbars::<Identity, OFFSET>,
            _CloseAndReleaseToolbars: _CloseAndReleaseToolbars::<Identity, OFFSET>,
            v_MayGetNextToolbarFocus: v_MayGetNextToolbarFocus::<Identity, OFFSET>,
            _ResizeNextBorderHelper: _ResizeNextBorderHelper::<Identity, OFFSET>,
            _FindTBar: _FindTBar::<Identity, OFFSET>,
            _SetFocus: _SetFocus::<Identity, OFFSET>,
            v_MayTranslateAccelerator: v_MayTranslateAccelerator::<Identity, OFFSET>,
            _GetBorderDWHelper: _GetBorderDWHelper::<Identity, OFFSET>,
            v_CheckZoneCrossing: v_CheckZoneCrossing::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBrowserService2 as windows_core::Interface>::IID || iid == &<IBrowserService as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IBrowserService2 {}
windows_core::imp::define_interface!(IBrowserService3, IBrowserService3_Vtbl, 0x27d7ce21_762d_48f3_86f3_40e2fd3749c4);
impl core::ops::Deref for IBrowserService3 {
    type Target = IBrowserService2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IBrowserService3, windows_core::IUnknown, IBrowserService, IBrowserService2);
impl IBrowserService3 {
    pub unsafe fn _PositionViewWindow(&self, hwnd: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._PositionViewWindow)(windows_core::Interface::as_raw(self), hwnd, prc).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn IEParseDisplayNameEx<P1>(&self, uicp: u32, pwszpath: P1, dwflags: u32) -> windows_core::Result<*mut Common::ITEMIDLIST>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IEParseDisplayNameEx)(windows_core::Interface::as_raw(self), uicp, pwszpath.param().abi(), dwflags, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IBrowserService3_Vtbl {
    pub base__: IBrowserService2_Vtbl,
    pub _PositionViewWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const super::super::Foundation::RECT) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub IEParseDisplayNameEx: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, u32, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    IEParseDisplayNameEx: usize,
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IBrowserService3_Impl: IBrowserService2_Impl {
    fn _PositionViewWindow(&self, hwnd: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn IEParseDisplayNameEx(&self, uicp: u32, pwszpath: &windows_core::PCWSTR, dwflags: u32) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IBrowserService3_Vtbl {
    pub const fn new<Identity: IBrowserService3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn _PositionViewWindow<Identity: IBrowserService3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService3_Impl::_PositionViewWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&prc)).into()
            }
        }
        unsafe extern "system" fn IEParseDisplayNameEx<Identity: IBrowserService3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uicp: u32, pwszpath: windows_core::PCWSTR, dwflags: u32, ppidlout: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IBrowserService3_Impl::IEParseDisplayNameEx(this, core::mem::transmute_copy(&uicp), core::mem::transmute(&pwszpath), core::mem::transmute_copy(&dwflags)) {
                    Ok(ok__) => {
                        ppidlout.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IBrowserService2_Vtbl::new::<Identity, OFFSET>(),
            _PositionViewWindow: _PositionViewWindow::<Identity, OFFSET>,
            IEParseDisplayNameEx: IEParseDisplayNameEx::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBrowserService3 as windows_core::Interface>::IID || iid == &<IBrowserService as windows_core::Interface>::IID || iid == &<IBrowserService2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IBrowserService3 {}
windows_core::imp::define_interface!(IBrowserService4, IBrowserService4_Vtbl, 0x639f1bff_e135_4096_abd8_e0f504d649a4);
impl core::ops::Deref for IBrowserService4 {
    type Target = IBrowserService3;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IBrowserService4, windows_core::IUnknown, IBrowserService, IBrowserService2, IBrowserService3);
impl IBrowserService4 {
    pub unsafe fn ActivateView(&self, fpendingview: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ActivateView)(windows_core::Interface::as_raw(self), fpendingview.into()).ok() }
    }
    pub unsafe fn SaveViewState(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SaveViewState)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn _ResizeAllBorders(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self)._ResizeAllBorders)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IBrowserService4_Vtbl {
    pub base__: IBrowserService3_Vtbl,
    pub ActivateView: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub SaveViewState: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub _ResizeAllBorders: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IBrowserService4_Impl: IBrowserService3_Impl {
    fn ActivateView(&self, fpendingview: windows_core::BOOL) -> windows_core::Result<()>;
    fn SaveViewState(&self) -> windows_core::Result<()>;
    fn _ResizeAllBorders(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IBrowserService4_Vtbl {
    pub const fn new<Identity: IBrowserService4_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ActivateView<Identity: IBrowserService4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fpendingview: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService4_Impl::ActivateView(this, core::mem::transmute_copy(&fpendingview)).into()
            }
        }
        unsafe extern "system" fn SaveViewState<Identity: IBrowserService4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService4_Impl::SaveViewState(this).into()
            }
        }
        unsafe extern "system" fn _ResizeAllBorders<Identity: IBrowserService4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IBrowserService4_Impl::_ResizeAllBorders(this).into()
            }
        }
        Self {
            base__: IBrowserService3_Vtbl::new::<Identity, OFFSET>(),
            ActivateView: ActivateView::<Identity, OFFSET>,
            SaveViewState: SaveViewState::<Identity, OFFSET>,
            _ResizeAllBorders: _ResizeAllBorders::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IBrowserService4 as windows_core::Interface>::IID || iid == &<IBrowserService as windows_core::Interface>::IID || iid == &<IBrowserService2 as windows_core::Interface>::IID || iid == &<IBrowserService3 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IBrowserService4 {}
windows_core::imp::define_interface!(ICDBurn, ICDBurn_Vtbl, 0x3d73a659_e5d0_4d42_afc0_5121ba425c8d);
windows_core::imp::interface_hierarchy!(ICDBurn, windows_core::IUnknown);
impl ICDBurn {
    pub unsafe fn GetRecorderDriveLetter(&self, pszdrive: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetRecorderDriveLetter)(windows_core::Interface::as_raw(self), core::mem::transmute(pszdrive.as_ptr()), pszdrive.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn Burn(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Burn)(windows_core::Interface::as_raw(self), hwnd).ok() }
    }
    pub unsafe fn HasRecordableDrive(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).HasRecordableDrive)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICDBurn_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetRecorderDriveLetter: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32) -> windows_core::HRESULT,
    pub Burn: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub HasRecordableDrive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait ICDBurn_Impl: windows_core::IUnknownImpl {
    fn GetRecorderDriveLetter(&self, pszdrive: windows_core::PWSTR, cch: u32) -> windows_core::Result<()>;
    fn Burn(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn HasRecordableDrive(&self) -> windows_core::Result<windows_core::BOOL>;
}
impl ICDBurn_Vtbl {
    pub const fn new<Identity: ICDBurn_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetRecorderDriveLetter<Identity: ICDBurn_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdrive: windows_core::PWSTR, cch: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICDBurn_Impl::GetRecorderDriveLetter(this, core::mem::transmute_copy(&pszdrive), core::mem::transmute_copy(&cch)).into()
            }
        }
        unsafe extern "system" fn Burn<Identity: ICDBurn_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICDBurn_Impl::Burn(this, core::mem::transmute_copy(&hwnd)).into()
            }
        }
        unsafe extern "system" fn HasRecordableDrive<Identity: ICDBurn_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfhasrecorder: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICDBurn_Impl::HasRecordableDrive(this) {
                    Ok(ok__) => {
                        pfhasrecorder.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetRecorderDriveLetter: GetRecorderDriveLetter::<Identity, OFFSET>,
            Burn: Burn::<Identity, OFFSET>,
            HasRecordableDrive: HasRecordableDrive::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICDBurn as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICDBurn {}
windows_core::imp::define_interface!(ICDBurnExt, ICDBurnExt_Vtbl, 0x2271dcca_74fc_4414_8fb7_c56b05ace2d7);
windows_core::imp::interface_hierarchy!(ICDBurnExt, windows_core::IUnknown);
impl ICDBurnExt {
    pub unsafe fn GetSupportedActionTypes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSupportedActionTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICDBurnExt_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSupportedActionTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait ICDBurnExt_Impl: windows_core::IUnknownImpl {
    fn GetSupportedActionTypes(&self) -> windows_core::Result<u32>;
}
impl ICDBurnExt_Vtbl {
    pub const fn new<Identity: ICDBurnExt_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSupportedActionTypes<Identity: ICDBurnExt_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwactions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICDBurnExt_Impl::GetSupportedActionTypes(this) {
                    Ok(ok__) => {
                        pdwactions.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetSupportedActionTypes: GetSupportedActionTypes::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICDBurnExt as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICDBurnExt {}
windows_core::imp::define_interface!(ICategorizer, ICategorizer_Vtbl, 0xa3b14589_9174_49a8_89a3_06a1ae2b9ba7);
windows_core::imp::interface_hierarchy!(ICategorizer, windows_core::IUnknown);
impl ICategorizer {
    pub unsafe fn GetDescription(&self, pszdesc: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDescription)(windows_core::Interface::as_raw(self), core::mem::transmute(pszdesc.as_ptr()), pszdesc.len().try_into().unwrap()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetCategory(&self, cidl: u32, apidl: *const *const Common::ITEMIDLIST, rgcategoryids: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCategory)(windows_core::Interface::as_raw(self), cidl, apidl, rgcategoryids as _).ok() }
    }
    pub unsafe fn GetCategoryInfo(&self, dwcategoryid: u32, pci: *mut CATEGORY_INFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCategoryInfo)(windows_core::Interface::as_raw(self), dwcategoryid, pci as _).ok() }
    }
    pub unsafe fn CompareCategory(&self, csfflags: CATSORT_FLAGS, dwcategoryid1: u32, dwcategoryid2: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CompareCategory)(windows_core::Interface::as_raw(self), csfflags, dwcategoryid1, dwcategoryid2).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICategorizer_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetCategory: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const *const Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetCategory: usize,
    pub GetCategoryInfo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut CATEGORY_INFO) -> windows_core::HRESULT,
    pub CompareCategory: unsafe extern "system" fn(*mut core::ffi::c_void, CATSORT_FLAGS, u32, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ICategorizer_Impl: windows_core::IUnknownImpl {
    fn GetDescription(&self, pszdesc: windows_core::PWSTR, cch: u32) -> windows_core::Result<()>;
    fn GetCategory(&self, cidl: u32, apidl: *const *const Common::ITEMIDLIST, rgcategoryids: *mut u32) -> windows_core::Result<()>;
    fn GetCategoryInfo(&self, dwcategoryid: u32, pci: *mut CATEGORY_INFO) -> windows_core::Result<()>;
    fn CompareCategory(&self, csfflags: CATSORT_FLAGS, dwcategoryid1: u32, dwcategoryid2: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ICategorizer_Vtbl {
    pub const fn new<Identity: ICategorizer_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDescription<Identity: ICategorizer_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdesc: windows_core::PWSTR, cch: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICategorizer_Impl::GetDescription(this, core::mem::transmute_copy(&pszdesc), core::mem::transmute_copy(&cch)).into()
            }
        }
        unsafe extern "system" fn GetCategory<Identity: ICategorizer_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cidl: u32, apidl: *const *const Common::ITEMIDLIST, rgcategoryids: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICategorizer_Impl::GetCategory(this, core::mem::transmute_copy(&cidl), core::mem::transmute_copy(&apidl), core::mem::transmute_copy(&rgcategoryids)).into()
            }
        }
        unsafe extern "system" fn GetCategoryInfo<Identity: ICategorizer_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcategoryid: u32, pci: *mut CATEGORY_INFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICategorizer_Impl::GetCategoryInfo(this, core::mem::transmute_copy(&dwcategoryid), core::mem::transmute_copy(&pci)).into()
            }
        }
        unsafe extern "system" fn CompareCategory<Identity: ICategorizer_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, csfflags: CATSORT_FLAGS, dwcategoryid1: u32, dwcategoryid2: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICategorizer_Impl::CompareCategory(this, core::mem::transmute_copy(&csfflags), core::mem::transmute_copy(&dwcategoryid1), core::mem::transmute_copy(&dwcategoryid2)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDescription: GetDescription::<Identity, OFFSET>,
            GetCategory: GetCategory::<Identity, OFFSET>,
            GetCategoryInfo: GetCategoryInfo::<Identity, OFFSET>,
            CompareCategory: CompareCategory::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICategorizer as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ICategorizer {}
windows_core::imp::define_interface!(ICategoryProvider, ICategoryProvider_Vtbl, 0x9af64809_5864_4c26_a720_c1f78c086ee3);
windows_core::imp::interface_hierarchy!(ICategoryProvider, windows_core::IUnknown);
impl ICategoryProvider {
    pub unsafe fn CanCategorizeOnSCID(&self, pscid: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CanCategorizeOnSCID)(windows_core::Interface::as_raw(self), pscid).ok() }
    }
    pub unsafe fn GetDefaultCategory(&self, pguid: *mut windows_core::GUID, pscid: *mut super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDefaultCategory)(windows_core::Interface::as_raw(self), pguid as _, pscid as _).ok() }
    }
    pub unsafe fn GetCategoryForSCID(&self, pscid: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCategoryForSCID)(windows_core::Interface::as_raw(self), pscid, &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EnumCategories(&self) -> windows_core::Result<super::super::System::Com::IEnumGUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumCategories)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetCategoryName(&self, pguid: *const windows_core::GUID, pszname: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCategoryName)(windows_core::Interface::as_raw(self), pguid, core::mem::transmute(pszname.as_ptr()), pszname.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn CreateCategory<T>(&self, pguid: *const windows_core::GUID) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).CreateCategory)(windows_core::Interface::as_raw(self), pguid, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICategoryProvider_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CanCategorizeOnSCID: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT,
    pub GetDefaultCategory: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID, *mut super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT,
    pub GetCategoryForSCID: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut windows_core::GUID) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub EnumCategories: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EnumCategories: usize,
    pub GetCategoryName: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, windows_core::PWSTR, u32) -> windows_core::HRESULT,
    pub CreateCategory: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait ICategoryProvider_Impl: windows_core::IUnknownImpl {
    fn CanCategorizeOnSCID(&self, pscid: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()>;
    fn GetDefaultCategory(&self, pguid: *mut windows_core::GUID, pscid: *mut super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()>;
    fn GetCategoryForSCID(&self, pscid: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<windows_core::GUID>;
    fn EnumCategories(&self) -> windows_core::Result<super::super::System::Com::IEnumGUID>;
    fn GetCategoryName(&self, pguid: *const windows_core::GUID, pszname: windows_core::PWSTR, cch: u32) -> windows_core::Result<()>;
    fn CreateCategory(&self, pguid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl ICategoryProvider_Vtbl {
    pub const fn new<Identity: ICategoryProvider_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CanCategorizeOnSCID<Identity: ICategoryProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pscid: *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICategoryProvider_Impl::CanCategorizeOnSCID(this, core::mem::transmute_copy(&pscid)).into()
            }
        }
        unsafe extern "system" fn GetDefaultCategory<Identity: ICategoryProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *mut windows_core::GUID, pscid: *mut super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICategoryProvider_Impl::GetDefaultCategory(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&pscid)).into()
            }
        }
        unsafe extern "system" fn GetCategoryForSCID<Identity: ICategoryProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pscid: *const super::super::Foundation::PROPERTYKEY, pguid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICategoryProvider_Impl::GetCategoryForSCID(this, core::mem::transmute_copy(&pscid)) {
                    Ok(ok__) => {
                        pguid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumCategories<Identity: ICategoryProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, penum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICategoryProvider_Impl::EnumCategories(this) {
                    Ok(ok__) => {
                        penum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCategoryName<Identity: ICategoryProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const windows_core::GUID, pszname: windows_core::PWSTR, cch: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICategoryProvider_Impl::GetCategoryName(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cch)).into()
            }
        }
        unsafe extern "system" fn CreateCategory<Identity: ICategoryProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICategoryProvider_Impl::CreateCategory(this, core::mem::transmute_copy(&pguid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CanCategorizeOnSCID: CanCategorizeOnSCID::<Identity, OFFSET>,
            GetDefaultCategory: GetDefaultCategory::<Identity, OFFSET>,
            GetCategoryForSCID: GetCategoryForSCID::<Identity, OFFSET>,
            EnumCategories: EnumCategories::<Identity, OFFSET>,
            GetCategoryName: GetCategoryName::<Identity, OFFSET>,
            CreateCategory: CreateCategory::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICategoryProvider as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ICategoryProvider {}
windows_core::imp::define_interface!(IColumnManager, IColumnManager_Vtbl, 0xd8ec27bb_3f3b_4042_b10a_4acfd924d453);
windows_core::imp::interface_hierarchy!(IColumnManager, windows_core::IUnknown);
impl IColumnManager {
    pub unsafe fn SetColumnInfo(&self, propkey: *const super::super::Foundation::PROPERTYKEY, pcmci: *const CM_COLUMNINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetColumnInfo)(windows_core::Interface::as_raw(self), propkey, pcmci).ok() }
    }
    pub unsafe fn GetColumnInfo(&self, propkey: *const super::super::Foundation::PROPERTYKEY, pcmci: *mut CM_COLUMNINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetColumnInfo)(windows_core::Interface::as_raw(self), propkey, pcmci as _).ok() }
    }
    pub unsafe fn GetColumnCount(&self, dwflags: CM_ENUM_FLAGS) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetColumnCount)(windows_core::Interface::as_raw(self), dwflags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetColumns(&self, dwflags: CM_ENUM_FLAGS, rgkeyorder: &mut [super::super::Foundation::PROPERTYKEY]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetColumns)(windows_core::Interface::as_raw(self), dwflags, core::mem::transmute(rgkeyorder.as_ptr()), rgkeyorder.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SetColumns(&self, rgkeyorder: &[super::super::Foundation::PROPERTYKEY]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetColumns)(windows_core::Interface::as_raw(self), core::mem::transmute(rgkeyorder.as_ptr()), rgkeyorder.len().try_into().unwrap()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IColumnManager_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetColumnInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *const CM_COLUMNINFO) -> windows_core::HRESULT,
    pub GetColumnInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut CM_COLUMNINFO) -> windows_core::HRESULT,
    pub GetColumnCount: unsafe extern "system" fn(*mut core::ffi::c_void, CM_ENUM_FLAGS, *mut u32) -> windows_core::HRESULT,
    pub GetColumns: unsafe extern "system" fn(*mut core::ffi::c_void, CM_ENUM_FLAGS, *mut super::super::Foundation::PROPERTYKEY, u32) -> windows_core::HRESULT,
    pub SetColumns: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, u32) -> windows_core::HRESULT,
}
pub trait IColumnManager_Impl: windows_core::IUnknownImpl {
    fn SetColumnInfo(&self, propkey: *const super::super::Foundation::PROPERTYKEY, pcmci: *const CM_COLUMNINFO) -> windows_core::Result<()>;
    fn GetColumnInfo(&self, propkey: *const super::super::Foundation::PROPERTYKEY, pcmci: *mut CM_COLUMNINFO) -> windows_core::Result<()>;
    fn GetColumnCount(&self, dwflags: CM_ENUM_FLAGS) -> windows_core::Result<u32>;
    fn GetColumns(&self, dwflags: CM_ENUM_FLAGS, rgkeyorder: *mut super::super::Foundation::PROPERTYKEY, ccolumns: u32) -> windows_core::Result<()>;
    fn SetColumns(&self, rgkeyorder: *const super::super::Foundation::PROPERTYKEY, cvisible: u32) -> windows_core::Result<()>;
}
impl IColumnManager_Vtbl {
    pub const fn new<Identity: IColumnManager_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetColumnInfo<Identity: IColumnManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, propkey: *const super::super::Foundation::PROPERTYKEY, pcmci: *const CM_COLUMNINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IColumnManager_Impl::SetColumnInfo(this, core::mem::transmute_copy(&propkey), core::mem::transmute_copy(&pcmci)).into()
            }
        }
        unsafe extern "system" fn GetColumnInfo<Identity: IColumnManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, propkey: *const super::super::Foundation::PROPERTYKEY, pcmci: *mut CM_COLUMNINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IColumnManager_Impl::GetColumnInfo(this, core::mem::transmute_copy(&propkey), core::mem::transmute_copy(&pcmci)).into()
            }
        }
        unsafe extern "system" fn GetColumnCount<Identity: IColumnManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: CM_ENUM_FLAGS, pucount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IColumnManager_Impl::GetColumnCount(this, core::mem::transmute_copy(&dwflags)) {
                    Ok(ok__) => {
                        pucount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetColumns<Identity: IColumnManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: CM_ENUM_FLAGS, rgkeyorder: *mut super::super::Foundation::PROPERTYKEY, ccolumns: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IColumnManager_Impl::GetColumns(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&rgkeyorder), core::mem::transmute_copy(&ccolumns)).into()
            }
        }
        unsafe extern "system" fn SetColumns<Identity: IColumnManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgkeyorder: *const super::super::Foundation::PROPERTYKEY, cvisible: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IColumnManager_Impl::SetColumns(this, core::mem::transmute_copy(&rgkeyorder), core::mem::transmute_copy(&cvisible)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetColumnInfo: SetColumnInfo::<Identity, OFFSET>,
            GetColumnInfo: GetColumnInfo::<Identity, OFFSET>,
            GetColumnCount: GetColumnCount::<Identity, OFFSET>,
            GetColumns: GetColumns::<Identity, OFFSET>,
            SetColumns: SetColumns::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IColumnManager as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IColumnManager {}
windows_core::imp::define_interface!(IColumnProvider, IColumnProvider_Vtbl, 0xe8025004_1c42_11d2_be2c_00a0c9a83da1);
windows_core::imp::interface_hierarchy!(IColumnProvider, windows_core::IUnknown);
impl IColumnProvider {
    pub unsafe fn Initialize(&self, psci: *const SHCOLUMNINIT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psci).ok() }
    }
    #[cfg(feature = "Win32_System_Variant")]
    pub unsafe fn GetColumnInfo(&self, dwindex: u32, psci: *mut SHCOLUMNINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetColumnInfo)(windows_core::Interface::as_raw(self), dwindex, psci as _).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn GetItemData(&self, pscid: *const super::super::Foundation::PROPERTYKEY, pscd: *const SHCOLUMNDATA) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemData)(windows_core::Interface::as_raw(self), pscid, pscd, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IColumnProvider_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *const SHCOLUMNINIT) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Variant")]
    pub GetColumnInfo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut SHCOLUMNINFO) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Variant"))]
    GetColumnInfo: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub GetItemData: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *const SHCOLUMNDATA, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    GetItemData: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IColumnProvider_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, psci: *const SHCOLUMNINIT) -> windows_core::Result<()>;
    fn GetColumnInfo(&self, dwindex: u32, psci: *mut SHCOLUMNINFO) -> windows_core::Result<()>;
    fn GetItemData(&self, pscid: *const super::super::Foundation::PROPERTYKEY, pscd: *const SHCOLUMNDATA) -> windows_core::Result<super::super::System::Variant::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IColumnProvider_Vtbl {
    pub const fn new<Identity: IColumnProvider_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IColumnProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psci: *const SHCOLUMNINIT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IColumnProvider_Impl::Initialize(this, core::mem::transmute_copy(&psci)).into()
            }
        }
        unsafe extern "system" fn GetColumnInfo<Identity: IColumnProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, psci: *mut SHCOLUMNINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IColumnProvider_Impl::GetColumnInfo(this, core::mem::transmute_copy(&dwindex), core::mem::transmute_copy(&psci)).into()
            }
        }
        unsafe extern "system" fn GetItemData<Identity: IColumnProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pscid: *const super::super::Foundation::PROPERTYKEY, pscd: *const SHCOLUMNDATA, pvardata: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IColumnProvider_Impl::GetItemData(this, core::mem::transmute_copy(&pscid), core::mem::transmute_copy(&pscd)) {
                    Ok(ok__) => {
                        pvardata.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetColumnInfo: GetColumnInfo::<Identity, OFFSET>,
            GetItemData: GetItemData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IColumnProvider as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IColumnProvider {}
windows_core::imp::define_interface!(ICommDlgBrowser, ICommDlgBrowser_Vtbl, 0x000214f1_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(ICommDlgBrowser, windows_core::IUnknown);
impl ICommDlgBrowser {
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn OnDefaultCommand<P0>(&self, ppshv: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnDefaultCommand)(windows_core::Interface::as_raw(self), ppshv.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn OnStateChange<P0>(&self, ppshv: P0, uchange: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnStateChange)(windows_core::Interface::as_raw(self), ppshv.param().abi(), uchange).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn IncludeObject<P0>(&self, ppshv: P0, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self).IncludeObject)(windows_core::Interface::as_raw(self), ppshv.param().abi(), pidl).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICommDlgBrowser_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Ole")]
    pub OnDefaultCommand: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    OnDefaultCommand: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub OnStateChange: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    OnStateChange: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
    pub IncludeObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common")))]
    IncludeObject: usize,
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait ICommDlgBrowser_Impl: windows_core::IUnknownImpl {
    fn OnDefaultCommand(&self, ppshv: windows_core::Ref<IShellView>) -> windows_core::Result<()>;
    fn OnStateChange(&self, ppshv: windows_core::Ref<IShellView>, uchange: u32) -> windows_core::Result<()>;
    fn IncludeObject(&self, ppshv: windows_core::Ref<IShellView>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl ICommDlgBrowser_Vtbl {
    pub const fn new<Identity: ICommDlgBrowser_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnDefaultCommand<Identity: ICommDlgBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICommDlgBrowser_Impl::OnDefaultCommand(this, core::mem::transmute_copy(&ppshv)).into()
            }
        }
        unsafe extern "system" fn OnStateChange<Identity: ICommDlgBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void, uchange: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICommDlgBrowser_Impl::OnStateChange(this, core::mem::transmute_copy(&ppshv), core::mem::transmute_copy(&uchange)).into()
            }
        }
        unsafe extern "system" fn IncludeObject<Identity: ICommDlgBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICommDlgBrowser_Impl::IncludeObject(this, core::mem::transmute_copy(&ppshv), core::mem::transmute_copy(&pidl)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnDefaultCommand: OnDefaultCommand::<Identity, OFFSET>,
            OnStateChange: OnStateChange::<Identity, OFFSET>,
            IncludeObject: IncludeObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICommDlgBrowser as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for ICommDlgBrowser {}
windows_core::imp::define_interface!(ICommDlgBrowser2, ICommDlgBrowser2_Vtbl, 0x10339516_2894_11d2_9039_00c04f8eeb3e);
impl core::ops::Deref for ICommDlgBrowser2 {
    type Target = ICommDlgBrowser;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ICommDlgBrowser2, windows_core::IUnknown, ICommDlgBrowser);
impl ICommDlgBrowser2 {
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn Notify<P0>(&self, ppshv: P0, dwnotifytype: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self).Notify)(windows_core::Interface::as_raw(self), ppshv.param().abi(), dwnotifytype).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn GetDefaultMenuText<P0>(&self, ppshv: P0, psztext: &mut [u16]) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetDefaultMenuText)(windows_core::Interface::as_raw(self), ppshv.param().abi(), core::mem::transmute(psztext.as_ptr()), psztext.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn GetViewFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetViewFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICommDlgBrowser2_Vtbl {
    pub base__: ICommDlgBrowser_Vtbl,
    #[cfg(feature = "Win32_System_Ole")]
    pub Notify: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    Notify: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub GetDefaultMenuText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PWSTR, i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    GetDefaultMenuText: usize,
    pub GetViewFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait ICommDlgBrowser2_Impl: ICommDlgBrowser_Impl {
    fn Notify(&self, ppshv: windows_core::Ref<IShellView>, dwnotifytype: u32) -> windows_core::Result<()>;
    fn GetDefaultMenuText(&self, ppshv: windows_core::Ref<IShellView>, psztext: windows_core::PWSTR, cchmax: i32) -> windows_core::Result<()>;
    fn GetViewFlags(&self) -> windows_core::Result<u32>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl ICommDlgBrowser2_Vtbl {
    pub const fn new<Identity: ICommDlgBrowser2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Notify<Identity: ICommDlgBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void, dwnotifytype: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICommDlgBrowser2_Impl::Notify(this, core::mem::transmute_copy(&ppshv), core::mem::transmute_copy(&dwnotifytype)).into()
            }
        }
        unsafe extern "system" fn GetDefaultMenuText<Identity: ICommDlgBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void, psztext: windows_core::PWSTR, cchmax: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICommDlgBrowser2_Impl::GetDefaultMenuText(this, core::mem::transmute_copy(&ppshv), core::mem::transmute_copy(&psztext), core::mem::transmute_copy(&cchmax)).into()
            }
        }
        unsafe extern "system" fn GetViewFlags<Identity: ICommDlgBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICommDlgBrowser2_Impl::GetViewFlags(this) {
                    Ok(ok__) => {
                        pdwflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: ICommDlgBrowser_Vtbl::new::<Identity, OFFSET>(),
            Notify: Notify::<Identity, OFFSET>,
            GetDefaultMenuText: GetDefaultMenuText::<Identity, OFFSET>,
            GetViewFlags: GetViewFlags::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICommDlgBrowser2 as windows_core::Interface>::IID || iid == &<ICommDlgBrowser as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for ICommDlgBrowser2 {}
windows_core::imp::define_interface!(ICommDlgBrowser3, ICommDlgBrowser3_Vtbl, 0xc8ad25a1_3294_41ee_8165_71174bd01c57);
impl core::ops::Deref for ICommDlgBrowser3 {
    type Target = ICommDlgBrowser2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ICommDlgBrowser3, windows_core::IUnknown, ICommDlgBrowser, ICommDlgBrowser2);
impl ICommDlgBrowser3 {
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn OnColumnClicked<P0>(&self, ppshv: P0, icolumn: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnColumnClicked)(windows_core::Interface::as_raw(self), ppshv.param().abi(), icolumn).ok() }
    }
    pub unsafe fn GetCurrentFilter(&self, pszfilespec: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCurrentFilter)(windows_core::Interface::as_raw(self), core::mem::transmute(pszfilespec.as_ptr()), pszfilespec.len().try_into().unwrap()).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn OnPreViewCreated<P0>(&self, ppshv: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnPreViewCreated)(windows_core::Interface::as_raw(self), ppshv.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICommDlgBrowser3_Vtbl {
    pub base__: ICommDlgBrowser2_Vtbl,
    #[cfg(feature = "Win32_System_Ole")]
    pub OnColumnClicked: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    OnColumnClicked: usize,
    pub GetCurrentFilter: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub OnPreViewCreated: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    OnPreViewCreated: usize,
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait ICommDlgBrowser3_Impl: ICommDlgBrowser2_Impl {
    fn OnColumnClicked(&self, ppshv: windows_core::Ref<IShellView>, icolumn: i32) -> windows_core::Result<()>;
    fn GetCurrentFilter(&self, pszfilespec: windows_core::PWSTR, cchfilespec: i32) -> windows_core::Result<()>;
    fn OnPreViewCreated(&self, ppshv: windows_core::Ref<IShellView>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl ICommDlgBrowser3_Vtbl {
    pub const fn new<Identity: ICommDlgBrowser3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnColumnClicked<Identity: ICommDlgBrowser3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void, icolumn: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICommDlgBrowser3_Impl::OnColumnClicked(this, core::mem::transmute_copy(&ppshv), core::mem::transmute_copy(&icolumn)).into()
            }
        }
        unsafe extern "system" fn GetCurrentFilter<Identity: ICommDlgBrowser3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfilespec: windows_core::PWSTR, cchfilespec: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICommDlgBrowser3_Impl::GetCurrentFilter(this, core::mem::transmute_copy(&pszfilespec), core::mem::transmute_copy(&cchfilespec)).into()
            }
        }
        unsafe extern "system" fn OnPreViewCreated<Identity: ICommDlgBrowser3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICommDlgBrowser3_Impl::OnPreViewCreated(this, core::mem::transmute_copy(&ppshv)).into()
            }
        }
        Self {
            base__: ICommDlgBrowser2_Vtbl::new::<Identity, OFFSET>(),
            OnColumnClicked: OnColumnClicked::<Identity, OFFSET>,
            GetCurrentFilter: GetCurrentFilter::<Identity, OFFSET>,
            OnPreViewCreated: OnPreViewCreated::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICommDlgBrowser3 as windows_core::Interface>::IID || iid == &<ICommDlgBrowser as windows_core::Interface>::IID || iid == &<ICommDlgBrowser2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for ICommDlgBrowser3 {}
windows_core::imp::define_interface!(IComputerInfoChangeNotify, IComputerInfoChangeNotify_Vtbl, 0x0df60d92_6818_46d6_b358_d66170dde466);
windows_core::imp::interface_hierarchy!(IComputerInfoChangeNotify, windows_core::IUnknown);
impl IComputerInfoChangeNotify {
    pub unsafe fn ComputerInfoChanged(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ComputerInfoChanged)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IComputerInfoChangeNotify_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ComputerInfoChanged: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IComputerInfoChangeNotify_Impl: windows_core::IUnknownImpl {
    fn ComputerInfoChanged(&self) -> windows_core::Result<()>;
}
impl IComputerInfoChangeNotify_Vtbl {
    pub const fn new<Identity: IComputerInfoChangeNotify_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ComputerInfoChanged<Identity: IComputerInfoChangeNotify_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IComputerInfoChangeNotify_Impl::ComputerInfoChanged(this).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), ComputerInfoChanged: ComputerInfoChanged::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IComputerInfoChangeNotify as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IComputerInfoChangeNotify {}
windows_core::imp::define_interface!(IConnectableCredentialProviderCredential, IConnectableCredentialProviderCredential_Vtbl, 0x9387928b_ac75_4bf9_8ab2_2b93c4a55290);
impl core::ops::Deref for IConnectableCredentialProviderCredential {
    type Target = ICredentialProviderCredential;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IConnectableCredentialProviderCredential, windows_core::IUnknown, ICredentialProviderCredential);
impl IConnectableCredentialProviderCredential {
    pub unsafe fn Connect<P0>(&self, pqcws: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IQueryContinueWithStatus>,
    {
        unsafe { (windows_core::Interface::vtable(self).Connect)(windows_core::Interface::as_raw(self), pqcws.param().abi()).ok() }
    }
    pub unsafe fn Disconnect(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Disconnect)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IConnectableCredentialProviderCredential_Vtbl {
    pub base__: ICredentialProviderCredential_Vtbl,
    pub Connect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Disconnect: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IConnectableCredentialProviderCredential_Impl: ICredentialProviderCredential_Impl {
    fn Connect(&self, pqcws: windows_core::Ref<IQueryContinueWithStatus>) -> windows_core::Result<()>;
    fn Disconnect(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IConnectableCredentialProviderCredential_Vtbl {
    pub const fn new<Identity: IConnectableCredentialProviderCredential_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Connect<Identity: IConnectableCredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pqcws: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IConnectableCredentialProviderCredential_Impl::Connect(this, core::mem::transmute_copy(&pqcws)).into()
            }
        }
        unsafe extern "system" fn Disconnect<Identity: IConnectableCredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IConnectableCredentialProviderCredential_Impl::Disconnect(this).into()
            }
        }
        Self {
            base__: ICredentialProviderCredential_Vtbl::new::<Identity, OFFSET>(),
            Connect: Connect::<Identity, OFFSET>,
            Disconnect: Disconnect::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IConnectableCredentialProviderCredential as windows_core::Interface>::IID || iid == &<ICredentialProviderCredential as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IConnectableCredentialProviderCredential {}
windows_core::imp::define_interface!(IContactManagerInterop, IContactManagerInterop_Vtbl, 0x99eacba7_e073_43b6_a896_55afe48a0833);
windows_core::imp::interface_hierarchy!(IContactManagerInterop, windows_core::IUnknown);
impl IContactManagerInterop {
    pub unsafe fn ShowContactCardForWindow<P1>(&self, appwindow: super::super::Foundation::HWND, contact: P1, selection: *const super::super::Foundation::RECT, preferredplacement: FLYOUT_PLACEMENT) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).ShowContactCardForWindow)(windows_core::Interface::as_raw(self), appwindow, contact.param().abi(), selection, preferredplacement).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IContactManagerInterop_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ShowContactCardForWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void, *const super::super::Foundation::RECT, FLYOUT_PLACEMENT) -> windows_core::HRESULT,
}
pub trait IContactManagerInterop_Impl: windows_core::IUnknownImpl {
    fn ShowContactCardForWindow(&self, appwindow: super::super::Foundation::HWND, contact: windows_core::Ref<windows_core::IUnknown>, selection: *const super::super::Foundation::RECT, preferredplacement: FLYOUT_PLACEMENT) -> windows_core::Result<()>;
}
impl IContactManagerInterop_Vtbl {
    pub const fn new<Identity: IContactManagerInterop_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ShowContactCardForWindow<Identity: IContactManagerInterop_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, appwindow: super::super::Foundation::HWND, contact: *mut core::ffi::c_void, selection: *const super::super::Foundation::RECT, preferredplacement: FLYOUT_PLACEMENT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IContactManagerInterop_Impl::ShowContactCardForWindow(this, core::mem::transmute_copy(&appwindow), core::mem::transmute_copy(&contact), core::mem::transmute_copy(&selection), core::mem::transmute_copy(&preferredplacement)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), ShowContactCardForWindow: ShowContactCardForWindow::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContactManagerInterop as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IContactManagerInterop {}
windows_core::imp::define_interface!(IContextMenu, IContextMenu_Vtbl, 0x000214e4_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IContextMenu, windows_core::IUnknown);
impl IContextMenu {
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn QueryContextMenu(&self, hmenu: super::WindowsAndMessaging::HMENU, indexmenu: u32, idcmdfirst: u32, idcmdlast: u32, uflags: u32) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).QueryContextMenu)(windows_core::Interface::as_raw(self), hmenu, indexmenu, idcmdfirst, idcmdlast, uflags) }
    }
    pub unsafe fn InvokeCommand(&self, pici: *const CMINVOKECOMMANDINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InvokeCommand)(windows_core::Interface::as_raw(self), pici).ok() }
    }
    pub unsafe fn GetCommandString(&self, idcmd: usize, utype: u32, preserved: Option<*const u32>, pszname: windows_core::PSTR, cchmax: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCommandString)(windows_core::Interface::as_raw(self), idcmd, utype, preserved.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(pszname), cchmax).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IContextMenu_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub QueryContextMenu: unsafe extern "system" fn(*mut core::ffi::c_void, super::WindowsAndMessaging::HMENU, u32, u32, u32, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    QueryContextMenu: usize,
    pub InvokeCommand: unsafe extern "system" fn(*mut core::ffi::c_void, *const CMINVOKECOMMANDINFO) -> windows_core::HRESULT,
    pub GetCommandString: unsafe extern "system" fn(*mut core::ffi::c_void, usize, u32, *const u32, windows_core::PSTR, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IContextMenu_Impl: windows_core::IUnknownImpl {
    fn QueryContextMenu(&self, hmenu: super::WindowsAndMessaging::HMENU, indexmenu: u32, idcmdfirst: u32, idcmdlast: u32, uflags: u32) -> windows_core::HRESULT;
    fn InvokeCommand(&self, pici: *const CMINVOKECOMMANDINFO) -> windows_core::Result<()>;
    fn GetCommandString(&self, idcmd: usize, utype: u32, preserved: *const u32, pszname: windows_core::PSTR, cchmax: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IContextMenu_Vtbl {
    pub const fn new<Identity: IContextMenu_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn QueryContextMenu<Identity: IContextMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmenu: super::WindowsAndMessaging::HMENU, indexmenu: u32, idcmdfirst: u32, idcmdlast: u32, uflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IContextMenu_Impl::QueryContextMenu(this, core::mem::transmute_copy(&hmenu), core::mem::transmute_copy(&indexmenu), core::mem::transmute_copy(&idcmdfirst), core::mem::transmute_copy(&idcmdlast), core::mem::transmute_copy(&uflags))
            }
        }
        unsafe extern "system" fn InvokeCommand<Identity: IContextMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pici: *const CMINVOKECOMMANDINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IContextMenu_Impl::InvokeCommand(this, core::mem::transmute_copy(&pici)).into()
            }
        }
        unsafe extern "system" fn GetCommandString<Identity: IContextMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, idcmd: usize, utype: u32, preserved: *const u32, pszname: windows_core::PSTR, cchmax: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IContextMenu_Impl::GetCommandString(this, core::mem::transmute_copy(&idcmd), core::mem::transmute_copy(&utype), core::mem::transmute_copy(&preserved), core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cchmax)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryContextMenu: QueryContextMenu::<Identity, OFFSET>,
            InvokeCommand: InvokeCommand::<Identity, OFFSET>,
            GetCommandString: GetCommandString::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContextMenu as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IContextMenu {}
windows_core::imp::define_interface!(IContextMenu2, IContextMenu2_Vtbl, 0x000214f4_0000_0000_c000_000000000046);
impl core::ops::Deref for IContextMenu2 {
    type Target = IContextMenu;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IContextMenu2, windows_core::IUnknown, IContextMenu);
impl IContextMenu2 {
    pub unsafe fn HandleMenuMsg(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).HandleMenuMsg)(windows_core::Interface::as_raw(self), umsg, wparam, lparam).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IContextMenu2_Vtbl {
    pub base__: IContextMenu_Vtbl,
    pub HandleMenuMsg: unsafe extern "system" fn(*mut core::ffi::c_void, u32, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IContextMenu2_Impl: IContextMenu_Impl {
    fn HandleMenuMsg(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IContextMenu2_Vtbl {
    pub const fn new<Identity: IContextMenu2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn HandleMenuMsg<Identity: IContextMenu2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IContextMenu2_Impl::HandleMenuMsg(this, core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
            }
        }
        Self { base__: IContextMenu_Vtbl::new::<Identity, OFFSET>(), HandleMenuMsg: HandleMenuMsg::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContextMenu2 as windows_core::Interface>::IID || iid == &<IContextMenu as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IContextMenu2 {}
windows_core::imp::define_interface!(IContextMenu3, IContextMenu3_Vtbl, 0xbcfce0a0_ec17_11d0_8d10_00a0c90f2719);
impl core::ops::Deref for IContextMenu3 {
    type Target = IContextMenu2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IContextMenu3, windows_core::IUnknown, IContextMenu, IContextMenu2);
impl IContextMenu3 {
    pub unsafe fn HandleMenuMsg2(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, plresult: Option<*mut super::super::Foundation::LRESULT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).HandleMenuMsg2)(windows_core::Interface::as_raw(self), umsg, wparam, lparam, plresult.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IContextMenu3_Vtbl {
    pub base__: IContextMenu2_Vtbl,
    pub HandleMenuMsg2: unsafe extern "system" fn(*mut core::ffi::c_void, u32, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM, *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IContextMenu3_Impl: IContextMenu2_Impl {
    fn HandleMenuMsg2(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, plresult: *mut super::super::Foundation::LRESULT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IContextMenu3_Vtbl {
    pub const fn new<Identity: IContextMenu3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn HandleMenuMsg2<Identity: IContextMenu3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, plresult: *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IContextMenu3_Impl::HandleMenuMsg2(this, core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam), core::mem::transmute_copy(&plresult)).into()
            }
        }
        Self { base__: IContextMenu2_Vtbl::new::<Identity, OFFSET>(), HandleMenuMsg2: HandleMenuMsg2::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContextMenu3 as windows_core::Interface>::IID || iid == &<IContextMenu as windows_core::Interface>::IID || iid == &<IContextMenu2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IContextMenu3 {}
windows_core::imp::define_interface!(IContextMenuCB, IContextMenuCB_Vtbl, 0x3409e930_5a39_11d1_83fa_00a0c90dc849);
windows_core::imp::interface_hierarchy!(IContextMenuCB, windows_core::IUnknown);
impl IContextMenuCB {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CallBack<P0, P2>(&self, psf: P0, hwndowner: Option<super::super::Foundation::HWND>, pdtobj: P2, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellFolder>,
        P2: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).CallBack)(windows_core::Interface::as_raw(self), psf.param().abi(), hwndowner.unwrap_or(core::mem::zeroed()) as _, pdtobj.param().abi(), umsg, wparam, lparam).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IContextMenuCB_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub CallBack: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void, u32, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CallBack: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IContextMenuCB_Impl: windows_core::IUnknownImpl {
    fn CallBack(&self, psf: windows_core::Ref<IShellFolder>, hwndowner: super::super::Foundation::HWND, pdtobj: windows_core::Ref<super::super::System::Com::IDataObject>, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IContextMenuCB_Vtbl {
    pub const fn new<Identity: IContextMenuCB_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CallBack<Identity: IContextMenuCB_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND, pdtobj: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IContextMenuCB_Impl::CallBack(this, core::mem::transmute_copy(&psf), core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&pdtobj), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CallBack: CallBack::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContextMenuCB as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IContextMenuCB {}
windows_core::imp::define_interface!(IContextMenuSite, IContextMenuSite_Vtbl, 0x0811aebe_0b87_4c54_9e72_548cf649016b);
windows_core::imp::interface_hierarchy!(IContextMenuSite, windows_core::IUnknown);
impl IContextMenuSite {
    pub unsafe fn DoContextMenuPopup<P0>(&self, punkcontextmenu: P0, fflags: u32, pt: super::super::Foundation::POINT) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).DoContextMenuPopup)(windows_core::Interface::as_raw(self), punkcontextmenu.param().abi(), fflags, core::mem::transmute(pt)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IContextMenuSite_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub DoContextMenuPopup: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, super::super::Foundation::POINT) -> windows_core::HRESULT,
}
pub trait IContextMenuSite_Impl: windows_core::IUnknownImpl {
    fn DoContextMenuPopup(&self, punkcontextmenu: windows_core::Ref<windows_core::IUnknown>, fflags: u32, pt: &super::super::Foundation::POINT) -> windows_core::Result<()>;
}
impl IContextMenuSite_Vtbl {
    pub const fn new<Identity: IContextMenuSite_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn DoContextMenuPopup<Identity: IContextMenuSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkcontextmenu: *mut core::ffi::c_void, fflags: u32, pt: super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IContextMenuSite_Impl::DoContextMenuPopup(this, core::mem::transmute_copy(&punkcontextmenu), core::mem::transmute_copy(&fflags), core::mem::transmute(&pt)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), DoContextMenuPopup: DoContextMenuPopup::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IContextMenuSite as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IContextMenuSite {}
windows_core::imp::define_interface!(ICopyHookA, ICopyHookA_Vtbl, 0x000214ef_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(ICopyHookA, windows_core::IUnknown);
impl ICopyHookA {
    pub unsafe fn CopyCallback<P3, P5>(&self, hwnd: Option<super::super::Foundation::HWND>, wfunc: u32, wflags: u32, pszsrcfile: P3, dwsrcattribs: u32, pszdestfile: P5, dwdestattribs: u32) -> u32
    where
        P3: windows_core::Param<windows_core::PCSTR>,
        P5: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CopyCallback)(windows_core::Interface::as_raw(self), hwnd.unwrap_or(core::mem::zeroed()) as _, wfunc, wflags, pszsrcfile.param().abi(), dwsrcattribs, pszdestfile.param().abi(), dwdestattribs) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICopyHookA_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CopyCallback: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32, u32, windows_core::PCSTR, u32, windows_core::PCSTR, u32) -> u32,
}
pub trait ICopyHookA_Impl: windows_core::IUnknownImpl {
    fn CopyCallback(&self, hwnd: super::super::Foundation::HWND, wfunc: u32, wflags: u32, pszsrcfile: &windows_core::PCSTR, dwsrcattribs: u32, pszdestfile: &windows_core::PCSTR, dwdestattribs: u32) -> u32;
}
impl ICopyHookA_Vtbl {
    pub const fn new<Identity: ICopyHookA_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CopyCallback<Identity: ICopyHookA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, wfunc: u32, wflags: u32, pszsrcfile: windows_core::PCSTR, dwsrcattribs: u32, pszdestfile: windows_core::PCSTR, dwdestattribs: u32) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICopyHookA_Impl::CopyCallback(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&wfunc), core::mem::transmute_copy(&wflags), core::mem::transmute(&pszsrcfile), core::mem::transmute_copy(&dwsrcattribs), core::mem::transmute(&pszdestfile), core::mem::transmute_copy(&dwdestattribs))
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CopyCallback: CopyCallback::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICopyHookA as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICopyHookA {}
windows_core::imp::define_interface!(ICopyHookW, ICopyHookW_Vtbl, 0x000214fc_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(ICopyHookW, windows_core::IUnknown);
impl ICopyHookW {
    pub unsafe fn CopyCallback<P3, P5>(&self, hwnd: Option<super::super::Foundation::HWND>, wfunc: u32, wflags: u32, pszsrcfile: P3, dwsrcattribs: u32, pszdestfile: P5, dwdestattribs: u32) -> u32
    where
        P3: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CopyCallback)(windows_core::Interface::as_raw(self), hwnd.unwrap_or(core::mem::zeroed()) as _, wfunc, wflags, pszsrcfile.param().abi(), dwsrcattribs, pszdestfile.param().abi(), dwdestattribs) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICopyHookW_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CopyCallback: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32, u32, windows_core::PCWSTR, u32, windows_core::PCWSTR, u32) -> u32,
}
pub trait ICopyHookW_Impl: windows_core::IUnknownImpl {
    fn CopyCallback(&self, hwnd: super::super::Foundation::HWND, wfunc: u32, wflags: u32, pszsrcfile: &windows_core::PCWSTR, dwsrcattribs: u32, pszdestfile: &windows_core::PCWSTR, dwdestattribs: u32) -> u32;
}
impl ICopyHookW_Vtbl {
    pub const fn new<Identity: ICopyHookW_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CopyCallback<Identity: ICopyHookW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, wfunc: u32, wflags: u32, pszsrcfile: windows_core::PCWSTR, dwsrcattribs: u32, pszdestfile: windows_core::PCWSTR, dwdestattribs: u32) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICopyHookW_Impl::CopyCallback(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&wfunc), core::mem::transmute_copy(&wflags), core::mem::transmute(&pszsrcfile), core::mem::transmute_copy(&dwsrcattribs), core::mem::transmute(&pszdestfile), core::mem::transmute_copy(&dwdestattribs))
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CopyCallback: CopyCallback::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICopyHookW as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICopyHookW {}
windows_core::imp::define_interface!(ICreateProcessInputs, ICreateProcessInputs_Vtbl, 0xf6ef6140_e26f_4d82_bac4_e9ba5fd239a8);
windows_core::imp::interface_hierarchy!(ICreateProcessInputs, windows_core::IUnknown);
impl ICreateProcessInputs {
    pub unsafe fn GetCreateFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCreateFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCreateFlags(&self, dwcreationflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCreateFlags)(windows_core::Interface::as_raw(self), dwcreationflags).ok() }
    }
    pub unsafe fn AddCreateFlags(&self, dwcreationflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddCreateFlags)(windows_core::Interface::as_raw(self), dwcreationflags).ok() }
    }
    pub unsafe fn SetHotKey(&self, whotkey: u16) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetHotKey)(windows_core::Interface::as_raw(self), whotkey).ok() }
    }
    pub unsafe fn AddStartupFlags(&self, dwstartupinfoflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddStartupFlags)(windows_core::Interface::as_raw(self), dwstartupinfoflags).ok() }
    }
    pub unsafe fn SetTitle<P0>(&self, psztitle: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTitle)(windows_core::Interface::as_raw(self), psztitle.param().abi()).ok() }
    }
    pub unsafe fn SetEnvironmentVariable<P0, P1>(&self, pszname: P0, pszvalue: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEnvironmentVariable)(windows_core::Interface::as_raw(self), pszname.param().abi(), pszvalue.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICreateProcessInputs_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCreateFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCreateFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub AddCreateFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetHotKey: unsafe extern "system" fn(*mut core::ffi::c_void, u16) -> windows_core::HRESULT,
    pub AddStartupFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetTitle: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetEnvironmentVariable: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait ICreateProcessInputs_Impl: windows_core::IUnknownImpl {
    fn GetCreateFlags(&self) -> windows_core::Result<u32>;
    fn SetCreateFlags(&self, dwcreationflags: u32) -> windows_core::Result<()>;
    fn AddCreateFlags(&self, dwcreationflags: u32) -> windows_core::Result<()>;
    fn SetHotKey(&self, whotkey: u16) -> windows_core::Result<()>;
    fn AddStartupFlags(&self, dwstartupinfoflags: u32) -> windows_core::Result<()>;
    fn SetTitle(&self, psztitle: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetEnvironmentVariable(&self, pszname: &windows_core::PCWSTR, pszvalue: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl ICreateProcessInputs_Vtbl {
    pub const fn new<Identity: ICreateProcessInputs_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCreateFlags<Identity: ICreateProcessInputs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcreationflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICreateProcessInputs_Impl::GetCreateFlags(this) {
                    Ok(ok__) => {
                        pdwcreationflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCreateFlags<Identity: ICreateProcessInputs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcreationflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICreateProcessInputs_Impl::SetCreateFlags(this, core::mem::transmute_copy(&dwcreationflags)).into()
            }
        }
        unsafe extern "system" fn AddCreateFlags<Identity: ICreateProcessInputs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcreationflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICreateProcessInputs_Impl::AddCreateFlags(this, core::mem::transmute_copy(&dwcreationflags)).into()
            }
        }
        unsafe extern "system" fn SetHotKey<Identity: ICreateProcessInputs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, whotkey: u16) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICreateProcessInputs_Impl::SetHotKey(this, core::mem::transmute_copy(&whotkey)).into()
            }
        }
        unsafe extern "system" fn AddStartupFlags<Identity: ICreateProcessInputs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstartupinfoflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICreateProcessInputs_Impl::AddStartupFlags(this, core::mem::transmute_copy(&dwstartupinfoflags)).into()
            }
        }
        unsafe extern "system" fn SetTitle<Identity: ICreateProcessInputs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztitle: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICreateProcessInputs_Impl::SetTitle(this, core::mem::transmute(&psztitle)).into()
            }
        }
        unsafe extern "system" fn SetEnvironmentVariable<Identity: ICreateProcessInputs_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR, pszvalue: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICreateProcessInputs_Impl::SetEnvironmentVariable(this, core::mem::transmute(&pszname), core::mem::transmute(&pszvalue)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCreateFlags: GetCreateFlags::<Identity, OFFSET>,
            SetCreateFlags: SetCreateFlags::<Identity, OFFSET>,
            AddCreateFlags: AddCreateFlags::<Identity, OFFSET>,
            SetHotKey: SetHotKey::<Identity, OFFSET>,
            AddStartupFlags: AddStartupFlags::<Identity, OFFSET>,
            SetTitle: SetTitle::<Identity, OFFSET>,
            SetEnvironmentVariable: SetEnvironmentVariable::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICreateProcessInputs as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICreateProcessInputs {}
windows_core::imp::define_interface!(ICreatingProcess, ICreatingProcess_Vtbl, 0xc2b937a9_3110_4398_8a56_f34c6342d244);
windows_core::imp::interface_hierarchy!(ICreatingProcess, windows_core::IUnknown);
impl ICreatingProcess {
    pub unsafe fn OnCreating<P0>(&self, pcpi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICreateProcessInputs>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnCreating)(windows_core::Interface::as_raw(self), pcpi.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICreatingProcess_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnCreating: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ICreatingProcess_Impl: windows_core::IUnknownImpl {
    fn OnCreating(&self, pcpi: windows_core::Ref<ICreateProcessInputs>) -> windows_core::Result<()>;
}
impl ICreatingProcess_Vtbl {
    pub const fn new<Identity: ICreatingProcess_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnCreating<Identity: ICreatingProcess_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICreatingProcess_Impl::OnCreating(this, core::mem::transmute_copy(&pcpi)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnCreating: OnCreating::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICreatingProcess as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICreatingProcess {}
windows_core::imp::define_interface!(ICredentialProvider, ICredentialProvider_Vtbl, 0xd27c3481_5a1c_45b2_8aaa_c20ebbe8229e);
windows_core::imp::interface_hierarchy!(ICredentialProvider, windows_core::IUnknown);
impl ICredentialProvider {
    pub unsafe fn SetUsageScenario(&self, cpus: CREDENTIAL_PROVIDER_USAGE_SCENARIO, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetUsageScenario)(windows_core::Interface::as_raw(self), cpus, dwflags).ok() }
    }
    pub unsafe fn SetSerialization(&self, pcpcs: *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSerialization)(windows_core::Interface::as_raw(self), pcpcs).ok() }
    }
    pub unsafe fn Advise<P0>(&self, pcpe: P0, upadvisecontext: usize) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderEvents>,
    {
        unsafe { (windows_core::Interface::vtable(self).Advise)(windows_core::Interface::as_raw(self), pcpe.param().abi(), upadvisecontext).ok() }
    }
    pub unsafe fn UnAdvise(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UnAdvise)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetFieldDescriptorCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldDescriptorCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFieldDescriptorAt(&self, dwindex: u32) -> windows_core::Result<*mut CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldDescriptorAt)(windows_core::Interface::as_raw(self), dwindex, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCredentialCount(&self, pdwcount: *mut u32, pdwdefault: *mut u32, pbautologonwithdefault: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCredentialCount)(windows_core::Interface::as_raw(self), pdwcount as _, pdwdefault as _, pbautologonwithdefault as _).ok() }
    }
    pub unsafe fn GetCredentialAt(&self, dwindex: u32) -> windows_core::Result<ICredentialProviderCredential> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCredentialAt)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProvider_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetUsageScenario: unsafe extern "system" fn(*mut core::ffi::c_void, CREDENTIAL_PROVIDER_USAGE_SCENARIO, u32) -> windows_core::HRESULT,
    pub SetSerialization: unsafe extern "system" fn(*mut core::ffi::c_void, *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::HRESULT,
    pub Advise: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, usize) -> windows_core::HRESULT,
    pub UnAdvise: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFieldDescriptorCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetFieldDescriptorAt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR) -> windows_core::HRESULT,
    pub GetCredentialCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub GetCredentialAt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ICredentialProvider_Impl: windows_core::IUnknownImpl {
    fn SetUsageScenario(&self, cpus: CREDENTIAL_PROVIDER_USAGE_SCENARIO, dwflags: u32) -> windows_core::Result<()>;
    fn SetSerialization(&self, pcpcs: *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::Result<()>;
    fn Advise(&self, pcpe: windows_core::Ref<ICredentialProviderEvents>, upadvisecontext: usize) -> windows_core::Result<()>;
    fn UnAdvise(&self) -> windows_core::Result<()>;
    fn GetFieldDescriptorCount(&self) -> windows_core::Result<u32>;
    fn GetFieldDescriptorAt(&self, dwindex: u32) -> windows_core::Result<*mut CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR>;
    fn GetCredentialCount(&self, pdwcount: *mut u32, pdwdefault: *mut u32, pbautologonwithdefault: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn GetCredentialAt(&self, dwindex: u32) -> windows_core::Result<ICredentialProviderCredential>;
}
impl ICredentialProvider_Vtbl {
    pub const fn new<Identity: ICredentialProvider_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetUsageScenario<Identity: ICredentialProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cpus: CREDENTIAL_PROVIDER_USAGE_SCENARIO, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProvider_Impl::SetUsageScenario(this, core::mem::transmute_copy(&cpus), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn SetSerialization<Identity: ICredentialProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpcs: *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProvider_Impl::SetSerialization(this, core::mem::transmute_copy(&pcpcs)).into()
            }
        }
        unsafe extern "system" fn Advise<Identity: ICredentialProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpe: *mut core::ffi::c_void, upadvisecontext: usize) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProvider_Impl::Advise(this, core::mem::transmute_copy(&pcpe), core::mem::transmute_copy(&upadvisecontext)).into()
            }
        }
        unsafe extern "system" fn UnAdvise<Identity: ICredentialProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProvider_Impl::UnAdvise(this).into()
            }
        }
        unsafe extern "system" fn GetFieldDescriptorCount<Identity: ICredentialProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProvider_Impl::GetFieldDescriptorCount(this) {
                    Ok(ok__) => {
                        pdwcount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFieldDescriptorAt<Identity: ICredentialProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppcpfd: *mut *mut CREDENTIAL_PROVIDER_FIELD_DESCRIPTOR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProvider_Impl::GetFieldDescriptorAt(this, core::mem::transmute_copy(&dwindex)) {
                    Ok(ok__) => {
                        ppcpfd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCredentialCount<Identity: ICredentialProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcount: *mut u32, pdwdefault: *mut u32, pbautologonwithdefault: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProvider_Impl::GetCredentialCount(this, core::mem::transmute_copy(&pdwcount), core::mem::transmute_copy(&pdwdefault), core::mem::transmute_copy(&pbautologonwithdefault)).into()
            }
        }
        unsafe extern "system" fn GetCredentialAt<Identity: ICredentialProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppcpc: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProvider_Impl::GetCredentialAt(this, core::mem::transmute_copy(&dwindex)) {
                    Ok(ok__) => {
                        ppcpc.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetUsageScenario: SetUsageScenario::<Identity, OFFSET>,
            SetSerialization: SetSerialization::<Identity, OFFSET>,
            Advise: Advise::<Identity, OFFSET>,
            UnAdvise: UnAdvise::<Identity, OFFSET>,
            GetFieldDescriptorCount: GetFieldDescriptorCount::<Identity, OFFSET>,
            GetFieldDescriptorAt: GetFieldDescriptorAt::<Identity, OFFSET>,
            GetCredentialCount: GetCredentialCount::<Identity, OFFSET>,
            GetCredentialAt: GetCredentialAt::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProvider as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICredentialProvider {}
windows_core::imp::define_interface!(ICredentialProviderCredential, ICredentialProviderCredential_Vtbl, 0x63913a93_40c1_481a_818d_4072ff8c70cc);
windows_core::imp::interface_hierarchy!(ICredentialProviderCredential, windows_core::IUnknown);
impl ICredentialProviderCredential {
    pub unsafe fn Advise<P0>(&self, pcpce: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredentialEvents>,
    {
        unsafe { (windows_core::Interface::vtable(self).Advise)(windows_core::Interface::as_raw(self), pcpce.param().abi()).ok() }
    }
    pub unsafe fn UnAdvise(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UnAdvise)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetSelected(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SetSelected)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetDeselected(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetDeselected)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetFieldState(&self, dwfieldid: u32, pcpfs: *mut CREDENTIAL_PROVIDER_FIELD_STATE, pcpfis: *mut CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFieldState)(windows_core::Interface::as_raw(self), dwfieldid, pcpfs as _, pcpfis as _).ok() }
    }
    pub unsafe fn GetStringValue(&self, dwfieldid: u32) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetStringValue)(windows_core::Interface::as_raw(self), dwfieldid, &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetBitmapValue(&self, dwfieldid: u32) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBitmapValue)(windows_core::Interface::as_raw(self), dwfieldid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCheckboxValue(&self, dwfieldid: u32, pbchecked: *mut windows_core::BOOL, ppszlabel: *mut windows_core::PWSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCheckboxValue)(windows_core::Interface::as_raw(self), dwfieldid, pbchecked as _, ppszlabel as _).ok() }
    }
    pub unsafe fn GetSubmitButtonValue(&self, dwfieldid: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSubmitButtonValue)(windows_core::Interface::as_raw(self), dwfieldid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetComboBoxValueCount(&self, dwfieldid: u32, pcitems: *mut u32, pdwselecteditem: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetComboBoxValueCount)(windows_core::Interface::as_raw(self), dwfieldid, pcitems as _, pdwselecteditem as _).ok() }
    }
    pub unsafe fn GetComboBoxValueAt(&self, dwfieldid: u32, dwitem: u32) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetComboBoxValueAt)(windows_core::Interface::as_raw(self), dwfieldid, dwitem, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetStringValue<P1>(&self, dwfieldid: u32, psz: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetStringValue)(windows_core::Interface::as_raw(self), dwfieldid, psz.param().abi()).ok() }
    }
    pub unsafe fn SetCheckboxValue(&self, dwfieldid: u32, bchecked: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCheckboxValue)(windows_core::Interface::as_raw(self), dwfieldid, bchecked.into()).ok() }
    }
    pub unsafe fn SetComboBoxSelectedValue(&self, dwfieldid: u32, dwselecteditem: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetComboBoxSelectedValue)(windows_core::Interface::as_raw(self), dwfieldid, dwselecteditem).ok() }
    }
    pub unsafe fn CommandLinkClicked(&self, dwfieldid: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CommandLinkClicked)(windows_core::Interface::as_raw(self), dwfieldid).ok() }
    }
    pub unsafe fn GetSerialization(&self, pcpgsr: *mut CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE, pcpcs: *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, ppszoptionalstatustext: *mut windows_core::PWSTR, pcpsioptionalstatusicon: *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSerialization)(windows_core::Interface::as_raw(self), pcpgsr as _, pcpcs as _, ppszoptionalstatustext as _, pcpsioptionalstatusicon as _).ok() }
    }
    pub unsafe fn ReportResult(&self, ntsstatus: super::super::Foundation::NTSTATUS, ntssubstatus: super::super::Foundation::NTSTATUS, ppszoptionalstatustext: *mut windows_core::PWSTR, pcpsioptionalstatusicon: *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReportResult)(windows_core::Interface::as_raw(self), ntsstatus, ntssubstatus, ppszoptionalstatustext as _, pcpsioptionalstatusicon as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProviderCredential_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Advise: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UnAdvise: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetSelected: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub SetDeselected: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFieldState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut CREDENTIAL_PROVIDER_FIELD_STATE, *mut CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::HRESULT,
    pub GetStringValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetBitmapValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetBitmapValue: usize,
    pub GetCheckboxValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut windows_core::BOOL, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetSubmitButtonValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetComboBoxValueCount: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetComboBoxValueAt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub SetStringValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetCheckboxValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::BOOL) -> windows_core::HRESULT,
    pub SetComboBoxSelectedValue: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub CommandLinkClicked: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSerialization: unsafe extern "system" fn(*mut core::ffi::c_void, *mut CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE, *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, *mut windows_core::PWSTR, *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::HRESULT,
    pub ReportResult: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::NTSTATUS, super::super::Foundation::NTSTATUS, *mut windows_core::PWSTR, *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ICredentialProviderCredential_Impl: windows_core::IUnknownImpl {
    fn Advise(&self, pcpce: windows_core::Ref<ICredentialProviderCredentialEvents>) -> windows_core::Result<()>;
    fn UnAdvise(&self) -> windows_core::Result<()>;
    fn SetSelected(&self) -> windows_core::Result<windows_core::BOOL>;
    fn SetDeselected(&self) -> windows_core::Result<()>;
    fn GetFieldState(&self, dwfieldid: u32, pcpfs: *mut CREDENTIAL_PROVIDER_FIELD_STATE, pcpfis: *mut CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::Result<()>;
    fn GetStringValue(&self, dwfieldid: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn GetBitmapValue(&self, dwfieldid: u32) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
    fn GetCheckboxValue(&self, dwfieldid: u32, pbchecked: *mut windows_core::BOOL, ppszlabel: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn GetSubmitButtonValue(&self, dwfieldid: u32) -> windows_core::Result<u32>;
    fn GetComboBoxValueCount(&self, dwfieldid: u32, pcitems: *mut u32, pdwselecteditem: *mut u32) -> windows_core::Result<()>;
    fn GetComboBoxValueAt(&self, dwfieldid: u32, dwitem: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn SetStringValue(&self, dwfieldid: u32, psz: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetCheckboxValue(&self, dwfieldid: u32, bchecked: windows_core::BOOL) -> windows_core::Result<()>;
    fn SetComboBoxSelectedValue(&self, dwfieldid: u32, dwselecteditem: u32) -> windows_core::Result<()>;
    fn CommandLinkClicked(&self, dwfieldid: u32) -> windows_core::Result<()>;
    fn GetSerialization(&self, pcpgsr: *mut CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE, pcpcs: *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, ppszoptionalstatustext: *mut windows_core::PWSTR, pcpsioptionalstatusicon: *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::Result<()>;
    fn ReportResult(&self, ntsstatus: super::super::Foundation::NTSTATUS, ntssubstatus: super::super::Foundation::NTSTATUS, ppszoptionalstatustext: *mut windows_core::PWSTR, pcpsioptionalstatusicon: *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ICredentialProviderCredential_Vtbl {
    pub const fn new<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Advise<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpce: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::Advise(this, core::mem::transmute_copy(&pcpce)).into()
            }
        }
        unsafe extern "system" fn UnAdvise<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::UnAdvise(this).into()
            }
        }
        unsafe extern "system" fn SetSelected<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbautologon: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderCredential_Impl::SetSelected(this) {
                    Ok(ok__) => {
                        pbautologon.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetDeselected<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::SetDeselected(this).into()
            }
        }
        unsafe extern "system" fn GetFieldState<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, pcpfs: *mut CREDENTIAL_PROVIDER_FIELD_STATE, pcpfis: *mut CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::GetFieldState(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&pcpfs), core::mem::transmute_copy(&pcpfis)).into()
            }
        }
        unsafe extern "system" fn GetStringValue<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, ppsz: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderCredential_Impl::GetStringValue(this, core::mem::transmute_copy(&dwfieldid)) {
                    Ok(ok__) => {
                        ppsz.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBitmapValue<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, phbmp: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderCredential_Impl::GetBitmapValue(this, core::mem::transmute_copy(&dwfieldid)) {
                    Ok(ok__) => {
                        phbmp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCheckboxValue<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, pbchecked: *mut windows_core::BOOL, ppszlabel: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::GetCheckboxValue(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&pbchecked), core::mem::transmute_copy(&ppszlabel)).into()
            }
        }
        unsafe extern "system" fn GetSubmitButtonValue<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, pdwadjacentto: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderCredential_Impl::GetSubmitButtonValue(this, core::mem::transmute_copy(&dwfieldid)) {
                    Ok(ok__) => {
                        pdwadjacentto.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetComboBoxValueCount<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, pcitems: *mut u32, pdwselecteditem: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::GetComboBoxValueCount(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&pcitems), core::mem::transmute_copy(&pdwselecteditem)).into()
            }
        }
        unsafe extern "system" fn GetComboBoxValueAt<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, dwitem: u32, ppszitem: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderCredential_Impl::GetComboBoxValueAt(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&dwitem)) {
                    Ok(ok__) => {
                        ppszitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetStringValue<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, psz: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::SetStringValue(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute(&psz)).into()
            }
        }
        unsafe extern "system" fn SetCheckboxValue<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, bchecked: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::SetCheckboxValue(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&bchecked)).into()
            }
        }
        unsafe extern "system" fn SetComboBoxSelectedValue<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32, dwselecteditem: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::SetComboBoxSelectedValue(this, core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&dwselecteditem)).into()
            }
        }
        unsafe extern "system" fn CommandLinkClicked<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwfieldid: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::CommandLinkClicked(this, core::mem::transmute_copy(&dwfieldid)).into()
            }
        }
        unsafe extern "system" fn GetSerialization<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpgsr: *mut CREDENTIAL_PROVIDER_GET_SERIALIZATION_RESPONSE, pcpcs: *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, ppszoptionalstatustext: *mut windows_core::PWSTR, pcpsioptionalstatusicon: *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::GetSerialization(this, core::mem::transmute_copy(&pcpgsr), core::mem::transmute_copy(&pcpcs), core::mem::transmute_copy(&ppszoptionalstatustext), core::mem::transmute_copy(&pcpsioptionalstatusicon)).into()
            }
        }
        unsafe extern "system" fn ReportResult<Identity: ICredentialProviderCredential_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ntsstatus: super::super::Foundation::NTSTATUS, ntssubstatus: super::super::Foundation::NTSTATUS, ppszoptionalstatustext: *mut windows_core::PWSTR, pcpsioptionalstatusicon: *mut CREDENTIAL_PROVIDER_STATUS_ICON) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredential_Impl::ReportResult(this, core::mem::transmute_copy(&ntsstatus), core::mem::transmute_copy(&ntssubstatus), core::mem::transmute_copy(&ppszoptionalstatustext), core::mem::transmute_copy(&pcpsioptionalstatusicon)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Advise: Advise::<Identity, OFFSET>,
            UnAdvise: UnAdvise::<Identity, OFFSET>,
            SetSelected: SetSelected::<Identity, OFFSET>,
            SetDeselected: SetDeselected::<Identity, OFFSET>,
            GetFieldState: GetFieldState::<Identity, OFFSET>,
            GetStringValue: GetStringValue::<Identity, OFFSET>,
            GetBitmapValue: GetBitmapValue::<Identity, OFFSET>,
            GetCheckboxValue: GetCheckboxValue::<Identity, OFFSET>,
            GetSubmitButtonValue: GetSubmitButtonValue::<Identity, OFFSET>,
            GetComboBoxValueCount: GetComboBoxValueCount::<Identity, OFFSET>,
            GetComboBoxValueAt: GetComboBoxValueAt::<Identity, OFFSET>,
            SetStringValue: SetStringValue::<Identity, OFFSET>,
            SetCheckboxValue: SetCheckboxValue::<Identity, OFFSET>,
            SetComboBoxSelectedValue: SetComboBoxSelectedValue::<Identity, OFFSET>,
            CommandLinkClicked: CommandLinkClicked::<Identity, OFFSET>,
            GetSerialization: GetSerialization::<Identity, OFFSET>,
            ReportResult: ReportResult::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderCredential as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ICredentialProviderCredential {}
windows_core::imp::define_interface!(ICredentialProviderCredential2, ICredentialProviderCredential2_Vtbl, 0xfd672c54_40ea_4d6e_9b49_cfb1a7507bd7);
impl core::ops::Deref for ICredentialProviderCredential2 {
    type Target = ICredentialProviderCredential;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ICredentialProviderCredential2, windows_core::IUnknown, ICredentialProviderCredential);
impl ICredentialProviderCredential2 {
    pub unsafe fn GetUserSid(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetUserSid)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProviderCredential2_Vtbl {
    pub base__: ICredentialProviderCredential_Vtbl,
    pub GetUserSid: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ICredentialProviderCredential2_Impl: ICredentialProviderCredential_Impl {
    fn GetUserSid(&self) -> windows_core::Result<windows_core::PWSTR>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ICredentialProviderCredential2_Vtbl {
    pub const fn new<Identity: ICredentialProviderCredential2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetUserSid<Identity: ICredentialProviderCredential2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sid: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderCredential2_Impl::GetUserSid(this) {
                    Ok(ok__) => {
                        sid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: ICredentialProviderCredential_Vtbl::new::<Identity, OFFSET>(), GetUserSid: GetUserSid::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderCredential2 as windows_core::Interface>::IID || iid == &<ICredentialProviderCredential as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ICredentialProviderCredential2 {}
windows_core::imp::define_interface!(ICredentialProviderCredentialEvents, ICredentialProviderCredentialEvents_Vtbl, 0xfa6fa76b_66b7_4b11_95f1_86171118e816);
windows_core::imp::interface_hierarchy!(ICredentialProviderCredentialEvents, windows_core::IUnknown);
impl ICredentialProviderCredentialEvents {
    pub unsafe fn SetFieldState<P0>(&self, pcpc: P0, dwfieldid: u32, cpfs: CREDENTIAL_PROVIDER_FIELD_STATE) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredential>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFieldState)(windows_core::Interface::as_raw(self), pcpc.param().abi(), dwfieldid, cpfs).ok() }
    }
    pub unsafe fn SetFieldInteractiveState<P0>(&self, pcpc: P0, dwfieldid: u32, cpfis: CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredential>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFieldInteractiveState)(windows_core::Interface::as_raw(self), pcpc.param().abi(), dwfieldid, cpfis).ok() }
    }
    pub unsafe fn SetFieldString<P0, P2>(&self, pcpc: P0, dwfieldid: u32, psz: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredential>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFieldString)(windows_core::Interface::as_raw(self), pcpc.param().abi(), dwfieldid, psz.param().abi()).ok() }
    }
    pub unsafe fn SetFieldCheckbox<P0, P3>(&self, pcpc: P0, dwfieldid: u32, bchecked: bool, pszlabel: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredential>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFieldCheckbox)(windows_core::Interface::as_raw(self), pcpc.param().abi(), dwfieldid, bchecked.into(), pszlabel.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn SetFieldBitmap<P0>(&self, pcpc: P0, dwfieldid: u32, hbmp: super::super::Graphics::Gdi::HBITMAP) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredential>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFieldBitmap)(windows_core::Interface::as_raw(self), pcpc.param().abi(), dwfieldid, hbmp).ok() }
    }
    pub unsafe fn SetFieldComboBoxSelectedItem<P0>(&self, pcpc: P0, dwfieldid: u32, dwselecteditem: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredential>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFieldComboBoxSelectedItem)(windows_core::Interface::as_raw(self), pcpc.param().abi(), dwfieldid, dwselecteditem).ok() }
    }
    pub unsafe fn DeleteFieldComboBoxItem<P0>(&self, pcpc: P0, dwfieldid: u32, dwitem: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredential>,
    {
        unsafe { (windows_core::Interface::vtable(self).DeleteFieldComboBoxItem)(windows_core::Interface::as_raw(self), pcpc.param().abi(), dwfieldid, dwitem).ok() }
    }
    pub unsafe fn AppendFieldComboBoxItem<P0, P2>(&self, pcpc: P0, dwfieldid: u32, pszitem: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredential>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendFieldComboBoxItem)(windows_core::Interface::as_raw(self), pcpc.param().abi(), dwfieldid, pszitem.param().abi()).ok() }
    }
    pub unsafe fn SetFieldSubmitButton<P0>(&self, pcpc: P0, dwfieldid: u32, dwadjacentto: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredential>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFieldSubmitButton)(windows_core::Interface::as_raw(self), pcpc.param().abi(), dwfieldid, dwadjacentto).ok() }
    }
    pub unsafe fn OnCreatingWindow(&self) -> windows_core::Result<super::super::Foundation::HWND> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OnCreatingWindow)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProviderCredentialEvents_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetFieldState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, CREDENTIAL_PROVIDER_FIELD_STATE) -> windows_core::HRESULT,
    pub SetFieldInteractiveState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::HRESULT,
    pub SetFieldString: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetFieldCheckbox: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, windows_core::BOOL, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub SetFieldBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    SetFieldBitmap: usize,
    pub SetFieldComboBoxSelectedItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub DeleteFieldComboBoxItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub AppendFieldComboBoxItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetFieldSubmitButton: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OnCreatingWindow: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::HWND) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ICredentialProviderCredentialEvents_Impl: windows_core::IUnknownImpl {
    fn SetFieldState(&self, pcpc: windows_core::Ref<ICredentialProviderCredential>, dwfieldid: u32, cpfs: CREDENTIAL_PROVIDER_FIELD_STATE) -> windows_core::Result<()>;
    fn SetFieldInteractiveState(&self, pcpc: windows_core::Ref<ICredentialProviderCredential>, dwfieldid: u32, cpfis: CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::Result<()>;
    fn SetFieldString(&self, pcpc: windows_core::Ref<ICredentialProviderCredential>, dwfieldid: u32, psz: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFieldCheckbox(&self, pcpc: windows_core::Ref<ICredentialProviderCredential>, dwfieldid: u32, bchecked: windows_core::BOOL, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFieldBitmap(&self, pcpc: windows_core::Ref<ICredentialProviderCredential>, dwfieldid: u32, hbmp: super::super::Graphics::Gdi::HBITMAP) -> windows_core::Result<()>;
    fn SetFieldComboBoxSelectedItem(&self, pcpc: windows_core::Ref<ICredentialProviderCredential>, dwfieldid: u32, dwselecteditem: u32) -> windows_core::Result<()>;
    fn DeleteFieldComboBoxItem(&self, pcpc: windows_core::Ref<ICredentialProviderCredential>, dwfieldid: u32, dwitem: u32) -> windows_core::Result<()>;
    fn AppendFieldComboBoxItem(&self, pcpc: windows_core::Ref<ICredentialProviderCredential>, dwfieldid: u32, pszitem: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFieldSubmitButton(&self, pcpc: windows_core::Ref<ICredentialProviderCredential>, dwfieldid: u32, dwadjacentto: u32) -> windows_core::Result<()>;
    fn OnCreatingWindow(&self) -> windows_core::Result<super::super::Foundation::HWND>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ICredentialProviderCredentialEvents_Vtbl {
    pub const fn new<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetFieldState<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, cpfs: CREDENTIAL_PROVIDER_FIELD_STATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents_Impl::SetFieldState(this, core::mem::transmute_copy(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&cpfs)).into()
            }
        }
        unsafe extern "system" fn SetFieldInteractiveState<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, cpfis: CREDENTIAL_PROVIDER_FIELD_INTERACTIVE_STATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents_Impl::SetFieldInteractiveState(this, core::mem::transmute_copy(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&cpfis)).into()
            }
        }
        unsafe extern "system" fn SetFieldString<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, psz: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents_Impl::SetFieldString(this, core::mem::transmute_copy(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute(&psz)).into()
            }
        }
        unsafe extern "system" fn SetFieldCheckbox<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, bchecked: windows_core::BOOL, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents_Impl::SetFieldCheckbox(this, core::mem::transmute_copy(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&bchecked), core::mem::transmute(&pszlabel)).into()
            }
        }
        unsafe extern "system" fn SetFieldBitmap<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, hbmp: super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents_Impl::SetFieldBitmap(this, core::mem::transmute_copy(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&hbmp)).into()
            }
        }
        unsafe extern "system" fn SetFieldComboBoxSelectedItem<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, dwselecteditem: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents_Impl::SetFieldComboBoxSelectedItem(this, core::mem::transmute_copy(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&dwselecteditem)).into()
            }
        }
        unsafe extern "system" fn DeleteFieldComboBoxItem<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, dwitem: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents_Impl::DeleteFieldComboBoxItem(this, core::mem::transmute_copy(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&dwitem)).into()
            }
        }
        unsafe extern "system" fn AppendFieldComboBoxItem<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, pszitem: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents_Impl::AppendFieldComboBoxItem(this, core::mem::transmute_copy(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute(&pszitem)).into()
            }
        }
        unsafe extern "system" fn SetFieldSubmitButton<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpc: *mut core::ffi::c_void, dwfieldid: u32, dwadjacentto: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents_Impl::SetFieldSubmitButton(this, core::mem::transmute_copy(&pcpc), core::mem::transmute_copy(&dwfieldid), core::mem::transmute_copy(&dwadjacentto)).into()
            }
        }
        unsafe extern "system" fn OnCreatingWindow<Identity: ICredentialProviderCredentialEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwndowner: *mut super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderCredentialEvents_Impl::OnCreatingWindow(this) {
                    Ok(ok__) => {
                        phwndowner.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFieldState: SetFieldState::<Identity, OFFSET>,
            SetFieldInteractiveState: SetFieldInteractiveState::<Identity, OFFSET>,
            SetFieldString: SetFieldString::<Identity, OFFSET>,
            SetFieldCheckbox: SetFieldCheckbox::<Identity, OFFSET>,
            SetFieldBitmap: SetFieldBitmap::<Identity, OFFSET>,
            SetFieldComboBoxSelectedItem: SetFieldComboBoxSelectedItem::<Identity, OFFSET>,
            DeleteFieldComboBoxItem: DeleteFieldComboBoxItem::<Identity, OFFSET>,
            AppendFieldComboBoxItem: AppendFieldComboBoxItem::<Identity, OFFSET>,
            SetFieldSubmitButton: SetFieldSubmitButton::<Identity, OFFSET>,
            OnCreatingWindow: OnCreatingWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderCredentialEvents as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ICredentialProviderCredentialEvents {}
windows_core::imp::define_interface!(ICredentialProviderCredentialEvents2, ICredentialProviderCredentialEvents2_Vtbl, 0xb53c00b6_9922_4b78_b1f4_ddfe774dc39b);
impl core::ops::Deref for ICredentialProviderCredentialEvents2 {
    type Target = ICredentialProviderCredentialEvents;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ICredentialProviderCredentialEvents2, windows_core::IUnknown, ICredentialProviderCredentialEvents);
impl ICredentialProviderCredentialEvents2 {
    pub unsafe fn BeginFieldUpdates(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).BeginFieldUpdates)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EndFieldUpdates(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndFieldUpdates)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetFieldOptions<P0>(&self, credential: P0, fieldid: u32, options: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderCredential>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFieldOptions)(windows_core::Interface::as_raw(self), credential.param().abi(), fieldid, options).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProviderCredentialEvents2_Vtbl {
    pub base__: ICredentialProviderCredentialEvents_Vtbl,
    pub BeginFieldUpdates: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EndFieldUpdates: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetFieldOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ICredentialProviderCredentialEvents2_Impl: ICredentialProviderCredentialEvents_Impl {
    fn BeginFieldUpdates(&self) -> windows_core::Result<()>;
    fn EndFieldUpdates(&self) -> windows_core::Result<()>;
    fn SetFieldOptions(&self, credential: windows_core::Ref<ICredentialProviderCredential>, fieldid: u32, options: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ICredentialProviderCredentialEvents2_Vtbl {
    pub const fn new<Identity: ICredentialProviderCredentialEvents2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn BeginFieldUpdates<Identity: ICredentialProviderCredentialEvents2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents2_Impl::BeginFieldUpdates(this).into()
            }
        }
        unsafe extern "system" fn EndFieldUpdates<Identity: ICredentialProviderCredentialEvents2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents2_Impl::EndFieldUpdates(this).into()
            }
        }
        unsafe extern "system" fn SetFieldOptions<Identity: ICredentialProviderCredentialEvents2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, credential: *mut core::ffi::c_void, fieldid: u32, options: CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderCredentialEvents2_Impl::SetFieldOptions(this, core::mem::transmute_copy(&credential), core::mem::transmute_copy(&fieldid), core::mem::transmute_copy(&options)).into()
            }
        }
        Self {
            base__: ICredentialProviderCredentialEvents_Vtbl::new::<Identity, OFFSET>(),
            BeginFieldUpdates: BeginFieldUpdates::<Identity, OFFSET>,
            EndFieldUpdates: EndFieldUpdates::<Identity, OFFSET>,
            SetFieldOptions: SetFieldOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderCredentialEvents2 as windows_core::Interface>::IID || iid == &<ICredentialProviderCredentialEvents as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ICredentialProviderCredentialEvents2 {}
windows_core::imp::define_interface!(ICredentialProviderCredentialWithFieldOptions, ICredentialProviderCredentialWithFieldOptions_Vtbl, 0xdbc6fb30_c843_49e3_a645_573e6f39446a);
windows_core::imp::interface_hierarchy!(ICredentialProviderCredentialWithFieldOptions, windows_core::IUnknown);
impl ICredentialProviderCredentialWithFieldOptions {
    pub unsafe fn GetFieldOptions(&self, fieldid: u32) -> windows_core::Result<CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFieldOptions)(windows_core::Interface::as_raw(self), fieldid, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProviderCredentialWithFieldOptions_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetFieldOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS) -> windows_core::HRESULT,
}
pub trait ICredentialProviderCredentialWithFieldOptions_Impl: windows_core::IUnknownImpl {
    fn GetFieldOptions(&self, fieldid: u32) -> windows_core::Result<CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS>;
}
impl ICredentialProviderCredentialWithFieldOptions_Vtbl {
    pub const fn new<Identity: ICredentialProviderCredentialWithFieldOptions_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetFieldOptions<Identity: ICredentialProviderCredentialWithFieldOptions_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fieldid: u32, options: *mut CREDENTIAL_PROVIDER_CREDENTIAL_FIELD_OPTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderCredentialWithFieldOptions_Impl::GetFieldOptions(this, core::mem::transmute_copy(&fieldid)) {
                    Ok(ok__) => {
                        options.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetFieldOptions: GetFieldOptions::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderCredentialWithFieldOptions as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICredentialProviderCredentialWithFieldOptions {}
windows_core::imp::define_interface!(ICredentialProviderEvents, ICredentialProviderEvents_Vtbl, 0x34201e5a_a787_41a3_a5a4_bd6dcf2a854e);
windows_core::imp::interface_hierarchy!(ICredentialProviderEvents, windows_core::IUnknown);
impl ICredentialProviderEvents {
    pub unsafe fn CredentialsChanged(&self, upadvisecontext: usize) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CredentialsChanged)(windows_core::Interface::as_raw(self), upadvisecontext).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProviderEvents_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CredentialsChanged: unsafe extern "system" fn(*mut core::ffi::c_void, usize) -> windows_core::HRESULT,
}
pub trait ICredentialProviderEvents_Impl: windows_core::IUnknownImpl {
    fn CredentialsChanged(&self, upadvisecontext: usize) -> windows_core::Result<()>;
}
impl ICredentialProviderEvents_Vtbl {
    pub const fn new<Identity: ICredentialProviderEvents_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CredentialsChanged<Identity: ICredentialProviderEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, upadvisecontext: usize) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderEvents_Impl::CredentialsChanged(this, core::mem::transmute_copy(&upadvisecontext)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CredentialsChanged: CredentialsChanged::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderEvents as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICredentialProviderEvents {}
windows_core::imp::define_interface!(ICredentialProviderFilter, ICredentialProviderFilter_Vtbl, 0xa5da53f9_d475_4080_a120_910c4a739880);
windows_core::imp::interface_hierarchy!(ICredentialProviderFilter, windows_core::IUnknown);
impl ICredentialProviderFilter {
    pub unsafe fn Filter(&self, cpus: CREDENTIAL_PROVIDER_USAGE_SCENARIO, dwflags: u32, rgclsidproviders: *const windows_core::GUID, rgballow: *mut windows_core::BOOL, cproviders: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Filter)(windows_core::Interface::as_raw(self), cpus, dwflags, rgclsidproviders, rgballow as _, cproviders).ok() }
    }
    pub unsafe fn UpdateRemoteCredential(&self, pcpcsin: *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, pcpcsout: *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateRemoteCredential)(windows_core::Interface::as_raw(self), pcpcsin, pcpcsout as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProviderFilter_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Filter: unsafe extern "system" fn(*mut core::ffi::c_void, CREDENTIAL_PROVIDER_USAGE_SCENARIO, u32, *const windows_core::GUID, *mut windows_core::BOOL, u32) -> windows_core::HRESULT,
    pub UpdateRemoteCredential: unsafe extern "system" fn(*mut core::ffi::c_void, *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::HRESULT,
}
pub trait ICredentialProviderFilter_Impl: windows_core::IUnknownImpl {
    fn Filter(&self, cpus: CREDENTIAL_PROVIDER_USAGE_SCENARIO, dwflags: u32, rgclsidproviders: *const windows_core::GUID, rgballow: *mut windows_core::BOOL, cproviders: u32) -> windows_core::Result<()>;
    fn UpdateRemoteCredential(&self, pcpcsin: *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, pcpcsout: *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::Result<()>;
}
impl ICredentialProviderFilter_Vtbl {
    pub const fn new<Identity: ICredentialProviderFilter_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Filter<Identity: ICredentialProviderFilter_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cpus: CREDENTIAL_PROVIDER_USAGE_SCENARIO, dwflags: u32, rgclsidproviders: *const windows_core::GUID, rgballow: *mut windows_core::BOOL, cproviders: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderFilter_Impl::Filter(this, core::mem::transmute_copy(&cpus), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&rgclsidproviders), core::mem::transmute_copy(&rgballow), core::mem::transmute_copy(&cproviders)).into()
            }
        }
        unsafe extern "system" fn UpdateRemoteCredential<Identity: ICredentialProviderFilter_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpcsin: *const CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION, pcpcsout: *mut CREDENTIAL_PROVIDER_CREDENTIAL_SERIALIZATION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderFilter_Impl::UpdateRemoteCredential(this, core::mem::transmute_copy(&pcpcsin), core::mem::transmute_copy(&pcpcsout)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Filter: Filter::<Identity, OFFSET>,
            UpdateRemoteCredential: UpdateRemoteCredential::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderFilter as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICredentialProviderFilter {}
windows_core::imp::define_interface!(ICredentialProviderSetUserArray, ICredentialProviderSetUserArray_Vtbl, 0x095c1484_1c0c_4388_9c6d_500e61bf84bd);
windows_core::imp::interface_hierarchy!(ICredentialProviderSetUserArray, windows_core::IUnknown);
impl ICredentialProviderSetUserArray {
    pub unsafe fn SetUserArray<P0>(&self, users: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ICredentialProviderUserArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetUserArray)(windows_core::Interface::as_raw(self), users.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProviderSetUserArray_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetUserArray: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ICredentialProviderSetUserArray_Impl: windows_core::IUnknownImpl {
    fn SetUserArray(&self, users: windows_core::Ref<ICredentialProviderUserArray>) -> windows_core::Result<()>;
}
impl ICredentialProviderSetUserArray_Vtbl {
    pub const fn new<Identity: ICredentialProviderSetUserArray_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetUserArray<Identity: ICredentialProviderSetUserArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, users: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderSetUserArray_Impl::SetUserArray(this, core::mem::transmute_copy(&users)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetUserArray: SetUserArray::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderSetUserArray as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICredentialProviderSetUserArray {}
windows_core::imp::define_interface!(ICredentialProviderUser, ICredentialProviderUser_Vtbl, 0x13793285_3ea6_40fd_b420_15f47da41fbb);
windows_core::imp::interface_hierarchy!(ICredentialProviderUser, windows_core::IUnknown);
impl ICredentialProviderUser {
    pub unsafe fn GetSid(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSid)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetProviderID(&self) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProviderID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetStringValue(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetStringValue)(windows_core::Interface::as_raw(self), key, &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
    pub unsafe fn GetValue(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Com::StructuredStorage::PROPVARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetValue)(windows_core::Interface::as_raw(self), key, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProviderUser_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSid: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetProviderID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub GetStringValue: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
    pub GetValue: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant")))]
    GetValue: usize,
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
pub trait ICredentialProviderUser_Impl: windows_core::IUnknownImpl {
    fn GetSid(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetProviderID(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetStringValue(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<windows_core::PWSTR>;
    fn GetValue(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Com::StructuredStorage::PROPVARIANT>;
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
impl ICredentialProviderUser_Vtbl {
    pub const fn new<Identity: ICredentialProviderUser_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSid<Identity: ICredentialProviderUser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sid: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderUser_Impl::GetSid(this) {
                    Ok(ok__) => {
                        sid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProviderID<Identity: ICredentialProviderUser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, providerid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderUser_Impl::GetProviderID(this) {
                    Ok(ok__) => {
                        providerid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetStringValue<Identity: ICredentialProviderUser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, stringvalue: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderUser_Impl::GetStringValue(this, core::mem::transmute_copy(&key)) {
                    Ok(ok__) => {
                        stringvalue.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetValue<Identity: ICredentialProviderUser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, value: *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderUser_Impl::GetValue(this, core::mem::transmute_copy(&key)) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSid: GetSid::<Identity, OFFSET>,
            GetProviderID: GetProviderID::<Identity, OFFSET>,
            GetStringValue: GetStringValue::<Identity, OFFSET>,
            GetValue: GetValue::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderUser as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for ICredentialProviderUser {}
windows_core::imp::define_interface!(ICredentialProviderUserArray, ICredentialProviderUserArray_Vtbl, 0x90c119ae_0f18_4520_a1f1_114366a40fe8);
windows_core::imp::interface_hierarchy!(ICredentialProviderUserArray, windows_core::IUnknown);
impl ICredentialProviderUserArray {
    pub unsafe fn SetProviderFilter(&self, guidprovidertofilterto: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetProviderFilter)(windows_core::Interface::as_raw(self), guidprovidertofilterto).ok() }
    }
    pub unsafe fn GetAccountOptions(&self) -> windows_core::Result<CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAccountOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetAt(&self, userindex: u32) -> windows_core::Result<ICredentialProviderUser> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAt)(windows_core::Interface::as_raw(self), userindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICredentialProviderUserArray_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetProviderFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub GetAccountOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS) -> windows_core::HRESULT,
    pub GetCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetAt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ICredentialProviderUserArray_Impl: windows_core::IUnknownImpl {
    fn SetProviderFilter(&self, guidprovidertofilterto: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetAccountOptions(&self) -> windows_core::Result<CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS>;
    fn GetCount(&self) -> windows_core::Result<u32>;
    fn GetAt(&self, userindex: u32) -> windows_core::Result<ICredentialProviderUser>;
}
impl ICredentialProviderUserArray_Vtbl {
    pub const fn new<Identity: ICredentialProviderUserArray_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetProviderFilter<Identity: ICredentialProviderUserArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidprovidertofilterto: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICredentialProviderUserArray_Impl::SetProviderFilter(this, core::mem::transmute_copy(&guidprovidertofilterto)).into()
            }
        }
        unsafe extern "system" fn GetAccountOptions<Identity: ICredentialProviderUserArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, credentialprovideraccountoptions: *mut CREDENTIAL_PROVIDER_ACCOUNT_OPTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderUserArray_Impl::GetAccountOptions(this) {
                    Ok(ok__) => {
                        credentialprovideraccountoptions.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCount<Identity: ICredentialProviderUserArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, usercount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderUserArray_Impl::GetCount(this) {
                    Ok(ok__) => {
                        usercount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetAt<Identity: ICredentialProviderUserArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, userindex: u32, user: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ICredentialProviderUserArray_Impl::GetAt(this, core::mem::transmute_copy(&userindex)) {
                    Ok(ok__) => {
                        user.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetProviderFilter: SetProviderFilter::<Identity, OFFSET>,
            GetAccountOptions: GetAccountOptions::<Identity, OFFSET>,
            GetCount: GetCount::<Identity, OFFSET>,
            GetAt: GetAt::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICredentialProviderUserArray as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICredentialProviderUserArray {}
windows_core::imp::define_interface!(ICurrentItem, ICurrentItem_Vtbl, 0x240a7174_d653_4a1d_a6d3_d4943cfbfe3d);
impl core::ops::Deref for ICurrentItem {
    type Target = IRelatedItem;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ICurrentItem, windows_core::IUnknown, IRelatedItem);
#[repr(C)]
#[doc(hidden)]
pub struct ICurrentItem_Vtbl {
    pub base__: IRelatedItem_Vtbl,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ICurrentItem_Impl: IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ICurrentItem_Vtbl {
    pub const fn new<Identity: ICurrentItem_Impl, const OFFSET: isize>() -> Self {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICurrentItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ICurrentItem {}
windows_core::imp::define_interface!(ICurrentWorkingDirectory, ICurrentWorkingDirectory_Vtbl, 0x91956d21_9276_11d1_921a_006097df5bd4);
windows_core::imp::interface_hierarchy!(ICurrentWorkingDirectory, windows_core::IUnknown);
impl ICurrentWorkingDirectory {
    pub unsafe fn GetDirectory(&self, pwzpath: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDirectory)(windows_core::Interface::as_raw(self), core::mem::transmute(pwzpath.as_ptr()), pwzpath.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SetDirectory<P0>(&self, pwzpath: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDirectory)(windows_core::Interface::as_raw(self), pwzpath.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICurrentWorkingDirectory_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32) -> windows_core::HRESULT,
    pub SetDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait ICurrentWorkingDirectory_Impl: windows_core::IUnknownImpl {
    fn GetDirectory(&self, pwzpath: windows_core::PWSTR, cchsize: u32) -> windows_core::Result<()>;
    fn SetDirectory(&self, pwzpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl ICurrentWorkingDirectory_Vtbl {
    pub const fn new<Identity: ICurrentWorkingDirectory_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDirectory<Identity: ICurrentWorkingDirectory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzpath: windows_core::PWSTR, cchsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICurrentWorkingDirectory_Impl::GetDirectory(this, core::mem::transmute_copy(&pwzpath), core::mem::transmute_copy(&cchsize)).into()
            }
        }
        unsafe extern "system" fn SetDirectory<Identity: ICurrentWorkingDirectory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzpath: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICurrentWorkingDirectory_Impl::SetDirectory(this, core::mem::transmute(&pwzpath)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDirectory: GetDirectory::<Identity, OFFSET>,
            SetDirectory: SetDirectory::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICurrentWorkingDirectory as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ICurrentWorkingDirectory {}
windows_core::imp::define_interface!(ICustomDestinationList, ICustomDestinationList_Vtbl, 0x6332debf_87b5_4670_90c0_5e57b408a49e);
windows_core::imp::interface_hierarchy!(ICustomDestinationList, windows_core::IUnknown);
impl ICustomDestinationList {
    pub unsafe fn SetAppID<P0>(&self, pszappid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAppID)(windows_core::Interface::as_raw(self), pszappid.param().abi()).ok() }
    }
    pub unsafe fn BeginList<T>(&self, pcminslots: *mut u32) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).BeginList)(windows_core::Interface::as_raw(self), pcminslots as _, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn AppendCategory<P0, P1>(&self, pszcategory: P0, poa: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<Common::IObjectArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendCategory)(windows_core::Interface::as_raw(self), pszcategory.param().abi(), poa.param().abi()).ok() }
    }
    pub unsafe fn AppendKnownCategory(&self, category: KNOWNDESTCATEGORY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AppendKnownCategory)(windows_core::Interface::as_raw(self), category).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn AddUserTasks<P0>(&self, poa: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<Common::IObjectArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddUserTasks)(windows_core::Interface::as_raw(self), poa.param().abi()).ok() }
    }
    pub unsafe fn CommitList(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CommitList)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetRemovedDestinations<T>(&self) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetRemovedDestinations)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn DeleteList<P0>(&self, pszappid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).DeleteList)(windows_core::Interface::as_raw(self), pszappid.param().abi()).ok() }
    }
    pub unsafe fn AbortList(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AbortList)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ICustomDestinationList_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetAppID: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub BeginList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub AppendCategory: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    AppendCategory: usize,
    pub AppendKnownCategory: unsafe extern "system" fn(*mut core::ffi::c_void, KNOWNDESTCATEGORY) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub AddUserTasks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    AddUserTasks: usize,
    pub CommitList: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRemovedDestinations: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DeleteList: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AbortList: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ICustomDestinationList_Impl: windows_core::IUnknownImpl {
    fn SetAppID(&self, pszappid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn BeginList(&self, pcminslots: *mut u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn AppendCategory(&self, pszcategory: &windows_core::PCWSTR, poa: windows_core::Ref<Common::IObjectArray>) -> windows_core::Result<()>;
    fn AppendKnownCategory(&self, category: KNOWNDESTCATEGORY) -> windows_core::Result<()>;
    fn AddUserTasks(&self, poa: windows_core::Ref<Common::IObjectArray>) -> windows_core::Result<()>;
    fn CommitList(&self) -> windows_core::Result<()>;
    fn GetRemovedDestinations(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn DeleteList(&self, pszappid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AbortList(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ICustomDestinationList_Vtbl {
    pub const fn new<Identity: ICustomDestinationList_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetAppID<Identity: ICustomDestinationList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICustomDestinationList_Impl::SetAppID(this, core::mem::transmute(&pszappid)).into()
            }
        }
        unsafe extern "system" fn BeginList<Identity: ICustomDestinationList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcminslots: *mut u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICustomDestinationList_Impl::BeginList(this, core::mem::transmute_copy(&pcminslots), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn AppendCategory<Identity: ICustomDestinationList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcategory: windows_core::PCWSTR, poa: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICustomDestinationList_Impl::AppendCategory(this, core::mem::transmute(&pszcategory), core::mem::transmute_copy(&poa)).into()
            }
        }
        unsafe extern "system" fn AppendKnownCategory<Identity: ICustomDestinationList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, category: KNOWNDESTCATEGORY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICustomDestinationList_Impl::AppendKnownCategory(this, core::mem::transmute_copy(&category)).into()
            }
        }
        unsafe extern "system" fn AddUserTasks<Identity: ICustomDestinationList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, poa: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICustomDestinationList_Impl::AddUserTasks(this, core::mem::transmute_copy(&poa)).into()
            }
        }
        unsafe extern "system" fn CommitList<Identity: ICustomDestinationList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICustomDestinationList_Impl::CommitList(this).into()
            }
        }
        unsafe extern "system" fn GetRemovedDestinations<Identity: ICustomDestinationList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICustomDestinationList_Impl::GetRemovedDestinations(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn DeleteList<Identity: ICustomDestinationList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICustomDestinationList_Impl::DeleteList(this, core::mem::transmute(&pszappid)).into()
            }
        }
        unsafe extern "system" fn AbortList<Identity: ICustomDestinationList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ICustomDestinationList_Impl::AbortList(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAppID: SetAppID::<Identity, OFFSET>,
            BeginList: BeginList::<Identity, OFFSET>,
            AppendCategory: AppendCategory::<Identity, OFFSET>,
            AppendKnownCategory: AppendKnownCategory::<Identity, OFFSET>,
            AddUserTasks: AddUserTasks::<Identity, OFFSET>,
            CommitList: CommitList::<Identity, OFFSET>,
            GetRemovedDestinations: GetRemovedDestinations::<Identity, OFFSET>,
            DeleteList: DeleteList::<Identity, OFFSET>,
            AbortList: AbortList::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ICustomDestinationList as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ICustomDestinationList {}
pub const IDC_OFFLINE_HAND: u32 = 103u32;
pub const IDC_PANTOOL_HAND_CLOSED: u32 = 105u32;
pub const IDC_PANTOOL_HAND_OPEN: u32 = 104u32;
pub const IDD_WIZEXTN_FIRST: u32 = 20480u32;
pub const IDD_WIZEXTN_LAST: u32 = 20736u32;
pub const IDO_SHGIOI_DEFAULT: u64 = 4294967292u64;
pub const IDO_SHGIOI_LINK: u32 = 268435454u32;
pub const IDO_SHGIOI_SHARE: u32 = 268435455u32;
pub const IDO_SHGIOI_SLOWFILE: u64 = 4294967293u64;
pub const IDS_DESCRIPTION: u32 = 1u32;
pub const ID_APP: u32 = 100u32;
windows_core::imp::define_interface!(IDataObjectAsyncCapability, IDataObjectAsyncCapability_Vtbl, 0x3d8b0590_f691_11d2_8ea9_006097df5bd4);
windows_core::imp::interface_hierarchy!(IDataObjectAsyncCapability, windows_core::IUnknown);
impl IDataObjectAsyncCapability {
    pub unsafe fn SetAsyncMode(&self, fdoopasync: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAsyncMode)(windows_core::Interface::as_raw(self), fdoopasync.into()).ok() }
    }
    pub unsafe fn GetAsyncMode(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAsyncMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn StartOperation<P0>(&self, pbcreserved: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IBindCtx>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartOperation)(windows_core::Interface::as_raw(self), pbcreserved.param().abi()).ok() }
    }
    pub unsafe fn InOperation(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).InOperation)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn EndOperation<P1>(&self, hresult: windows_core::HRESULT, pbcreserved: P1, dweffects: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IBindCtx>,
    {
        unsafe { (windows_core::Interface::vtable(self).EndOperation)(windows_core::Interface::as_raw(self), hresult, pbcreserved.param().abi(), dweffects).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataObjectAsyncCapability_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetAsyncMode: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub GetAsyncMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub StartOperation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    StartOperation: usize,
    pub InOperation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub EndOperation: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::HRESULT, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    EndOperation: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDataObjectAsyncCapability_Impl: windows_core::IUnknownImpl {
    fn SetAsyncMode(&self, fdoopasync: windows_core::BOOL) -> windows_core::Result<()>;
    fn GetAsyncMode(&self) -> windows_core::Result<windows_core::BOOL>;
    fn StartOperation(&self, pbcreserved: windows_core::Ref<super::super::System::Com::IBindCtx>) -> windows_core::Result<()>;
    fn InOperation(&self) -> windows_core::Result<windows_core::BOOL>;
    fn EndOperation(&self, hresult: windows_core::HRESULT, pbcreserved: windows_core::Ref<super::super::System::Com::IBindCtx>, dweffects: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IDataObjectAsyncCapability_Vtbl {
    pub const fn new<Identity: IDataObjectAsyncCapability_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetAsyncMode<Identity: IDataObjectAsyncCapability_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fdoopasync: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataObjectAsyncCapability_Impl::SetAsyncMode(this, core::mem::transmute_copy(&fdoopasync)).into()
            }
        }
        unsafe extern "system" fn GetAsyncMode<Identity: IDataObjectAsyncCapability_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfisopasync: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataObjectAsyncCapability_Impl::GetAsyncMode(this) {
                    Ok(ok__) => {
                        pfisopasync.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn StartOperation<Identity: IDataObjectAsyncCapability_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbcreserved: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataObjectAsyncCapability_Impl::StartOperation(this, core::mem::transmute_copy(&pbcreserved)).into()
            }
        }
        unsafe extern "system" fn InOperation<Identity: IDataObjectAsyncCapability_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfinasyncop: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataObjectAsyncCapability_Impl::InOperation(this) {
                    Ok(ok__) => {
                        pfinasyncop.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EndOperation<Identity: IDataObjectAsyncCapability_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hresult: windows_core::HRESULT, pbcreserved: *mut core::ffi::c_void, dweffects: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataObjectAsyncCapability_Impl::EndOperation(this, core::mem::transmute_copy(&hresult), core::mem::transmute_copy(&pbcreserved), core::mem::transmute_copy(&dweffects)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAsyncMode: SetAsyncMode::<Identity, OFFSET>,
            GetAsyncMode: GetAsyncMode::<Identity, OFFSET>,
            StartOperation: StartOperation::<Identity, OFFSET>,
            InOperation: InOperation::<Identity, OFFSET>,
            EndOperation: EndOperation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataObjectAsyncCapability as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDataObjectAsyncCapability {}
windows_core::imp::define_interface!(IDataObjectProvider, IDataObjectProvider_Vtbl, 0x3d25f6d6_4b2a_433c_9184_7c33ad35d001);
windows_core::imp::interface_hierarchy!(IDataObjectProvider, windows_core::IUnknown);
impl IDataObjectProvider {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetDataObject(&self) -> windows_core::Result<super::super::System::Com::IDataObject> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDataObject)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetDataObject<P0>(&self, dataobject: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDataObject)(windows_core::Interface::as_raw(self), dataobject.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataObjectProvider_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub GetDataObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetDataObject: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetDataObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetDataObject: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDataObjectProvider_Impl: windows_core::IUnknownImpl {
    fn GetDataObject(&self) -> windows_core::Result<super::super::System::Com::IDataObject>;
    fn SetDataObject(&self, dataobject: windows_core::Ref<super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IDataObjectProvider_Vtbl {
    pub const fn new<Identity: IDataObjectProvider_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDataObject<Identity: IDataObjectProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dataobject: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDataObjectProvider_Impl::GetDataObject(this) {
                    Ok(ok__) => {
                        dataobject.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetDataObject<Identity: IDataObjectProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dataobject: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataObjectProvider_Impl::SetDataObject(this, core::mem::transmute_copy(&dataobject)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDataObject: GetDataObject::<Identity, OFFSET>,
            SetDataObject: SetDataObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataObjectProvider as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDataObjectProvider {}
windows_core::imp::define_interface!(IDataTransferManagerInterop, IDataTransferManagerInterop_Vtbl, 0x3a3dcd6c_3eab_43dc_bcde_45671ce800c8);
windows_core::imp::interface_hierarchy!(IDataTransferManagerInterop, windows_core::IUnknown);
impl IDataTransferManagerInterop {
    pub unsafe fn GetForWindow<T>(&self, appwindow: super::super::Foundation::HWND) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetForWindow)(windows_core::Interface::as_raw(self), appwindow, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn ShowShareUIForWindow(&self, appwindow: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowShareUIForWindow)(windows_core::Interface::as_raw(self), appwindow).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDataTransferManagerInterop_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetForWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ShowShareUIForWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
}
pub trait IDataTransferManagerInterop_Impl: windows_core::IUnknownImpl {
    fn GetForWindow(&self, appwindow: super::super::Foundation::HWND, riid: *const windows_core::GUID, datatransfermanager: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn ShowShareUIForWindow(&self, appwindow: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
impl IDataTransferManagerInterop_Vtbl {
    pub const fn new<Identity: IDataTransferManagerInterop_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetForWindow<Identity: IDataTransferManagerInterop_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, appwindow: super::super::Foundation::HWND, riid: *const windows_core::GUID, datatransfermanager: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataTransferManagerInterop_Impl::GetForWindow(this, core::mem::transmute_copy(&appwindow), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&datatransfermanager)).into()
            }
        }
        unsafe extern "system" fn ShowShareUIForWindow<Identity: IDataTransferManagerInterop_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, appwindow: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDataTransferManagerInterop_Impl::ShowShareUIForWindow(this, core::mem::transmute_copy(&appwindow)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetForWindow: GetForWindow::<Identity, OFFSET>,
            ShowShareUIForWindow: ShowShareUIForWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDataTransferManagerInterop as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDataTransferManagerInterop {}
windows_core::imp::define_interface!(IDefaultExtractIconInit, IDefaultExtractIconInit_Vtbl, 0x41ded17d_d6b3_4261_997d_88c60e4b1d58);
windows_core::imp::interface_hierarchy!(IDefaultExtractIconInit, windows_core::IUnknown);
impl IDefaultExtractIconInit {
    pub unsafe fn SetFlags(&self, uflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFlags)(windows_core::Interface::as_raw(self), uflags).ok() }
    }
    #[cfg(feature = "Win32_System_Registry")]
    pub unsafe fn SetKey(&self, hkey: super::super::System::Registry::HKEY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetKey)(windows_core::Interface::as_raw(self), hkey).ok() }
    }
    pub unsafe fn SetNormalIcon<P0>(&self, pszfile: P0, iicon: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetNormalIcon)(windows_core::Interface::as_raw(self), pszfile.param().abi(), iicon).ok() }
    }
    pub unsafe fn SetOpenIcon<P0>(&self, pszfile: P0, iicon: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOpenIcon)(windows_core::Interface::as_raw(self), pszfile.param().abi(), iicon).ok() }
    }
    pub unsafe fn SetShortcutIcon<P0>(&self, pszfile: P0, iicon: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetShortcutIcon)(windows_core::Interface::as_raw(self), pszfile.param().abi(), iicon).ok() }
    }
    pub unsafe fn SetDefaultIcon<P0>(&self, pszfile: P0, iicon: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDefaultIcon)(windows_core::Interface::as_raw(self), pszfile.param().abi(), iicon).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDefaultExtractIconInit_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Registry")]
    pub SetKey: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Registry::HKEY) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Registry"))]
    SetKey: usize,
    pub SetNormalIcon: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, i32) -> windows_core::HRESULT,
    pub SetOpenIcon: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, i32) -> windows_core::HRESULT,
    pub SetShortcutIcon: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, i32) -> windows_core::HRESULT,
    pub SetDefaultIcon: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, i32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Registry")]
pub trait IDefaultExtractIconInit_Impl: windows_core::IUnknownImpl {
    fn SetFlags(&self, uflags: u32) -> windows_core::Result<()>;
    fn SetKey(&self, hkey: super::super::System::Registry::HKEY) -> windows_core::Result<()>;
    fn SetNormalIcon(&self, pszfile: &windows_core::PCWSTR, iicon: i32) -> windows_core::Result<()>;
    fn SetOpenIcon(&self, pszfile: &windows_core::PCWSTR, iicon: i32) -> windows_core::Result<()>;
    fn SetShortcutIcon(&self, pszfile: &windows_core::PCWSTR, iicon: i32) -> windows_core::Result<()>;
    fn SetDefaultIcon(&self, pszfile: &windows_core::PCWSTR, iicon: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Registry")]
impl IDefaultExtractIconInit_Vtbl {
    pub const fn new<Identity: IDefaultExtractIconInit_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetFlags<Identity: IDefaultExtractIconInit_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDefaultExtractIconInit_Impl::SetFlags(this, core::mem::transmute_copy(&uflags)).into()
            }
        }
        unsafe extern "system" fn SetKey<Identity: IDefaultExtractIconInit_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hkey: super::super::System::Registry::HKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDefaultExtractIconInit_Impl::SetKey(this, core::mem::transmute_copy(&hkey)).into()
            }
        }
        unsafe extern "system" fn SetNormalIcon<Identity: IDefaultExtractIconInit_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR, iicon: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDefaultExtractIconInit_Impl::SetNormalIcon(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&iicon)).into()
            }
        }
        unsafe extern "system" fn SetOpenIcon<Identity: IDefaultExtractIconInit_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR, iicon: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDefaultExtractIconInit_Impl::SetOpenIcon(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&iicon)).into()
            }
        }
        unsafe extern "system" fn SetShortcutIcon<Identity: IDefaultExtractIconInit_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR, iicon: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDefaultExtractIconInit_Impl::SetShortcutIcon(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&iicon)).into()
            }
        }
        unsafe extern "system" fn SetDefaultIcon<Identity: IDefaultExtractIconInit_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR, iicon: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDefaultExtractIconInit_Impl::SetDefaultIcon(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&iicon)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFlags: SetFlags::<Identity, OFFSET>,
            SetKey: SetKey::<Identity, OFFSET>,
            SetNormalIcon: SetNormalIcon::<Identity, OFFSET>,
            SetOpenIcon: SetOpenIcon::<Identity, OFFSET>,
            SetShortcutIcon: SetShortcutIcon::<Identity, OFFSET>,
            SetDefaultIcon: SetDefaultIcon::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDefaultExtractIconInit as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Registry")]
impl windows_core::RuntimeName for IDefaultExtractIconInit {}
windows_core::imp::define_interface!(IDefaultFolderMenuInitialize, IDefaultFolderMenuInitialize_Vtbl, 0x7690aa79_f8fc_4615_a327_36f7d18f5d91);
windows_core::imp::interface_hierarchy!(IDefaultFolderMenuInitialize, windows_core::IUnknown);
impl IDefaultFolderMenuInitialize {
    #[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn Initialize<P1, P3, P6>(&self, hwnd: super::super::Foundation::HWND, pcmcb: P1, pidlfolder: Option<*const Common::ITEMIDLIST>, psf: P3, apidl: &[*const Common::ITEMIDLIST], punkassociation: P6, ckeys: u32, akeys: Option<*const super::super::System::Registry::HKEY>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IContextMenuCB>,
        P3: windows_core::Param<IShellFolder>,
        P6: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), hwnd, pcmcb.param().abi(), pidlfolder.unwrap_or(core::mem::zeroed()) as _, psf.param().abi(), apidl.len().try_into().unwrap(), core::mem::transmute(apidl.as_ptr()), punkassociation.param().abi(), ckeys, akeys.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetMenuRestrictions(&self, dfmrvalues: DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetMenuRestrictions)(windows_core::Interface::as_raw(self), dfmrvalues).ok() }
    }
    pub unsafe fn GetMenuRestrictions(&self, dfmrmask: DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::Result<DEFAULT_FOLDER_MENU_RESTRICTIONS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMenuRestrictions)(windows_core::Interface::as_raw(self), dfmrmask, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetHandlerClsid(&self, rclsid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetHandlerClsid)(windows_core::Interface::as_raw(self), rclsid).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDefaultFolderMenuInitialize_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut core::ffi::c_void, u32, *const *const Common::ITEMIDLIST, *mut core::ffi::c_void, u32, *const super::super::System::Registry::HKEY) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common")))]
    Initialize: usize,
    pub SetMenuRestrictions: unsafe extern "system" fn(*mut core::ffi::c_void, DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::HRESULT,
    pub GetMenuRestrictions: unsafe extern "system" fn(*mut core::ffi::c_void, DEFAULT_FOLDER_MENU_RESTRICTIONS, *mut DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::HRESULT,
    pub SetHandlerClsid: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
pub trait IDefaultFolderMenuInitialize_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, hwnd: super::super::Foundation::HWND, pcmcb: windows_core::Ref<IContextMenuCB>, pidlfolder: *const Common::ITEMIDLIST, psf: windows_core::Ref<IShellFolder>, cidl: u32, apidl: *const *const Common::ITEMIDLIST, punkassociation: windows_core::Ref<windows_core::IUnknown>, ckeys: u32, akeys: *const super::super::System::Registry::HKEY) -> windows_core::Result<()>;
    fn SetMenuRestrictions(&self, dfmrvalues: DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::Result<()>;
    fn GetMenuRestrictions(&self, dfmrmask: DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::Result<DEFAULT_FOLDER_MENU_RESTRICTIONS>;
    fn SetHandlerClsid(&self, rclsid: *const windows_core::GUID) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
impl IDefaultFolderMenuInitialize_Vtbl {
    pub const fn new<Identity: IDefaultFolderMenuInitialize_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IDefaultFolderMenuInitialize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pcmcb: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, psf: *mut core::ffi::c_void, cidl: u32, apidl: *const *const Common::ITEMIDLIST, punkassociation: *mut core::ffi::c_void, ckeys: u32, akeys: *const super::super::System::Registry::HKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDefaultFolderMenuInitialize_Impl::Initialize(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&pcmcb), core::mem::transmute_copy(&pidlfolder), core::mem::transmute_copy(&psf), core::mem::transmute_copy(&cidl), core::mem::transmute_copy(&apidl), core::mem::transmute_copy(&punkassociation), core::mem::transmute_copy(&ckeys), core::mem::transmute_copy(&akeys)).into()
            }
        }
        unsafe extern "system" fn SetMenuRestrictions<Identity: IDefaultFolderMenuInitialize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dfmrvalues: DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDefaultFolderMenuInitialize_Impl::SetMenuRestrictions(this, core::mem::transmute_copy(&dfmrvalues)).into()
            }
        }
        unsafe extern "system" fn GetMenuRestrictions<Identity: IDefaultFolderMenuInitialize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dfmrmask: DEFAULT_FOLDER_MENU_RESTRICTIONS, pdfmrvalues: *mut DEFAULT_FOLDER_MENU_RESTRICTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDefaultFolderMenuInitialize_Impl::GetMenuRestrictions(this, core::mem::transmute_copy(&dfmrmask)) {
                    Ok(ok__) => {
                        pdfmrvalues.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetHandlerClsid<Identity: IDefaultFolderMenuInitialize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rclsid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDefaultFolderMenuInitialize_Impl::SetHandlerClsid(this, core::mem::transmute_copy(&rclsid)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            SetMenuRestrictions: SetMenuRestrictions::<Identity, OFFSET>,
            GetMenuRestrictions: GetMenuRestrictions::<Identity, OFFSET>,
            SetHandlerClsid: SetHandlerClsid::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDefaultFolderMenuInitialize as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IDefaultFolderMenuInitialize {}
windows_core::imp::define_interface!(IDelegateFolder, IDelegateFolder_Vtbl, 0xadd8ba80_002b_11d0_8f0f_00c04fd7d062);
windows_core::imp::interface_hierarchy!(IDelegateFolder, windows_core::IUnknown);
impl IDelegateFolder {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetItemAlloc<P0>(&self, pmalloc: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IMalloc>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetItemAlloc)(windows_core::Interface::as_raw(self), pmalloc.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDelegateFolder_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub SetItemAlloc: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetItemAlloc: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDelegateFolder_Impl: windows_core::IUnknownImpl {
    fn SetItemAlloc(&self, pmalloc: windows_core::Ref<super::super::System::Com::IMalloc>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IDelegateFolder_Vtbl {
    pub const fn new<Identity: IDelegateFolder_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetItemAlloc<Identity: IDelegateFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmalloc: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDelegateFolder_Impl::SetItemAlloc(this, core::mem::transmute_copy(&pmalloc)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetItemAlloc: SetItemAlloc::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDelegateFolder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDelegateFolder {}
windows_core::imp::define_interface!(IDelegateItem, IDelegateItem_Vtbl, 0x3c5a1c94_c951_4cb7_bb6d_3b93f30cce93);
impl core::ops::Deref for IDelegateItem {
    type Target = IRelatedItem;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDelegateItem, windows_core::IUnknown, IRelatedItem);
#[repr(C)]
#[doc(hidden)]
pub struct IDelegateItem_Vtbl {
    pub base__: IRelatedItem_Vtbl,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IDelegateItem_Impl: IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IDelegateItem_Vtbl {
    pub const fn new<Identity: IDelegateItem_Impl, const OFFSET: isize>() -> Self {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDelegateItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IDelegateItem {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IDeskBand, IDeskBand_Vtbl, 0xeb0fe172_1a3a_11d0_89b3_00a0c90a90ac);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IDeskBand {
    type Target = IDockingWindow;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IDeskBand, windows_core::IUnknown, super::super::System::Ole::IOleWindow, IDockingWindow);
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBand {
    pub unsafe fn GetBandInfo(&self, dwbandid: u32, dwviewmode: u32, pdbi: *mut DESKBANDINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBandInfo)(windows_core::Interface::as_raw(self), dwbandid, dwviewmode, pdbi as _).ok() }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IDeskBand_Vtbl {
    pub base__: IDockingWindow_Vtbl,
    pub GetBandInfo: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut DESKBANDINFO) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDeskBand_Impl: IDockingWindow_Impl {
    fn GetBandInfo(&self, dwbandid: u32, dwviewmode: u32, pdbi: *mut DESKBANDINFO) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBand_Vtbl {
    pub const fn new<Identity: IDeskBand_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetBandInfo<Identity: IDeskBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32, dwviewmode: u32, pdbi: *mut DESKBANDINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDeskBand_Impl::GetBandInfo(this, core::mem::transmute_copy(&dwbandid), core::mem::transmute_copy(&dwviewmode), core::mem::transmute_copy(&pdbi)).into()
            }
        }
        Self { base__: IDockingWindow_Vtbl::new::<Identity, OFFSET>(), GetBandInfo: GetBandInfo::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeskBand as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID || iid == &<IDockingWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDeskBand {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IDeskBand2, IDeskBand2_Vtbl, 0x79d16de4_abee_4021_8d9d_9169b261d657);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IDeskBand2 {
    type Target = IDeskBand;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IDeskBand2, windows_core::IUnknown, super::super::System::Ole::IOleWindow, IDockingWindow, IDeskBand);
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBand2 {
    pub unsafe fn CanRenderComposited(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CanRenderComposited)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCompositionState(&self, fcompositionenabled: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCompositionState)(windows_core::Interface::as_raw(self), fcompositionenabled.into()).ok() }
    }
    pub unsafe fn GetCompositionState(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCompositionState)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IDeskBand2_Vtbl {
    pub base__: IDeskBand_Vtbl,
    pub CanRenderComposited: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub SetCompositionState: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub GetCompositionState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDeskBand2_Impl: IDeskBand_Impl {
    fn CanRenderComposited(&self) -> windows_core::Result<windows_core::BOOL>;
    fn SetCompositionState(&self, fcompositionenabled: windows_core::BOOL) -> windows_core::Result<()>;
    fn GetCompositionState(&self) -> windows_core::Result<windows_core::BOOL>;
}
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBand2_Vtbl {
    pub const fn new<Identity: IDeskBand2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CanRenderComposited<Identity: IDeskBand2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcanrendercomposited: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDeskBand2_Impl::CanRenderComposited(this) {
                    Ok(ok__) => {
                        pfcanrendercomposited.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCompositionState<Identity: IDeskBand2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fcompositionenabled: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDeskBand2_Impl::SetCompositionState(this, core::mem::transmute_copy(&fcompositionenabled)).into()
            }
        }
        unsafe extern "system" fn GetCompositionState<Identity: IDeskBand2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcompositionenabled: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDeskBand2_Impl::GetCompositionState(this) {
                    Ok(ok__) => {
                        pfcompositionenabled.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IDeskBand_Vtbl::new::<Identity, OFFSET>(),
            CanRenderComposited: CanRenderComposited::<Identity, OFFSET>,
            SetCompositionState: SetCompositionState::<Identity, OFFSET>,
            GetCompositionState: GetCompositionState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeskBand2 as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID || iid == &<IDockingWindow as windows_core::Interface>::IID || iid == &<IDeskBand as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDeskBand2 {}
windows_core::imp::define_interface!(IDeskBandInfo, IDeskBandInfo_Vtbl, 0x77e425fc_cbf9_4307_ba6a_bb5727745661);
windows_core::imp::interface_hierarchy!(IDeskBandInfo, windows_core::IUnknown);
impl IDeskBandInfo {
    pub unsafe fn GetDefaultBandWidth(&self, dwbandid: u32, dwviewmode: u32) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDefaultBandWidth)(windows_core::Interface::as_raw(self), dwbandid, dwviewmode, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDeskBandInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetDefaultBandWidth: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut i32) -> windows_core::HRESULT,
}
pub trait IDeskBandInfo_Impl: windows_core::IUnknownImpl {
    fn GetDefaultBandWidth(&self, dwbandid: u32, dwviewmode: u32) -> windows_core::Result<i32>;
}
impl IDeskBandInfo_Vtbl {
    pub const fn new<Identity: IDeskBandInfo_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDefaultBandWidth<Identity: IDeskBandInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwbandid: u32, dwviewmode: u32, pnwidth: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDeskBandInfo_Impl::GetDefaultBandWidth(this, core::mem::transmute_copy(&dwbandid), core::mem::transmute_copy(&dwviewmode)) {
                    Ok(ok__) => {
                        pnwidth.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDefaultBandWidth: GetDefaultBandWidth::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeskBandInfo as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDeskBandInfo {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IDeskBar, IDeskBar_Vtbl, 0xeb0fe173_1a3a_11d0_89b3_00a0c90a90ac);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IDeskBar {
    type Target = super::super::System::Ole::IOleWindow;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IDeskBar, windows_core::IUnknown, super::super::System::Ole::IOleWindow);
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBar {
    pub unsafe fn SetClient<P0>(&self, punkclient: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetClient)(windows_core::Interface::as_raw(self), punkclient.param().abi()).ok() }
    }
    pub unsafe fn GetClient(&self) -> windows_core::Result<windows_core::IUnknown> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetClient)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn OnPosRectChangeDB(&self, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnPosRectChangeDB)(windows_core::Interface::as_raw(self), prc).ok() }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IDeskBar_Vtbl {
    pub base__: super::super::System::Ole::IOleWindow_Vtbl,
    pub SetClient: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetClient: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnPosRectChangeDB: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::RECT) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDeskBar_Impl: super::super::System::Ole::IOleWindow_Impl {
    fn SetClient(&self, punkclient: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn GetClient(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn OnPosRectChangeDB(&self, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBar_Vtbl {
    pub const fn new<Identity: IDeskBar_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetClient<Identity: IDeskBar_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkclient: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDeskBar_Impl::SetClient(this, core::mem::transmute_copy(&punkclient)).into()
            }
        }
        unsafe extern "system" fn GetClient<Identity: IDeskBar_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunkclient: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDeskBar_Impl::GetClient(this) {
                    Ok(ok__) => {
                        ppunkclient.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OnPosRectChangeDB<Identity: IDeskBar_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDeskBar_Impl::OnPosRectChangeDB(this, core::mem::transmute_copy(&prc)).into()
            }
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            SetClient: SetClient::<Identity, OFFSET>,
            GetClient: GetClient::<Identity, OFFSET>,
            OnPosRectChangeDB: OnPosRectChangeDB::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeskBar as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDeskBar {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IDeskBarClient, IDeskBarClient_Vtbl, 0xeb0fe175_1a3a_11d0_89b3_00a0c90a90ac);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IDeskBarClient {
    type Target = super::super::System::Ole::IOleWindow;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IDeskBarClient, windows_core::IUnknown, super::super::System::Ole::IOleWindow);
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBarClient {
    pub unsafe fn SetDeskBarSite<P0>(&self, punksite: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDeskBarSite)(windows_core::Interface::as_raw(self), punksite.param().abi()).ok() }
    }
    pub unsafe fn SetModeDBC(&self, dwmode: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetModeDBC)(windows_core::Interface::as_raw(self), dwmode).ok() }
    }
    pub unsafe fn UIActivateDBC(&self, dwstate: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UIActivateDBC)(windows_core::Interface::as_raw(self), dwstate).ok() }
    }
    pub unsafe fn GetSize(&self, dwwhich: u32) -> windows_core::Result<super::super::Foundation::RECT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSize)(windows_core::Interface::as_raw(self), dwwhich, &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IDeskBarClient_Vtbl {
    pub base__: super::super::System::Ole::IOleWindow_Vtbl,
    pub SetDeskBarSite: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetModeDBC: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub UIActivateDBC: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSize: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::Foundation::RECT) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDeskBarClient_Impl: super::super::System::Ole::IOleWindow_Impl {
    fn SetDeskBarSite(&self, punksite: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn SetModeDBC(&self, dwmode: u32) -> windows_core::Result<()>;
    fn UIActivateDBC(&self, dwstate: u32) -> windows_core::Result<()>;
    fn GetSize(&self, dwwhich: u32) -> windows_core::Result<super::super::Foundation::RECT>;
}
#[cfg(feature = "Win32_System_Ole")]
impl IDeskBarClient_Vtbl {
    pub const fn new<Identity: IDeskBarClient_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetDeskBarSite<Identity: IDeskBarClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksite: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDeskBarClient_Impl::SetDeskBarSite(this, core::mem::transmute_copy(&punksite)).into()
            }
        }
        unsafe extern "system" fn SetModeDBC<Identity: IDeskBarClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDeskBarClient_Impl::SetModeDBC(this, core::mem::transmute_copy(&dwmode)).into()
            }
        }
        unsafe extern "system" fn UIActivateDBC<Identity: IDeskBarClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwstate: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDeskBarClient_Impl::UIActivateDBC(this, core::mem::transmute_copy(&dwstate)).into()
            }
        }
        unsafe extern "system" fn GetSize<Identity: IDeskBarClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwwhich: u32, prc: *mut super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDeskBarClient_Impl::GetSize(this, core::mem::transmute_copy(&dwwhich)) {
                    Ok(ok__) => {
                        prc.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            SetDeskBarSite: SetDeskBarSite::<Identity, OFFSET>,
            SetModeDBC: SetModeDBC::<Identity, OFFSET>,
            UIActivateDBC: UIActivateDBC::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDeskBarClient as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDeskBarClient {}
windows_core::imp::define_interface!(IDesktopGadget, IDesktopGadget_Vtbl, 0xc1646bc4_f298_4f91_a204_eb2dd1709d1a);
windows_core::imp::interface_hierarchy!(IDesktopGadget, windows_core::IUnknown);
impl IDesktopGadget {
    pub unsafe fn RunGadget<P0>(&self, gadgetpath: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).RunGadget)(windows_core::Interface::as_raw(self), gadgetpath.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDesktopGadget_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub RunGadget: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IDesktopGadget_Impl: windows_core::IUnknownImpl {
    fn RunGadget(&self, gadgetpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IDesktopGadget_Vtbl {
    pub const fn new<Identity: IDesktopGadget_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn RunGadget<Identity: IDesktopGadget_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, gadgetpath: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDesktopGadget_Impl::RunGadget(this, core::mem::transmute(&gadgetpath)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RunGadget: RunGadget::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDesktopGadget as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDesktopGadget {}
windows_core::imp::define_interface!(IDesktopWallpaper, IDesktopWallpaper_Vtbl, 0xb92b56a9_8b55_4e14_9a89_0199bbb6f93b);
windows_core::imp::interface_hierarchy!(IDesktopWallpaper, windows_core::IUnknown);
impl IDesktopWallpaper {
    pub unsafe fn SetWallpaper<P0, P1>(&self, monitorid: P0, wallpaper: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetWallpaper)(windows_core::Interface::as_raw(self), monitorid.param().abi(), wallpaper.param().abi()).ok() }
    }
    pub unsafe fn GetWallpaper<P0>(&self, monitorid: P0) -> windows_core::Result<windows_core::PWSTR>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetWallpaper)(windows_core::Interface::as_raw(self), monitorid.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetMonitorDevicePathAt(&self, monitorindex: u32) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMonitorDevicePathAt)(windows_core::Interface::as_raw(self), monitorindex, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetMonitorDevicePathCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMonitorDevicePathCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetMonitorRECT<P0>(&self, monitorid: P0) -> windows_core::Result<super::super::Foundation::RECT>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMonitorRECT)(windows_core::Interface::as_raw(self), monitorid.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetBackgroundColor(&self, color: super::super::Foundation::COLORREF) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetBackgroundColor)(windows_core::Interface::as_raw(self), color).ok() }
    }
    pub unsafe fn GetBackgroundColor(&self) -> windows_core::Result<super::super::Foundation::COLORREF> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBackgroundColor)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetPosition(&self, position: DESKTOP_WALLPAPER_POSITION) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetPosition)(windows_core::Interface::as_raw(self), position).ok() }
    }
    pub unsafe fn GetPosition(&self) -> windows_core::Result<DESKTOP_WALLPAPER_POSITION> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPosition)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetSlideshow<P0>(&self, items: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItemArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSlideshow)(windows_core::Interface::as_raw(self), items.param().abi()).ok() }
    }
    pub unsafe fn GetSlideshow(&self) -> windows_core::Result<IShellItemArray> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSlideshow)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetSlideshowOptions(&self, options: DESKTOP_SLIDESHOW_OPTIONS, slideshowtick: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSlideshowOptions)(windows_core::Interface::as_raw(self), options, slideshowtick).ok() }
    }
    pub unsafe fn GetSlideshowOptions(&self, options: *mut DESKTOP_SLIDESHOW_OPTIONS, slideshowtick: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSlideshowOptions)(windows_core::Interface::as_raw(self), options as _, slideshowtick as _).ok() }
    }
    pub unsafe fn AdvanceSlideshow<P0>(&self, monitorid: P0, direction: DESKTOP_SLIDESHOW_DIRECTION) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AdvanceSlideshow)(windows_core::Interface::as_raw(self), monitorid.param().abi(), direction).ok() }
    }
    pub unsafe fn GetStatus(&self) -> windows_core::Result<DESKTOP_SLIDESHOW_STATE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Enable(&self, enable: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Enable)(windows_core::Interface::as_raw(self), enable.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDesktopWallpaper_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetWallpaper: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetWallpaper: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetMonitorDevicePathAt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetMonitorDevicePathCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetMonitorRECT: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub SetBackgroundColor: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::COLORREF) -> windows_core::HRESULT,
    pub GetBackgroundColor: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::COLORREF) -> windows_core::HRESULT,
    pub SetPosition: unsafe extern "system" fn(*mut core::ffi::c_void, DESKTOP_WALLPAPER_POSITION) -> windows_core::HRESULT,
    pub GetPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut DESKTOP_WALLPAPER_POSITION) -> windows_core::HRESULT,
    pub SetSlideshow: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSlideshow: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetSlideshowOptions: unsafe extern "system" fn(*mut core::ffi::c_void, DESKTOP_SLIDESHOW_OPTIONS, u32) -> windows_core::HRESULT,
    pub GetSlideshowOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut DESKTOP_SLIDESHOW_OPTIONS, *mut u32) -> windows_core::HRESULT,
    pub AdvanceSlideshow: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, DESKTOP_SLIDESHOW_DIRECTION) -> windows_core::HRESULT,
    pub GetStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut DESKTOP_SLIDESHOW_STATE) -> windows_core::HRESULT,
    pub Enable: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait IDesktopWallpaper_Impl: windows_core::IUnknownImpl {
    fn SetWallpaper(&self, monitorid: &windows_core::PCWSTR, wallpaper: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetWallpaper(&self, monitorid: &windows_core::PCWSTR) -> windows_core::Result<windows_core::PWSTR>;
    fn GetMonitorDevicePathAt(&self, monitorindex: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn GetMonitorDevicePathCount(&self) -> windows_core::Result<u32>;
    fn GetMonitorRECT(&self, monitorid: &windows_core::PCWSTR) -> windows_core::Result<super::super::Foundation::RECT>;
    fn SetBackgroundColor(&self, color: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn GetBackgroundColor(&self) -> windows_core::Result<super::super::Foundation::COLORREF>;
    fn SetPosition(&self, position: DESKTOP_WALLPAPER_POSITION) -> windows_core::Result<()>;
    fn GetPosition(&self) -> windows_core::Result<DESKTOP_WALLPAPER_POSITION>;
    fn SetSlideshow(&self, items: windows_core::Ref<IShellItemArray>) -> windows_core::Result<()>;
    fn GetSlideshow(&self) -> windows_core::Result<IShellItemArray>;
    fn SetSlideshowOptions(&self, options: DESKTOP_SLIDESHOW_OPTIONS, slideshowtick: u32) -> windows_core::Result<()>;
    fn GetSlideshowOptions(&self, options: *mut DESKTOP_SLIDESHOW_OPTIONS, slideshowtick: *mut u32) -> windows_core::Result<()>;
    fn AdvanceSlideshow(&self, monitorid: &windows_core::PCWSTR, direction: DESKTOP_SLIDESHOW_DIRECTION) -> windows_core::Result<()>;
    fn GetStatus(&self) -> windows_core::Result<DESKTOP_SLIDESHOW_STATE>;
    fn Enable(&self, enable: windows_core::BOOL) -> windows_core::Result<()>;
}
impl IDesktopWallpaper_Vtbl {
    pub const fn new<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetWallpaper<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitorid: windows_core::PCWSTR, wallpaper: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDesktopWallpaper_Impl::SetWallpaper(this, core::mem::transmute(&monitorid), core::mem::transmute(&wallpaper)).into()
            }
        }
        unsafe extern "system" fn GetWallpaper<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitorid: windows_core::PCWSTR, wallpaper: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDesktopWallpaper_Impl::GetWallpaper(this, core::mem::transmute(&monitorid)) {
                    Ok(ok__) => {
                        wallpaper.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetMonitorDevicePathAt<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitorindex: u32, monitorid: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDesktopWallpaper_Impl::GetMonitorDevicePathAt(this, core::mem::transmute_copy(&monitorindex)) {
                    Ok(ok__) => {
                        monitorid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetMonitorDevicePathCount<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDesktopWallpaper_Impl::GetMonitorDevicePathCount(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetMonitorRECT<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitorid: windows_core::PCWSTR, displayrect: *mut super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDesktopWallpaper_Impl::GetMonitorRECT(this, core::mem::transmute(&monitorid)) {
                    Ok(ok__) => {
                        displayrect.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetBackgroundColor<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: super::super::Foundation::COLORREF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDesktopWallpaper_Impl::SetBackgroundColor(this, core::mem::transmute_copy(&color)).into()
            }
        }
        unsafe extern "system" fn GetBackgroundColor<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: *mut super::super::Foundation::COLORREF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDesktopWallpaper_Impl::GetBackgroundColor(this) {
                    Ok(ok__) => {
                        color.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetPosition<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, position: DESKTOP_WALLPAPER_POSITION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDesktopWallpaper_Impl::SetPosition(this, core::mem::transmute_copy(&position)).into()
            }
        }
        unsafe extern "system" fn GetPosition<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, position: *mut DESKTOP_WALLPAPER_POSITION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDesktopWallpaper_Impl::GetPosition(this) {
                    Ok(ok__) => {
                        position.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetSlideshow<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, items: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDesktopWallpaper_Impl::SetSlideshow(this, core::mem::transmute_copy(&items)).into()
            }
        }
        unsafe extern "system" fn GetSlideshow<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, items: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDesktopWallpaper_Impl::GetSlideshow(this) {
                    Ok(ok__) => {
                        items.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetSlideshowOptions<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: DESKTOP_SLIDESHOW_OPTIONS, slideshowtick: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDesktopWallpaper_Impl::SetSlideshowOptions(this, core::mem::transmute_copy(&options), core::mem::transmute_copy(&slideshowtick)).into()
            }
        }
        unsafe extern "system" fn GetSlideshowOptions<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, options: *mut DESKTOP_SLIDESHOW_OPTIONS, slideshowtick: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDesktopWallpaper_Impl::GetSlideshowOptions(this, core::mem::transmute_copy(&options), core::mem::transmute_copy(&slideshowtick)).into()
            }
        }
        unsafe extern "system" fn AdvanceSlideshow<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitorid: windows_core::PCWSTR, direction: DESKTOP_SLIDESHOW_DIRECTION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDesktopWallpaper_Impl::AdvanceSlideshow(this, core::mem::transmute(&monitorid), core::mem::transmute_copy(&direction)).into()
            }
        }
        unsafe extern "system" fn GetStatus<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, state: *mut DESKTOP_SLIDESHOW_STATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDesktopWallpaper_Impl::GetStatus(this) {
                    Ok(ok__) => {
                        state.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Enable<Identity: IDesktopWallpaper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, enable: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDesktopWallpaper_Impl::Enable(this, core::mem::transmute_copy(&enable)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetWallpaper: SetWallpaper::<Identity, OFFSET>,
            GetWallpaper: GetWallpaper::<Identity, OFFSET>,
            GetMonitorDevicePathAt: GetMonitorDevicePathAt::<Identity, OFFSET>,
            GetMonitorDevicePathCount: GetMonitorDevicePathCount::<Identity, OFFSET>,
            GetMonitorRECT: GetMonitorRECT::<Identity, OFFSET>,
            SetBackgroundColor: SetBackgroundColor::<Identity, OFFSET>,
            GetBackgroundColor: GetBackgroundColor::<Identity, OFFSET>,
            SetPosition: SetPosition::<Identity, OFFSET>,
            GetPosition: GetPosition::<Identity, OFFSET>,
            SetSlideshow: SetSlideshow::<Identity, OFFSET>,
            GetSlideshow: GetSlideshow::<Identity, OFFSET>,
            SetSlideshowOptions: SetSlideshowOptions::<Identity, OFFSET>,
            GetSlideshowOptions: GetSlideshowOptions::<Identity, OFFSET>,
            AdvanceSlideshow: AdvanceSlideshow::<Identity, OFFSET>,
            GetStatus: GetStatus::<Identity, OFFSET>,
            Enable: Enable::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDesktopWallpaper as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDesktopWallpaper {}
windows_core::imp::define_interface!(IDestinationStreamFactory, IDestinationStreamFactory_Vtbl, 0x8a87781b_39a7_4a1f_aab3_a39b9c34a7d9);
windows_core::imp::interface_hierarchy!(IDestinationStreamFactory, windows_core::IUnknown);
impl IDestinationStreamFactory {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetDestinationStream(&self) -> windows_core::Result<super::super::System::Com::IStream> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDestinationStream)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDestinationStreamFactory_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub GetDestinationStream: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetDestinationStream: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IDestinationStreamFactory_Impl: windows_core::IUnknownImpl {
    fn GetDestinationStream(&self) -> windows_core::Result<super::super::System::Com::IStream>;
}
#[cfg(feature = "Win32_System_Com")]
impl IDestinationStreamFactory_Vtbl {
    pub const fn new<Identity: IDestinationStreamFactory_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDestinationStream<Identity: IDestinationStreamFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppstm: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDestinationStreamFactory_Impl::GetDestinationStream(this) {
                    Ok(ok__) => {
                        ppstm.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDestinationStream: GetDestinationStream::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDestinationStreamFactory as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IDestinationStreamFactory {}
windows_core::imp::define_interface!(IDisplayItem, IDisplayItem_Vtbl, 0xc6fd5997_9f6b_4888_8703_94e80e8cde3f);
impl core::ops::Deref for IDisplayItem {
    type Target = IRelatedItem;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDisplayItem, windows_core::IUnknown, IRelatedItem);
#[repr(C)]
#[doc(hidden)]
pub struct IDisplayItem_Vtbl {
    pub base__: IRelatedItem_Vtbl,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IDisplayItem_Impl: IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IDisplayItem_Vtbl {
    pub const fn new<Identity: IDisplayItem_Impl, const OFFSET: isize>() -> Self {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDisplayItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IDisplayItem {}
windows_core::imp::define_interface!(IDocViewSite, IDocViewSite_Vtbl, 0x87d605e0_c511_11cf_89a9_00a0c9054129);
windows_core::imp::interface_hierarchy!(IDocViewSite, windows_core::IUnknown);
impl IDocViewSite {
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn OnSetTitle(&self, pvtitle: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnSetTitle)(windows_core::Interface::as_raw(self), core::mem::transmute(pvtitle)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDocViewSite_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub OnSetTitle: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    OnSetTitle: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IDocViewSite_Impl: windows_core::IUnknownImpl {
    fn OnSetTitle(&self, pvtitle: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IDocViewSite_Vtbl {
    pub const fn new<Identity: IDocViewSite_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnSetTitle<Identity: IDocViewSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvtitle: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDocViewSite_Impl::OnSetTitle(this, core::mem::transmute_copy(&pvtitle)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnSetTitle: OnSetTitle::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDocViewSite as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IDocViewSite {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IDockingWindow, IDockingWindow_Vtbl, 0x012dd920_7b26_11d0_8ca9_00a0c92dbfe8);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IDockingWindow {
    type Target = super::super::System::Ole::IOleWindow;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IDockingWindow, windows_core::IUnknown, super::super::System::Ole::IOleWindow);
#[cfg(feature = "Win32_System_Ole")]
impl IDockingWindow {
    pub unsafe fn ShowDW(&self, fshow: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowDW)(windows_core::Interface::as_raw(self), fshow.into()).ok() }
    }
    pub unsafe fn CloseDW(&self, dwreserved: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CloseDW)(windows_core::Interface::as_raw(self), dwreserved).ok() }
    }
    pub unsafe fn ResizeBorderDW<P1>(&self, prcborder: *const super::super::Foundation::RECT, punktoolbarsite: P1, freserved: bool) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).ResizeBorderDW)(windows_core::Interface::as_raw(self), prcborder, punktoolbarsite.param().abi(), freserved.into()).ok() }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IDockingWindow_Vtbl {
    pub base__: super::super::System::Ole::IOleWindow_Vtbl,
    pub ShowDW: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub CloseDW: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ResizeBorderDW: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::RECT, *mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDockingWindow_Impl: super::super::System::Ole::IOleWindow_Impl {
    fn ShowDW(&self, fshow: windows_core::BOOL) -> windows_core::Result<()>;
    fn CloseDW(&self, dwreserved: u32) -> windows_core::Result<()>;
    fn ResizeBorderDW(&self, prcborder: *const super::super::Foundation::RECT, punktoolbarsite: windows_core::Ref<windows_core::IUnknown>, freserved: windows_core::BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl IDockingWindow_Vtbl {
    pub const fn new<Identity: IDockingWindow_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ShowDW<Identity: IDockingWindow_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fshow: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDockingWindow_Impl::ShowDW(this, core::mem::transmute_copy(&fshow)).into()
            }
        }
        unsafe extern "system" fn CloseDW<Identity: IDockingWindow_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwreserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDockingWindow_Impl::CloseDW(this, core::mem::transmute_copy(&dwreserved)).into()
            }
        }
        unsafe extern "system" fn ResizeBorderDW<Identity: IDockingWindow_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prcborder: *const super::super::Foundation::RECT, punktoolbarsite: *mut core::ffi::c_void, freserved: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDockingWindow_Impl::ResizeBorderDW(this, core::mem::transmute_copy(&prcborder), core::mem::transmute_copy(&punktoolbarsite), core::mem::transmute_copy(&freserved)).into()
            }
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            ShowDW: ShowDW::<Identity, OFFSET>,
            CloseDW: CloseDW::<Identity, OFFSET>,
            ResizeBorderDW: ResizeBorderDW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDockingWindow as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDockingWindow {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IDockingWindowFrame, IDockingWindowFrame_Vtbl, 0x47d2657a_7b27_11d0_8ca9_00a0c92dbfe8);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IDockingWindowFrame {
    type Target = super::super::System::Ole::IOleWindow;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IDockingWindowFrame, windows_core::IUnknown, super::super::System::Ole::IOleWindow);
#[cfg(feature = "Win32_System_Ole")]
impl IDockingWindowFrame {
    pub unsafe fn AddToolbar<P0, P1>(&self, punksrc: P0, pwszitem: P1, dwaddflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddToolbar)(windows_core::Interface::as_raw(self), punksrc.param().abi(), pwszitem.param().abi(), dwaddflags).ok() }
    }
    pub unsafe fn RemoveToolbar<P0>(&self, punksrc: P0, dwremoveflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveToolbar)(windows_core::Interface::as_raw(self), punksrc.param().abi(), dwremoveflags).ok() }
    }
    pub unsafe fn FindToolbar<P0>(&self, pwszitem: P0, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FindToolbar)(windows_core::Interface::as_raw(self), pwszitem.param().abi(), riid, ppv as _).ok() }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IDockingWindowFrame_Vtbl {
    pub base__: super::super::System::Ole::IOleWindow_Vtbl,
    pub AddToolbar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub RemoveToolbar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub FindToolbar: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDockingWindowFrame_Impl: super::super::System::Ole::IOleWindow_Impl {
    fn AddToolbar(&self, punksrc: windows_core::Ref<windows_core::IUnknown>, pwszitem: &windows_core::PCWSTR, dwaddflags: u32) -> windows_core::Result<()>;
    fn RemoveToolbar(&self, punksrc: windows_core::Ref<windows_core::IUnknown>, dwremoveflags: u32) -> windows_core::Result<()>;
    fn FindToolbar(&self, pwszitem: &windows_core::PCWSTR, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl IDockingWindowFrame_Vtbl {
    pub const fn new<Identity: IDockingWindowFrame_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddToolbar<Identity: IDockingWindowFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksrc: *mut core::ffi::c_void, pwszitem: windows_core::PCWSTR, dwaddflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDockingWindowFrame_Impl::AddToolbar(this, core::mem::transmute_copy(&punksrc), core::mem::transmute(&pwszitem), core::mem::transmute_copy(&dwaddflags)).into()
            }
        }
        unsafe extern "system" fn RemoveToolbar<Identity: IDockingWindowFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksrc: *mut core::ffi::c_void, dwremoveflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDockingWindowFrame_Impl::RemoveToolbar(this, core::mem::transmute_copy(&punksrc), core::mem::transmute_copy(&dwremoveflags)).into()
            }
        }
        unsafe extern "system" fn FindToolbar<Identity: IDockingWindowFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszitem: windows_core::PCWSTR, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDockingWindowFrame_Impl::FindToolbar(this, core::mem::transmute(&pwszitem), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            AddToolbar: AddToolbar::<Identity, OFFSET>,
            RemoveToolbar: RemoveToolbar::<Identity, OFFSET>,
            FindToolbar: FindToolbar::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDockingWindowFrame as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDockingWindowFrame {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IDockingWindowSite, IDockingWindowSite_Vtbl, 0x2a342fc2_7b26_11d0_8ca9_00a0c92dbfe8);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IDockingWindowSite {
    type Target = super::super::System::Ole::IOleWindow;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IDockingWindowSite, windows_core::IUnknown, super::super::System::Ole::IOleWindow);
#[cfg(feature = "Win32_System_Ole")]
impl IDockingWindowSite {
    pub unsafe fn GetBorderDW<P0>(&self, punkobj: P0) -> windows_core::Result<super::super::Foundation::RECT>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBorderDW)(windows_core::Interface::as_raw(self), punkobj.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RequestBorderSpaceDW<P0>(&self, punkobj: P0, pbw: *const super::super::Foundation::RECT) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).RequestBorderSpaceDW)(windows_core::Interface::as_raw(self), punkobj.param().abi(), pbw).ok() }
    }
    pub unsafe fn SetBorderSpaceDW<P0>(&self, punkobj: P0, pbw: *const super::super::Foundation::RECT) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetBorderSpaceDW)(windows_core::Interface::as_raw(self), punkobj.param().abi(), pbw).ok() }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IDockingWindowSite_Vtbl {
    pub base__: super::super::System::Ole::IOleWindow_Vtbl,
    pub GetBorderDW: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub RequestBorderSpaceDW: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub SetBorderSpaceDW: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::Foundation::RECT) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IDockingWindowSite_Impl: super::super::System::Ole::IOleWindow_Impl {
    fn GetBorderDW(&self, punkobj: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<super::super::Foundation::RECT>;
    fn RequestBorderSpaceDW(&self, punkobj: windows_core::Ref<windows_core::IUnknown>, pbw: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn SetBorderSpaceDW(&self, punkobj: windows_core::Ref<windows_core::IUnknown>, pbw: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl IDockingWindowSite_Vtbl {
    pub const fn new<Identity: IDockingWindowSite_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetBorderDW<Identity: IDockingWindowSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkobj: *mut core::ffi::c_void, prcborder: *mut super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDockingWindowSite_Impl::GetBorderDW(this, core::mem::transmute_copy(&punkobj)) {
                    Ok(ok__) => {
                        prcborder.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RequestBorderSpaceDW<Identity: IDockingWindowSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkobj: *mut core::ffi::c_void, pbw: *const super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDockingWindowSite_Impl::RequestBorderSpaceDW(this, core::mem::transmute_copy(&punkobj), core::mem::transmute_copy(&pbw)).into()
            }
        }
        unsafe extern "system" fn SetBorderSpaceDW<Identity: IDockingWindowSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkobj: *mut core::ffi::c_void, pbw: *const super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDockingWindowSite_Impl::SetBorderSpaceDW(this, core::mem::transmute_copy(&punkobj), core::mem::transmute_copy(&pbw)).into()
            }
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            GetBorderDW: GetBorderDW::<Identity, OFFSET>,
            RequestBorderSpaceDW: RequestBorderSpaceDW::<Identity, OFFSET>,
            SetBorderSpaceDW: SetBorderSpaceDW::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDockingWindowSite as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IDockingWindowSite {}
windows_core::imp::define_interface!(IDragSourceHelper, IDragSourceHelper_Vtbl, 0xde5bf786_477a_11d2_839d_00c04fd918d0);
windows_core::imp::interface_hierarchy!(IDragSourceHelper, windows_core::IUnknown);
impl IDragSourceHelper {
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
    pub unsafe fn InitializeFromBitmap<P1>(&self, pshdi: *const SHDRAGIMAGE, pdataobject: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).InitializeFromBitmap)(windows_core::Interface::as_raw(self), pshdi, pdataobject.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn InitializeFromWindow<P2>(&self, hwnd: Option<super::super::Foundation::HWND>, ppt: Option<*const super::super::Foundation::POINT>, pdataobject: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).InitializeFromWindow)(windows_core::Interface::as_raw(self), hwnd.unwrap_or(core::mem::zeroed()) as _, ppt.unwrap_or(core::mem::zeroed()) as _, pdataobject.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDragSourceHelper_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
    pub InitializeFromBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, *const SHDRAGIMAGE, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com")))]
    InitializeFromBitmap: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub InitializeFromWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const super::super::Foundation::POINT, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    InitializeFromWindow: usize,
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
pub trait IDragSourceHelper_Impl: windows_core::IUnknownImpl {
    fn InitializeFromBitmap(&self, pshdi: *const SHDRAGIMAGE, pdataobject: windows_core::Ref<super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
    fn InitializeFromWindow(&self, hwnd: super::super::Foundation::HWND, ppt: *const super::super::Foundation::POINT, pdataobject: windows_core::Ref<super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl IDragSourceHelper_Vtbl {
    pub const fn new<Identity: IDragSourceHelper_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn InitializeFromBitmap<Identity: IDragSourceHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pshdi: *const SHDRAGIMAGE, pdataobject: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDragSourceHelper_Impl::InitializeFromBitmap(this, core::mem::transmute_copy(&pshdi), core::mem::transmute_copy(&pdataobject)).into()
            }
        }
        unsafe extern "system" fn InitializeFromWindow<Identity: IDragSourceHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, ppt: *const super::super::Foundation::POINT, pdataobject: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDragSourceHelper_Impl::InitializeFromWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&pdataobject)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitializeFromBitmap: InitializeFromBitmap::<Identity, OFFSET>,
            InitializeFromWindow: InitializeFromWindow::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDragSourceHelper as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IDragSourceHelper {}
windows_core::imp::define_interface!(IDragSourceHelper2, IDragSourceHelper2_Vtbl, 0x83e07d0d_0c5f_4163_bf1a_60b274051e40);
impl core::ops::Deref for IDragSourceHelper2 {
    type Target = IDragSourceHelper;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IDragSourceHelper2, windows_core::IUnknown, IDragSourceHelper);
impl IDragSourceHelper2 {
    pub unsafe fn SetFlags(&self, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFlags)(windows_core::Interface::as_raw(self), dwflags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDragSourceHelper2_Vtbl {
    pub base__: IDragSourceHelper_Vtbl,
    pub SetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
pub trait IDragSourceHelper2_Impl: IDragSourceHelper_Impl {
    fn SetFlags(&self, dwflags: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl IDragSourceHelper2_Vtbl {
    pub const fn new<Identity: IDragSourceHelper2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetFlags<Identity: IDragSourceHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDragSourceHelper2_Impl::SetFlags(this, core::mem::transmute_copy(&dwflags)).into()
            }
        }
        Self { base__: IDragSourceHelper_Vtbl::new::<Identity, OFFSET>(), SetFlags: SetFlags::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDragSourceHelper2 as windows_core::Interface>::IID || iid == &<IDragSourceHelper as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Com"))]
impl windows_core::RuntimeName for IDragSourceHelper2 {}
windows_core::imp::define_interface!(IDropTargetHelper, IDropTargetHelper_Vtbl, 0x4657278b_411b_11d2_839a_00c04fd918d0);
windows_core::imp::interface_hierarchy!(IDropTargetHelper, windows_core::IUnknown);
impl IDropTargetHelper {
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn DragEnter<P1>(&self, hwndtarget: super::super::Foundation::HWND, pdataobject: P1, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).DragEnter)(windows_core::Interface::as_raw(self), hwndtarget, pdataobject.param().abi(), ppt, dweffect).ok() }
    }
    pub unsafe fn DragLeave(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DragLeave)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn DragOver(&self, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DragOver)(windows_core::Interface::as_raw(self), ppt, dweffect).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub unsafe fn Drop<P0>(&self, pdataobject: P0, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).Drop)(windows_core::Interface::as_raw(self), pdataobject.param().abi(), ppt, dweffect).ok() }
    }
    pub unsafe fn Show(&self, fshow: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Show)(windows_core::Interface::as_raw(self), fshow.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDropTargetHelper_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub DragEnter: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void, *const super::super::Foundation::POINT, super::super::System::Ole::DROPEFFECT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    DragEnter: usize,
    pub DragLeave: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Ole")]
    pub DragOver: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::POINT, super::super::System::Ole::DROPEFFECT) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    DragOver: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
    pub Drop: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::Foundation::POINT, super::super::System::Ole::DROPEFFECT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole")))]
    Drop: usize,
    pub Show: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
pub trait IDropTargetHelper_Impl: windows_core::IUnknownImpl {
    fn DragEnter(&self, hwndtarget: super::super::Foundation::HWND, pdataobject: windows_core::Ref<super::super::System::Com::IDataObject>, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::Result<()>;
    fn DragLeave(&self) -> windows_core::Result<()>;
    fn DragOver(&self, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::Result<()>;
    fn Drop(&self, pdataobject: windows_core::Ref<super::super::System::Com::IDataObject>, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::Result<()>;
    fn Show(&self, fshow: windows_core::BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl IDropTargetHelper_Vtbl {
    pub const fn new<Identity: IDropTargetHelper_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn DragEnter<Identity: IDropTargetHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtarget: super::super::Foundation::HWND, pdataobject: *mut core::ffi::c_void, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDropTargetHelper_Impl::DragEnter(this, core::mem::transmute_copy(&hwndtarget), core::mem::transmute_copy(&pdataobject), core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&dweffect)).into()
            }
        }
        unsafe extern "system" fn DragLeave<Identity: IDropTargetHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDropTargetHelper_Impl::DragLeave(this).into()
            }
        }
        unsafe extern "system" fn DragOver<Identity: IDropTargetHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDropTargetHelper_Impl::DragOver(this, core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&dweffect)).into()
            }
        }
        unsafe extern "system" fn Drop<Identity: IDropTargetHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdataobject: *mut core::ffi::c_void, ppt: *const super::super::Foundation::POINT, dweffect: super::super::System::Ole::DROPEFFECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDropTargetHelper_Impl::Drop(this, core::mem::transmute_copy(&pdataobject), core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&dweffect)).into()
            }
        }
        unsafe extern "system" fn Show<Identity: IDropTargetHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fshow: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IDropTargetHelper_Impl::Show(this, core::mem::transmute_copy(&fshow)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            DragEnter: DragEnter::<Identity, OFFSET>,
            DragLeave: DragLeave::<Identity, OFFSET>,
            DragOver: DragOver::<Identity, OFFSET>,
            Drop: Drop::<Identity, OFFSET>,
            Show: Show::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDropTargetHelper as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole"))]
impl windows_core::RuntimeName for IDropTargetHelper {}
windows_core::imp::define_interface!(IDynamicHWHandler, IDynamicHWHandler_Vtbl, 0xdc2601d7_059e_42fc_a09d_2afd21b6d5f7);
windows_core::imp::interface_hierarchy!(IDynamicHWHandler, windows_core::IUnknown);
impl IDynamicHWHandler {
    pub unsafe fn GetDynamicInfo<P0>(&self, pszdeviceid: P0, dwcontenttype: u32) -> windows_core::Result<windows_core::PWSTR>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDynamicInfo)(windows_core::Interface::as_raw(self), pszdeviceid.param().abi(), dwcontenttype, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IDynamicHWHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetDynamicInfo: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait IDynamicHWHandler_Impl: windows_core::IUnknownImpl {
    fn GetDynamicInfo(&self, pszdeviceid: &windows_core::PCWSTR, dwcontenttype: u32) -> windows_core::Result<windows_core::PWSTR>;
}
impl IDynamicHWHandler_Vtbl {
    pub const fn new<Identity: IDynamicHWHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDynamicInfo<Identity: IDynamicHWHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdeviceid: windows_core::PCWSTR, dwcontenttype: u32, ppszaction: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IDynamicHWHandler_Impl::GetDynamicInfo(this, core::mem::transmute(&pszdeviceid), core::mem::transmute_copy(&dwcontenttype)) {
                    Ok(ok__) => {
                        ppszaction.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetDynamicInfo: GetDynamicInfo::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IDynamicHWHandler as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IDynamicHWHandler {}
pub const IEIFLAG_ASPECT: u32 = 4u32;
pub const IEIFLAG_ASYNC: u32 = 1u32;
pub const IEIFLAG_CACHE: u32 = 2u32;
pub const IEIFLAG_GLEAM: u32 = 16u32;
pub const IEIFLAG_NOBORDER: u32 = 256u32;
pub const IEIFLAG_NOSTAMP: u32 = 128u32;
pub const IEIFLAG_OFFLINE: u32 = 8u32;
pub const IEIFLAG_ORIGSIZE: u32 = 64u32;
pub const IEIFLAG_QUALITY: u32 = 512u32;
pub const IEIFLAG_REFRESH: u32 = 1024u32;
pub const IEIFLAG_SCREEN: u32 = 32u32;
pub const IEIT_PRIORITY_NORMAL: u32 = 268435456u32;
pub const IEI_PRIORITY_MAX: u32 = 2147483647u32;
pub const IEI_PRIORITY_MIN: u32 = 0u32;
pub const IENamespaceTreeControl: windows_core::GUID = windows_core::GUID::from_u128(0xace52d03_e5cd_4b20_82ff_e71b11beae1d);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct IEPDNFLAGS(pub i32);
pub const IEPDN_BINDINGUI: IEPDNFLAGS = IEPDNFLAGS(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct IESHORTCUTFLAGS(pub i32);
pub const IESHORTCUT_BACKGROUNDTAB: IESHORTCUTFLAGS = IESHORTCUTFLAGS(8i32);
pub const IESHORTCUT_FORCENAVIGATE: IESHORTCUTFLAGS = IESHORTCUTFLAGS(4i32);
pub const IESHORTCUT_NEWBROWSER: IESHORTCUTFLAGS = IESHORTCUTFLAGS(1i32);
pub const IESHORTCUT_OPENNEWTAB: IESHORTCUTFLAGS = IESHORTCUTFLAGS(2i32);
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IEnumACString, IEnumACString_Vtbl, 0x8e74c210_cf9d_4eaf_a403_7356428f0a5a);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IEnumACString {
    type Target = super::super::System::Com::IEnumString;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IEnumACString, windows_core::IUnknown, super::super::System::Com::IEnumString);
#[cfg(feature = "Win32_System_Com")]
impl IEnumACString {
    pub unsafe fn NextItem(&self, pszurl: Option<&mut [u16]>, pulsortindex: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).NextItem)(windows_core::Interface::as_raw(self), core::mem::transmute(pszurl.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), pszurl.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), pulsortindex as _).ok() }
    }
    pub unsafe fn SetEnumOptions(&self, dwoptions: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetEnumOptions)(windows_core::Interface::as_raw(self), dwoptions).ok() }
    }
    pub unsafe fn GetEnumOptions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEnumOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IEnumACString_Vtbl {
    pub base__: super::super::System::Com::IEnumString_Vtbl,
    pub NextItem: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32) -> windows_core::HRESULT,
    pub SetEnumOptions: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetEnumOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IEnumACString_Impl: super::super::System::Com::IEnumString_Impl {
    fn NextItem(&self, pszurl: windows_core::PWSTR, cchmax: u32, pulsortindex: *mut u32) -> windows_core::Result<()>;
    fn SetEnumOptions(&self, dwoptions: u32) -> windows_core::Result<()>;
    fn GetEnumOptions(&self) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_System_Com")]
impl IEnumACString_Vtbl {
    pub const fn new<Identity: IEnumACString_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn NextItem<Identity: IEnumACString_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszurl: windows_core::PWSTR, cchmax: u32, pulsortindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumACString_Impl::NextItem(this, core::mem::transmute_copy(&pszurl), core::mem::transmute_copy(&cchmax), core::mem::transmute_copy(&pulsortindex)).into()
            }
        }
        unsafe extern "system" fn SetEnumOptions<Identity: IEnumACString_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwoptions: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumACString_Impl::SetEnumOptions(this, core::mem::transmute_copy(&dwoptions)).into()
            }
        }
        unsafe extern "system" fn GetEnumOptions<Identity: IEnumACString_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwoptions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumACString_Impl::GetEnumOptions(this) {
                    Ok(ok__) => {
                        pdwoptions.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: super::super::System::Com::IEnumString_Vtbl::new::<Identity, OFFSET>(),
            NextItem: NextItem::<Identity, OFFSET>,
            SetEnumOptions: SetEnumOptions::<Identity, OFFSET>,
            GetEnumOptions: GetEnumOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumACString as windows_core::Interface>::IID || iid == &<super::super::System::Com::IEnumString as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IEnumACString {}
windows_core::imp::define_interface!(IEnumAssocHandlers, IEnumAssocHandlers_Vtbl, 0x973810ae_9599_4b88_9e4d_6ee98c9552da);
windows_core::imp::interface_hierarchy!(IEnumAssocHandlers, windows_core::IUnknown);
impl IEnumAssocHandlers {
    pub unsafe fn Next(&self, rgelt: &mut [Option<IAssocHandler>], pceltfetched: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumAssocHandlers_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait IEnumAssocHandlers_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut Option<IAssocHandler>, pceltfetched: *mut u32) -> windows_core::Result<()>;
}
impl IEnumAssocHandlers_Vtbl {
    pub const fn new<Identity: IEnumAssocHandlers_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumAssocHandlers_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumAssocHandlers_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Next: Next::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumAssocHandlers as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumAssocHandlers {}
windows_core::imp::define_interface!(IEnumExplorerCommand, IEnumExplorerCommand_Vtbl, 0xa88826f8_186f_4987_aade_ea0cef8fbfe8);
windows_core::imp::interface_hierarchy!(IEnumExplorerCommand, windows_core::IUnknown);
impl IEnumExplorerCommand {
    pub unsafe fn Next(&self, puicommand: &mut [Option<IExplorerCommand>], pceltfetched: Option<*mut u32>) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), puicommand.len().try_into().unwrap(), core::mem::transmute(puicommand.as_ptr()), pceltfetched.unwrap_or(core::mem::zeroed()) as _) }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumExplorerCommand> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumExplorerCommand_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumExplorerCommand_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, puicommand: *mut Option<IExplorerCommand>, pceltfetched: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumExplorerCommand>;
}
impl IEnumExplorerCommand_Vtbl {
    pub const fn new<Identity: IEnumExplorerCommand_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, puicommand: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumExplorerCommand_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&puicommand), core::mem::transmute_copy(&pceltfetched))
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumExplorerCommand_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumExplorerCommand_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumExplorerCommand_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumExplorerCommand as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumExplorerCommand {}
windows_core::imp::define_interface!(IEnumExtraSearch, IEnumExtraSearch_Vtbl, 0x0e700be1_9db6_11d1_a1ce_00c04fd75d13);
windows_core::imp::interface_hierarchy!(IEnumExtraSearch, windows_core::IUnknown);
impl IEnumExtraSearch {
    pub unsafe fn Next(&self, rgelt: &mut [EXTRASEARCH], pceltfetched: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched as _).ok() }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumExtraSearch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumExtraSearch_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut EXTRASEARCH, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumExtraSearch_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut EXTRASEARCH, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumExtraSearch>;
}
impl IEnumExtraSearch_Vtbl {
    pub const fn new<Identity: IEnumExtraSearch_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumExtraSearch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut EXTRASEARCH, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumExtraSearch_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumExtraSearch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumExtraSearch_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumExtraSearch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumExtraSearch_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumExtraSearch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumExtraSearch_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumExtraSearch as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumExtraSearch {}
windows_core::imp::define_interface!(IEnumFullIDList, IEnumFullIDList_Vtbl, 0xd0191542_7954_4908_bc06_b2360bbe45ba);
windows_core::imp::interface_hierarchy!(IEnumFullIDList, windows_core::IUnknown);
impl IEnumFullIDList {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn Next(&self, rgelt: &mut [*mut Common::ITEMIDLIST], pceltfetched: Option<*mut u32>) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched.unwrap_or(core::mem::zeroed()) as _) }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumFullIDList> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumFullIDList_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    Next: usize,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IEnumFullIDList_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut *mut Common::ITEMIDLIST, pceltfetched: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumFullIDList>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IEnumFullIDList_Vtbl {
    pub const fn new<Identity: IEnumFullIDList_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumFullIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut Common::ITEMIDLIST, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumFullIDList_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched))
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumFullIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumFullIDList_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumFullIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumFullIDList_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumFullIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumFullIDList_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumFullIDList as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IEnumFullIDList {}
windows_core::imp::define_interface!(IEnumHLITEM, IEnumHLITEM_Vtbl, 0x79eac9c6_baf9_11ce_8c82_00aa004ba90b);
windows_core::imp::interface_hierarchy!(IEnumHLITEM, windows_core::IUnknown);
impl IEnumHLITEM {
    pub unsafe fn Next(&self, celt: u32, rgelt: *mut HLITEM, pceltfetched: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), celt, rgelt as _, pceltfetched as _).ok() }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumHLITEM> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumHLITEM_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut HLITEM, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumHLITEM_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut HLITEM, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumHLITEM>;
}
impl IEnumHLITEM_Vtbl {
    pub const fn new<Identity: IEnumHLITEM_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumHLITEM_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut HLITEM, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumHLITEM_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumHLITEM_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumHLITEM_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumHLITEM_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumHLITEM_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumHLITEM_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppienumhlitem: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumHLITEM_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppienumhlitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumHLITEM as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumHLITEM {}
windows_core::imp::define_interface!(IEnumIDList, IEnumIDList_Vtbl, 0x000214f2_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IEnumIDList, windows_core::IUnknown);
impl IEnumIDList {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn Next(&self, rgelt: &mut [*mut Common::ITEMIDLIST], pceltfetched: Option<*mut u32>) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched.unwrap_or(core::mem::zeroed()) as _) }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt) }
    }
    pub unsafe fn Reset(&self) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn Clone(&self, ppenum: *mut Option<IEnumIDList>) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), core::mem::transmute(ppenum)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumIDList_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    Next: usize,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IEnumIDList_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut *mut Common::ITEMIDLIST, pceltfetched: *mut u32) -> windows_core::HRESULT;
    fn Skip(&self, celt: u32) -> windows_core::HRESULT;
    fn Reset(&self) -> windows_core::HRESULT;
    fn Clone(&self, ppenum: windows_core::OutRef<IEnumIDList>) -> windows_core::HRESULT;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IEnumIDList_Vtbl {
    pub const fn new<Identity: IEnumIDList_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut Common::ITEMIDLIST, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumIDList_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched))
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumIDList_Impl::Skip(this, core::mem::transmute_copy(&celt))
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumIDList_Impl::Reset(this)
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumIDList_Impl::Clone(this, core::mem::transmute_copy(&ppenum))
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumIDList as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IEnumIDList {}
windows_core::imp::define_interface!(IEnumObjects, IEnumObjects_Vtbl, 0x2c1c7e2e_2d0e_4059_831e_1e6f82335c2e);
windows_core::imp::interface_hierarchy!(IEnumObjects, windows_core::IUnknown);
impl IEnumObjects {
    pub unsafe fn Next(&self, riid: *const windows_core::GUID, rgelt: &mut [*mut core::ffi::c_void], pceltfetched: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), riid, core::mem::transmute(rgelt.as_ptr()), pceltfetched.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumObjects> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumObjects_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumObjects_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, riid: *const windows_core::GUID, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumObjects>;
}
impl IEnumObjects_Vtbl {
    pub const fn new<Identity: IEnumObjects_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, riid: *const windows_core::GUID, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumObjects_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumObjects_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumObjects_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumObjects_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumObjects_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumObjects as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumObjects {}
windows_core::imp::define_interface!(IEnumPublishedApps, IEnumPublishedApps_Vtbl, 0x0b124f8c_91f0_11d1_b8b5_006008059382);
windows_core::imp::interface_hierarchy!(IEnumPublishedApps, windows_core::IUnknown);
impl IEnumPublishedApps {
    pub unsafe fn Next(&self) -> windows_core::Result<IPublishedApp> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumPublishedApps_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumPublishedApps_Impl: windows_core::IUnknownImpl {
    fn Next(&self) -> windows_core::Result<IPublishedApp>;
    fn Reset(&self) -> windows_core::Result<()>;
}
impl IEnumPublishedApps_Vtbl {
    pub const fn new<Identity: IEnumPublishedApps_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumPublishedApps_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pia: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumPublishedApps_Impl::Next(this) {
                    Ok(ok__) => {
                        pia.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumPublishedApps_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumPublishedApps_Impl::Reset(this).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Next: Next::<Identity, OFFSET>, Reset: Reset::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumPublishedApps as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumPublishedApps {}
windows_core::imp::define_interface!(IEnumReadyCallback, IEnumReadyCallback_Vtbl, 0x61e00d45_8fff_4e60_924e_6537b61612dd);
windows_core::imp::interface_hierarchy!(IEnumReadyCallback, windows_core::IUnknown);
impl IEnumReadyCallback {
    pub unsafe fn EnumReady(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EnumReady)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumReadyCallback_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub EnumReady: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumReadyCallback_Impl: windows_core::IUnknownImpl {
    fn EnumReady(&self) -> windows_core::Result<()>;
}
impl IEnumReadyCallback_Vtbl {
    pub const fn new<Identity: IEnumReadyCallback_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn EnumReady<Identity: IEnumReadyCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumReadyCallback_Impl::EnumReady(this).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), EnumReady: EnumReady::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumReadyCallback as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumReadyCallback {}
windows_core::imp::define_interface!(IEnumResources, IEnumResources_Vtbl, 0x2dd81fe3_a83c_4da9_a330_47249d345ba1);
windows_core::imp::interface_hierarchy!(IEnumResources, windows_core::IUnknown);
impl IEnumResources {
    pub unsafe fn Next(&self, psir: &mut [SHELL_ITEM_RESOURCE], pceltfetched: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), psir.len().try_into().unwrap(), core::mem::transmute(psir.as_ptr()), pceltfetched as _).ok() }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumResources> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumResources_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut SHELL_ITEM_RESOURCE, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumResources_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, psir: *mut SHELL_ITEM_RESOURCE, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumResources>;
}
impl IEnumResources_Vtbl {
    pub const fn new<Identity: IEnumResources_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, psir: *mut SHELL_ITEM_RESOURCE, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumResources_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&psir), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumResources_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumResources_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenumr: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumResources_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenumr.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumResources as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumResources {}
windows_core::imp::define_interface!(IEnumShellItems, IEnumShellItems_Vtbl, 0x70629033_e363_4a28_a567_0db78006e6d7);
windows_core::imp::interface_hierarchy!(IEnumShellItems, windows_core::IUnknown);
impl IEnumShellItems {
    pub unsafe fn Next(&self, rgelt: &mut [Option<IShellItem>], pceltfetched: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumShellItems> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumShellItems_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumShellItems_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut Option<IShellItem>, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumShellItems>;
}
impl IEnumShellItems_Vtbl {
    pub const fn new<Identity: IEnumShellItems_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumShellItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumShellItems_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumShellItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumShellItems_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumShellItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumShellItems_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumShellItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumShellItems_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumShellItems as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumShellItems {}
windows_core::imp::define_interface!(IEnumSyncMgrConflict, IEnumSyncMgrConflict_Vtbl, 0x82705914_dda3_4893_ba99_49de6c8c8036);
windows_core::imp::interface_hierarchy!(IEnumSyncMgrConflict, windows_core::IUnknown);
impl IEnumSyncMgrConflict {
    pub unsafe fn Next(&self, rgelt: &mut [Option<ISyncMgrConflict>], pceltfetched: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched as _).ok() }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumSyncMgrConflict> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumSyncMgrConflict_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumSyncMgrConflict_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut Option<ISyncMgrConflict>, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumSyncMgrConflict>;
}
impl IEnumSyncMgrConflict_Vtbl {
    pub const fn new<Identity: IEnumSyncMgrConflict_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumSyncMgrConflict_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumSyncMgrConflict_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumSyncMgrConflict_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumSyncMgrConflict_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumSyncMgrConflict_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumSyncMgrConflict_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumSyncMgrConflict_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumSyncMgrConflict_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumSyncMgrConflict as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumSyncMgrConflict {}
windows_core::imp::define_interface!(IEnumSyncMgrEvents, IEnumSyncMgrEvents_Vtbl, 0xc81a1d4e_8cf7_4683_80e0_bcae88d677b6);
windows_core::imp::interface_hierarchy!(IEnumSyncMgrEvents, windows_core::IUnknown);
impl IEnumSyncMgrEvents {
    pub unsafe fn Next(&self, rgelt: &mut [Option<ISyncMgrEvent>], pceltfetched: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched as _).ok() }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumSyncMgrEvents> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumSyncMgrEvents_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumSyncMgrEvents_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut Option<ISyncMgrEvent>, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumSyncMgrEvents>;
}
impl IEnumSyncMgrEvents_Vtbl {
    pub const fn new<Identity: IEnumSyncMgrEvents_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumSyncMgrEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumSyncMgrEvents_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumSyncMgrEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumSyncMgrEvents_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumSyncMgrEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumSyncMgrEvents_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumSyncMgrEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumSyncMgrEvents_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumSyncMgrEvents as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumSyncMgrEvents {}
windows_core::imp::define_interface!(IEnumSyncMgrSyncItems, IEnumSyncMgrSyncItems_Vtbl, 0x54b3abf3_f085_4181_b546_e29c403c726b);
windows_core::imp::interface_hierarchy!(IEnumSyncMgrSyncItems, windows_core::IUnknown);
impl IEnumSyncMgrSyncItems {
    pub unsafe fn Next(&self, rgelt: &mut [Option<ISyncMgrSyncItem>], pceltfetched: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched as _).ok() }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumSyncMgrSyncItems> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumSyncMgrSyncItems_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumSyncMgrSyncItems_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut Option<ISyncMgrSyncItem>, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumSyncMgrSyncItems>;
}
impl IEnumSyncMgrSyncItems_Vtbl {
    pub const fn new<Identity: IEnumSyncMgrSyncItems_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumSyncMgrSyncItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumSyncMgrSyncItems_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumSyncMgrSyncItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumSyncMgrSyncItems_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumSyncMgrSyncItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumSyncMgrSyncItems_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumSyncMgrSyncItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumSyncMgrSyncItems_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumSyncMgrSyncItems as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumSyncMgrSyncItems {}
windows_core::imp::define_interface!(IEnumTravelLogEntry, IEnumTravelLogEntry_Vtbl, 0x7ebfdd85_ad18_11d3_a4c5_00c04f72d6b8);
windows_core::imp::interface_hierarchy!(IEnumTravelLogEntry, windows_core::IUnknown);
impl IEnumTravelLogEntry {
    pub unsafe fn Next(&self, rgelt: &mut [Option<ITravelLogEntry>], pceltfetched: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched as _).ok() }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<IEnumTravelLogEntry> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumTravelLogEntry_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IEnumTravelLogEntry_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut Option<ITravelLogEntry>, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<IEnumTravelLogEntry>;
}
impl IEnumTravelLogEntry_Vtbl {
    pub const fn new<Identity: IEnumTravelLogEntry_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: IEnumTravelLogEntry_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut *mut core::ffi::c_void, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumTravelLogEntry_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        unsafe extern "system" fn Skip<Identity: IEnumTravelLogEntry_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumTravelLogEntry_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: IEnumTravelLogEntry_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumTravelLogEntry_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IEnumTravelLogEntry_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumTravelLogEntry_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumTravelLogEntry as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IEnumTravelLogEntry {}
windows_core::imp::define_interface!(IEnumerableView, IEnumerableView_Vtbl, 0x8c8bf236_1aec_495f_9894_91d57c3c686f);
windows_core::imp::interface_hierarchy!(IEnumerableView, windows_core::IUnknown);
impl IEnumerableView {
    pub unsafe fn SetEnumReadyCallback<P0>(&self, percb: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IEnumReadyCallback>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEnumReadyCallback)(windows_core::Interface::as_raw(self), percb.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn CreateEnumIDListFromContents(&self, pidlfolder: *const Common::ITEMIDLIST, dwenumflags: u32) -> windows_core::Result<IEnumIDList> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateEnumIDListFromContents)(windows_core::Interface::as_raw(self), pidlfolder, dwenumflags, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IEnumerableView_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetEnumReadyCallback: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub CreateEnumIDListFromContents: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    CreateEnumIDListFromContents: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IEnumerableView_Impl: windows_core::IUnknownImpl {
    fn SetEnumReadyCallback(&self, percb: windows_core::Ref<IEnumReadyCallback>) -> windows_core::Result<()>;
    fn CreateEnumIDListFromContents(&self, pidlfolder: *const Common::ITEMIDLIST, dwenumflags: u32) -> windows_core::Result<IEnumIDList>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IEnumerableView_Vtbl {
    pub const fn new<Identity: IEnumerableView_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetEnumReadyCallback<Identity: IEnumerableView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, percb: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IEnumerableView_Impl::SetEnumReadyCallback(this, core::mem::transmute_copy(&percb)).into()
            }
        }
        unsafe extern "system" fn CreateEnumIDListFromContents<Identity: IEnumerableView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, dwenumflags: u32, ppenumidlist: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IEnumerableView_Impl::CreateEnumIDListFromContents(this, core::mem::transmute_copy(&pidlfolder), core::mem::transmute_copy(&dwenumflags)) {
                    Ok(ok__) => {
                        ppenumidlist.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetEnumReadyCallback: SetEnumReadyCallback::<Identity, OFFSET>,
            CreateEnumIDListFromContents: CreateEnumIDListFromContents::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IEnumerableView as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IEnumerableView {}
windows_core::imp::define_interface!(IExecuteCommand, IExecuteCommand_Vtbl, 0x7f9185b0_cb92_43c5_80a9_92277a4f7b54);
windows_core::imp::interface_hierarchy!(IExecuteCommand, windows_core::IUnknown);
impl IExecuteCommand {
    pub unsafe fn SetKeyState(&self, grfkeystate: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetKeyState)(windows_core::Interface::as_raw(self), grfkeystate).ok() }
    }
    pub unsafe fn SetParameters<P0>(&self, pszparameters: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetParameters)(windows_core::Interface::as_raw(self), pszparameters.param().abi()).ok() }
    }
    pub unsafe fn SetPosition(&self, pt: super::super::Foundation::POINT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetPosition)(windows_core::Interface::as_raw(self), core::mem::transmute(pt)).ok() }
    }
    pub unsafe fn SetShowWindow(&self, nshow: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetShowWindow)(windows_core::Interface::as_raw(self), nshow).ok() }
    }
    pub unsafe fn SetNoShowUI(&self, fnoshowui: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNoShowUI)(windows_core::Interface::as_raw(self), fnoshowui.into()).ok() }
    }
    pub unsafe fn SetDirectory<P0>(&self, pszdirectory: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDirectory)(windows_core::Interface::as_raw(self), pszdirectory.param().abi()).ok() }
    }
    pub unsafe fn Execute(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Execute)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExecuteCommand_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetKeyState: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetParameters: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetPosition: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::POINT) -> windows_core::HRESULT,
    pub SetShowWindow: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SetNoShowUI: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub SetDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub Execute: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IExecuteCommand_Impl: windows_core::IUnknownImpl {
    fn SetKeyState(&self, grfkeystate: u32) -> windows_core::Result<()>;
    fn SetParameters(&self, pszparameters: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetPosition(&self, pt: &super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn SetShowWindow(&self, nshow: i32) -> windows_core::Result<()>;
    fn SetNoShowUI(&self, fnoshowui: windows_core::BOOL) -> windows_core::Result<()>;
    fn SetDirectory(&self, pszdirectory: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Execute(&self) -> windows_core::Result<()>;
}
impl IExecuteCommand_Vtbl {
    pub const fn new<Identity: IExecuteCommand_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetKeyState<Identity: IExecuteCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfkeystate: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExecuteCommand_Impl::SetKeyState(this, core::mem::transmute_copy(&grfkeystate)).into()
            }
        }
        unsafe extern "system" fn SetParameters<Identity: IExecuteCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszparameters: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExecuteCommand_Impl::SetParameters(this, core::mem::transmute(&pszparameters)).into()
            }
        }
        unsafe extern "system" fn SetPosition<Identity: IExecuteCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pt: super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExecuteCommand_Impl::SetPosition(this, core::mem::transmute(&pt)).into()
            }
        }
        unsafe extern "system" fn SetShowWindow<Identity: IExecuteCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nshow: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExecuteCommand_Impl::SetShowWindow(this, core::mem::transmute_copy(&nshow)).into()
            }
        }
        unsafe extern "system" fn SetNoShowUI<Identity: IExecuteCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fnoshowui: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExecuteCommand_Impl::SetNoShowUI(this, core::mem::transmute_copy(&fnoshowui)).into()
            }
        }
        unsafe extern "system" fn SetDirectory<Identity: IExecuteCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdirectory: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExecuteCommand_Impl::SetDirectory(this, core::mem::transmute(&pszdirectory)).into()
            }
        }
        unsafe extern "system" fn Execute<Identity: IExecuteCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExecuteCommand_Impl::Execute(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetKeyState: SetKeyState::<Identity, OFFSET>,
            SetParameters: SetParameters::<Identity, OFFSET>,
            SetPosition: SetPosition::<Identity, OFFSET>,
            SetShowWindow: SetShowWindow::<Identity, OFFSET>,
            SetNoShowUI: SetNoShowUI::<Identity, OFFSET>,
            SetDirectory: SetDirectory::<Identity, OFFSET>,
            Execute: Execute::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExecuteCommand as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IExecuteCommand {}
windows_core::imp::define_interface!(IExecuteCommandApplicationHostEnvironment, IExecuteCommandApplicationHostEnvironment_Vtbl, 0x18b21aa9_e184_4ff0_9f5e_f882d03771b3);
windows_core::imp::interface_hierarchy!(IExecuteCommandApplicationHostEnvironment, windows_core::IUnknown);
impl IExecuteCommandApplicationHostEnvironment {
    pub unsafe fn GetValue(&self) -> windows_core::Result<AHE_TYPE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetValue)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExecuteCommandApplicationHostEnvironment_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut AHE_TYPE) -> windows_core::HRESULT,
}
pub trait IExecuteCommandApplicationHostEnvironment_Impl: windows_core::IUnknownImpl {
    fn GetValue(&self) -> windows_core::Result<AHE_TYPE>;
}
impl IExecuteCommandApplicationHostEnvironment_Vtbl {
    pub const fn new<Identity: IExecuteCommandApplicationHostEnvironment_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetValue<Identity: IExecuteCommandApplicationHostEnvironment_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pahe: *mut AHE_TYPE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExecuteCommandApplicationHostEnvironment_Impl::GetValue(this) {
                    Ok(ok__) => {
                        pahe.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetValue: GetValue::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExecuteCommandApplicationHostEnvironment as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IExecuteCommandApplicationHostEnvironment {}
windows_core::imp::define_interface!(IExecuteCommandHost, IExecuteCommandHost_Vtbl, 0x4b6832a2_5f04_4c9d_b89d_727a15d103e7);
windows_core::imp::interface_hierarchy!(IExecuteCommandHost, windows_core::IUnknown);
impl IExecuteCommandHost {
    pub unsafe fn GetUIMode(&self) -> windows_core::Result<EC_HOST_UI_MODE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetUIMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExecuteCommandHost_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetUIMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut EC_HOST_UI_MODE) -> windows_core::HRESULT,
}
pub trait IExecuteCommandHost_Impl: windows_core::IUnknownImpl {
    fn GetUIMode(&self) -> windows_core::Result<EC_HOST_UI_MODE>;
}
impl IExecuteCommandHost_Vtbl {
    pub const fn new<Identity: IExecuteCommandHost_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetUIMode<Identity: IExecuteCommandHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, puimode: *mut EC_HOST_UI_MODE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExecuteCommandHost_Impl::GetUIMode(this) {
                    Ok(ok__) => {
                        puimode.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetUIMode: GetUIMode::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExecuteCommandHost as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IExecuteCommandHost {}
windows_core::imp::define_interface!(IExpDispSupport, IExpDispSupport_Vtbl, 0x0d7d1d00_6fc0_11d0_a974_00c04fd705a2);
windows_core::imp::interface_hierarchy!(IExpDispSupport, windows_core::IUnknown);
impl IExpDispSupport {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn FindConnectionPoint(&self, riid: *const windows_core::GUID) -> windows_core::Result<super::super::System::Com::IConnectionPoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindConnectionPoint)(windows_core::Interface::as_raw(self), riid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn OnTranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG, grfmodifiers: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnTranslateAccelerator)(windows_core::Interface::as_raw(self), pmsg, grfmodifiers).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn OnInvoke(&self, dispidmember: i32, iid: *const windows_core::GUID, lcid: u32, wflags: u16, pdispparams: *const super::super::System::Com::DISPPARAMS, pvarresult: *mut super::super::System::Variant::VARIANT, pexcepinfo: *mut super::super::System::Com::EXCEPINFO, puargerr: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnInvoke)(windows_core::Interface::as_raw(self), dispidmember, iid, lcid, wflags, pdispparams, core::mem::transmute(pvarresult), core::mem::transmute(pexcepinfo), puargerr as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExpDispSupport_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub FindConnectionPoint: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    FindConnectionPoint: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub OnTranslateAccelerator: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::MSG, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    OnTranslateAccelerator: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub OnInvoke: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *const windows_core::GUID, u32, u16, *const super::super::System::Com::DISPPARAMS, *mut super::super::System::Variant::VARIANT, *mut super::super::System::Com::EXCEPINFO, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    OnInvoke: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IExpDispSupport_Impl: windows_core::IUnknownImpl {
    fn FindConnectionPoint(&self, riid: *const windows_core::GUID) -> windows_core::Result<super::super::System::Com::IConnectionPoint>;
    fn OnTranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG, grfmodifiers: u32) -> windows_core::Result<()>;
    fn OnInvoke(&self, dispidmember: i32, iid: *const windows_core::GUID, lcid: u32, wflags: u16, pdispparams: *const super::super::System::Com::DISPPARAMS, pvarresult: *mut super::super::System::Variant::VARIANT, pexcepinfo: *mut super::super::System::Com::EXCEPINFO, puargerr: *mut u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_WindowsAndMessaging"))]
impl IExpDispSupport_Vtbl {
    pub const fn new<Identity: IExpDispSupport_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn FindConnectionPoint<Identity: IExpDispSupport_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppccp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExpDispSupport_Impl::FindConnectionPoint(this, core::mem::transmute_copy(&riid)) {
                    Ok(ok__) => {
                        ppccp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OnTranslateAccelerator<Identity: IExpDispSupport_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG, grfmodifiers: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExpDispSupport_Impl::OnTranslateAccelerator(this, core::mem::transmute_copy(&pmsg), core::mem::transmute_copy(&grfmodifiers)).into()
            }
        }
        unsafe extern "system" fn OnInvoke<Identity: IExpDispSupport_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dispidmember: i32, iid: *const windows_core::GUID, lcid: u32, wflags: u16, pdispparams: *const super::super::System::Com::DISPPARAMS, pvarresult: *mut super::super::System::Variant::VARIANT, pexcepinfo: *mut super::super::System::Com::EXCEPINFO, puargerr: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExpDispSupport_Impl::OnInvoke(this, core::mem::transmute_copy(&dispidmember), core::mem::transmute_copy(&iid), core::mem::transmute_copy(&lcid), core::mem::transmute_copy(&wflags), core::mem::transmute_copy(&pdispparams), core::mem::transmute_copy(&pvarresult), core::mem::transmute_copy(&pexcepinfo), core::mem::transmute_copy(&puargerr)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FindConnectionPoint: FindConnectionPoint::<Identity, OFFSET>,
            OnTranslateAccelerator: OnTranslateAccelerator::<Identity, OFFSET>,
            OnInvoke: OnInvoke::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExpDispSupport as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IExpDispSupport {}
windows_core::imp::define_interface!(IExpDispSupportXP, IExpDispSupportXP_Vtbl, 0x2f0dd58c_f789_4f14_99fb_9293b3c9c212);
windows_core::imp::interface_hierarchy!(IExpDispSupportXP, windows_core::IUnknown);
impl IExpDispSupportXP {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn FindCIE4ConnectionPoint(&self, riid: *const windows_core::GUID) -> windows_core::Result<CIE4ConnectionPoint> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindCIE4ConnectionPoint)(windows_core::Interface::as_raw(self), riid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn OnTranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG, grfmodifiers: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnTranslateAccelerator)(windows_core::Interface::as_raw(self), pmsg, grfmodifiers).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn OnInvoke(&self, dispidmember: i32, iid: *const windows_core::GUID, lcid: u32, wflags: u16, pdispparams: *const super::super::System::Com::DISPPARAMS, pvarresult: *mut super::super::System::Variant::VARIANT, pexcepinfo: *mut super::super::System::Com::EXCEPINFO, puargerr: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnInvoke)(windows_core::Interface::as_raw(self), dispidmember, iid, lcid, wflags, pdispparams, core::mem::transmute(pvarresult), core::mem::transmute(pexcepinfo), puargerr as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExpDispSupportXP_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub FindCIE4ConnectionPoint: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    FindCIE4ConnectionPoint: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub OnTranslateAccelerator: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::MSG, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    OnTranslateAccelerator: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub OnInvoke: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *const windows_core::GUID, u32, u16, *const super::super::System::Com::DISPPARAMS, *mut super::super::System::Variant::VARIANT, *mut super::super::System::Com::EXCEPINFO, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    OnInvoke: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IExpDispSupportXP_Impl: windows_core::IUnknownImpl {
    fn FindCIE4ConnectionPoint(&self, riid: *const windows_core::GUID) -> windows_core::Result<CIE4ConnectionPoint>;
    fn OnTranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG, grfmodifiers: u32) -> windows_core::Result<()>;
    fn OnInvoke(&self, dispidmember: i32, iid: *const windows_core::GUID, lcid: u32, wflags: u16, pdispparams: *const super::super::System::Com::DISPPARAMS, pvarresult: *mut super::super::System::Variant::VARIANT, pexcepinfo: *mut super::super::System::Com::EXCEPINFO, puargerr: *mut u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_WindowsAndMessaging"))]
impl IExpDispSupportXP_Vtbl {
    pub const fn new<Identity: IExpDispSupportXP_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn FindCIE4ConnectionPoint<Identity: IExpDispSupportXP_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppccp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExpDispSupportXP_Impl::FindCIE4ConnectionPoint(this, core::mem::transmute_copy(&riid)) {
                    Ok(ok__) => {
                        ppccp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OnTranslateAccelerator<Identity: IExpDispSupportXP_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG, grfmodifiers: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExpDispSupportXP_Impl::OnTranslateAccelerator(this, core::mem::transmute_copy(&pmsg), core::mem::transmute_copy(&grfmodifiers)).into()
            }
        }
        unsafe extern "system" fn OnInvoke<Identity: IExpDispSupportXP_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dispidmember: i32, iid: *const windows_core::GUID, lcid: u32, wflags: u16, pdispparams: *const super::super::System::Com::DISPPARAMS, pvarresult: *mut super::super::System::Variant::VARIANT, pexcepinfo: *mut super::super::System::Com::EXCEPINFO, puargerr: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExpDispSupportXP_Impl::OnInvoke(this, core::mem::transmute_copy(&dispidmember), core::mem::transmute_copy(&iid), core::mem::transmute_copy(&lcid), core::mem::transmute_copy(&wflags), core::mem::transmute_copy(&pdispparams), core::mem::transmute_copy(&pvarresult), core::mem::transmute_copy(&pexcepinfo), core::mem::transmute_copy(&puargerr)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FindCIE4ConnectionPoint: FindCIE4ConnectionPoint::<Identity, OFFSET>,
            OnTranslateAccelerator: OnTranslateAccelerator::<Identity, OFFSET>,
            OnInvoke: OnInvoke::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExpDispSupportXP as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IExpDispSupportXP {}
windows_core::imp::define_interface!(IExplorerBrowser, IExplorerBrowser_Vtbl, 0xdfd3b6b5_c10c_4be9_85f6_a66969f402f6);
windows_core::imp::interface_hierarchy!(IExplorerBrowser, windows_core::IUnknown);
impl IExplorerBrowser {
    pub unsafe fn Initialize(&self, hwndparent: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT, pfs: Option<*const FOLDERSETTINGS>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), hwndparent, prc, pfs.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn Destroy(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Destroy)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn SetRect(&self, phdwp: Option<*mut super::WindowsAndMessaging::HDWP>, rcbrowser: super::super::Foundation::RECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRect)(windows_core::Interface::as_raw(self), phdwp.unwrap_or(core::mem::zeroed()) as _, core::mem::transmute(rcbrowser)).ok() }
    }
    pub unsafe fn SetPropertyBag<P0>(&self, pszpropertybag: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetPropertyBag)(windows_core::Interface::as_raw(self), pszpropertybag.param().abi()).ok() }
    }
    pub unsafe fn SetEmptyText<P0>(&self, pszemptytext: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEmptyText)(windows_core::Interface::as_raw(self), pszemptytext.param().abi()).ok() }
    }
    pub unsafe fn SetFolderSettings(&self, pfs: *const FOLDERSETTINGS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFolderSettings)(windows_core::Interface::as_raw(self), pfs).ok() }
    }
    pub unsafe fn Advise<P0>(&self, psbe: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<IExplorerBrowserEvents>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Advise)(windows_core::Interface::as_raw(self), psbe.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Unadvise)(windows_core::Interface::as_raw(self), dwcookie).ok() }
    }
    pub unsafe fn SetOptions(&self, dwflag: EXPLORER_BROWSER_OPTIONS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOptions)(windows_core::Interface::as_raw(self), dwflag).ok() }
    }
    pub unsafe fn GetOptions(&self) -> windows_core::Result<EXPLORER_BROWSER_OPTIONS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn BrowseToIDList(&self, pidl: *const Common::ITEMIDLIST, uflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).BrowseToIDList)(windows_core::Interface::as_raw(self), pidl, uflags).ok() }
    }
    pub unsafe fn BrowseToObject<P0>(&self, punk: P0, uflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).BrowseToObject)(windows_core::Interface::as_raw(self), punk.param().abi(), uflags).ok() }
    }
    pub unsafe fn FillFromObject<P0>(&self, punk: P0, dwflags: EXPLORER_BROWSER_FILL_FLAGS) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).FillFromObject)(windows_core::Interface::as_raw(self), punk.param().abi(), dwflags).ok() }
    }
    pub unsafe fn RemoveAll(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveAll)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetCurrentView<T>(&self) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetCurrentView)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExplorerBrowser_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const super::super::Foundation::RECT, *const FOLDERSETTINGS) -> windows_core::HRESULT,
    pub Destroy: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub SetRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::WindowsAndMessaging::HDWP, super::super::Foundation::RECT) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    SetRect: usize,
    pub SetPropertyBag: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetEmptyText: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetFolderSettings: unsafe extern "system" fn(*mut core::ffi::c_void, *const FOLDERSETTINGS) -> windows_core::HRESULT,
    pub Advise: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetOptions: unsafe extern "system" fn(*mut core::ffi::c_void, EXPLORER_BROWSER_OPTIONS) -> windows_core::HRESULT,
    pub GetOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut EXPLORER_BROWSER_OPTIONS) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub BrowseToIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    BrowseToIDList: usize,
    pub BrowseToObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub FillFromObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, EXPLORER_BROWSER_FILL_FLAGS) -> windows_core::HRESULT,
    pub RemoveAll: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCurrentView: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IExplorerBrowser_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, hwndparent: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT, pfs: *const FOLDERSETTINGS) -> windows_core::Result<()>;
    fn Destroy(&self) -> windows_core::Result<()>;
    fn SetRect(&self, phdwp: *mut super::WindowsAndMessaging::HDWP, rcbrowser: &super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn SetPropertyBag(&self, pszpropertybag: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetEmptyText(&self, pszemptytext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFolderSettings(&self, pfs: *const FOLDERSETTINGS) -> windows_core::Result<()>;
    fn Advise(&self, psbe: windows_core::Ref<IExplorerBrowserEvents>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn SetOptions(&self, dwflag: EXPLORER_BROWSER_OPTIONS) -> windows_core::Result<()>;
    fn GetOptions(&self) -> windows_core::Result<EXPLORER_BROWSER_OPTIONS>;
    fn BrowseToIDList(&self, pidl: *const Common::ITEMIDLIST, uflags: u32) -> windows_core::Result<()>;
    fn BrowseToObject(&self, punk: windows_core::Ref<windows_core::IUnknown>, uflags: u32) -> windows_core::Result<()>;
    fn FillFromObject(&self, punk: windows_core::Ref<windows_core::IUnknown>, dwflags: EXPLORER_BROWSER_FILL_FLAGS) -> windows_core::Result<()>;
    fn RemoveAll(&self) -> windows_core::Result<()>;
    fn GetCurrentView(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IExplorerBrowser_Vtbl {
    pub const fn new<Identity: IExplorerBrowser_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT, pfs: *const FOLDERSETTINGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::Initialize(this, core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&prc), core::mem::transmute_copy(&pfs)).into()
            }
        }
        unsafe extern "system" fn Destroy<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::Destroy(this).into()
            }
        }
        unsafe extern "system" fn SetRect<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phdwp: *mut super::WindowsAndMessaging::HDWP, rcbrowser: super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::SetRect(this, core::mem::transmute_copy(&phdwp), core::mem::transmute(&rcbrowser)).into()
            }
        }
        unsafe extern "system" fn SetPropertyBag<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpropertybag: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::SetPropertyBag(this, core::mem::transmute(&pszpropertybag)).into()
            }
        }
        unsafe extern "system" fn SetEmptyText<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszemptytext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::SetEmptyText(this, core::mem::transmute(&pszemptytext)).into()
            }
        }
        unsafe extern "system" fn SetFolderSettings<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfs: *const FOLDERSETTINGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::SetFolderSettings(this, core::mem::transmute_copy(&pfs)).into()
            }
        }
        unsafe extern "system" fn Advise<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psbe: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerBrowser_Impl::Advise(this, core::mem::transmute_copy(&psbe)) {
                    Ok(ok__) => {
                        pdwcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Unadvise<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
            }
        }
        unsafe extern "system" fn SetOptions<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflag: EXPLORER_BROWSER_OPTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::SetOptions(this, core::mem::transmute_copy(&dwflag)).into()
            }
        }
        unsafe extern "system" fn GetOptions<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflag: *mut EXPLORER_BROWSER_OPTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerBrowser_Impl::GetOptions(this) {
                    Ok(ok__) => {
                        pdwflag.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn BrowseToIDList<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, uflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::BrowseToIDList(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&uflags)).into()
            }
        }
        unsafe extern "system" fn BrowseToObject<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, uflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::BrowseToObject(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&uflags)).into()
            }
        }
        unsafe extern "system" fn FillFromObject<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, dwflags: EXPLORER_BROWSER_FILL_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::FillFromObject(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn RemoveAll<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::RemoveAll(this).into()
            }
        }
        unsafe extern "system" fn GetCurrentView<Identity: IExplorerBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowser_Impl::GetCurrentView(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            Destroy: Destroy::<Identity, OFFSET>,
            SetRect: SetRect::<Identity, OFFSET>,
            SetPropertyBag: SetPropertyBag::<Identity, OFFSET>,
            SetEmptyText: SetEmptyText::<Identity, OFFSET>,
            SetFolderSettings: SetFolderSettings::<Identity, OFFSET>,
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            SetOptions: SetOptions::<Identity, OFFSET>,
            GetOptions: GetOptions::<Identity, OFFSET>,
            BrowseToIDList: BrowseToIDList::<Identity, OFFSET>,
            BrowseToObject: BrowseToObject::<Identity, OFFSET>,
            FillFromObject: FillFromObject::<Identity, OFFSET>,
            RemoveAll: RemoveAll::<Identity, OFFSET>,
            GetCurrentView: GetCurrentView::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerBrowser as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IExplorerBrowser {}
windows_core::imp::define_interface!(IExplorerBrowserEvents, IExplorerBrowserEvents_Vtbl, 0x361bbdc7_e6ee_4e13_be58_58e2240c810f);
windows_core::imp::interface_hierarchy!(IExplorerBrowserEvents, windows_core::IUnknown);
impl IExplorerBrowserEvents {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn OnNavigationPending(&self, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnNavigationPending)(windows_core::Interface::as_raw(self), pidlfolder).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn OnViewCreated<P0>(&self, psv: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnViewCreated)(windows_core::Interface::as_raw(self), psv.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn OnNavigationComplete(&self, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnNavigationComplete)(windows_core::Interface::as_raw(self), pidlfolder).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn OnNavigationFailed(&self, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnNavigationFailed)(windows_core::Interface::as_raw(self), pidlfolder).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExplorerBrowserEvents_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub OnNavigationPending: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    OnNavigationPending: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub OnViewCreated: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    OnViewCreated: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub OnNavigationComplete: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    OnNavigationComplete: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub OnNavigationFailed: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    OnNavigationFailed: usize,
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait IExplorerBrowserEvents_Impl: windows_core::IUnknownImpl {
    fn OnNavigationPending(&self, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn OnViewCreated(&self, psv: windows_core::Ref<IShellView>) -> windows_core::Result<()>;
    fn OnNavigationComplete(&self, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn OnNavigationFailed(&self, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl IExplorerBrowserEvents_Vtbl {
    pub const fn new<Identity: IExplorerBrowserEvents_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnNavigationPending<Identity: IExplorerBrowserEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowserEvents_Impl::OnNavigationPending(this, core::mem::transmute_copy(&pidlfolder)).into()
            }
        }
        unsafe extern "system" fn OnViewCreated<Identity: IExplorerBrowserEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psv: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowserEvents_Impl::OnViewCreated(this, core::mem::transmute_copy(&psv)).into()
            }
        }
        unsafe extern "system" fn OnNavigationComplete<Identity: IExplorerBrowserEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowserEvents_Impl::OnNavigationComplete(this, core::mem::transmute_copy(&pidlfolder)).into()
            }
        }
        unsafe extern "system" fn OnNavigationFailed<Identity: IExplorerBrowserEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerBrowserEvents_Impl::OnNavigationFailed(this, core::mem::transmute_copy(&pidlfolder)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnNavigationPending: OnNavigationPending::<Identity, OFFSET>,
            OnViewCreated: OnViewCreated::<Identity, OFFSET>,
            OnNavigationComplete: OnNavigationComplete::<Identity, OFFSET>,
            OnNavigationFailed: OnNavigationFailed::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerBrowserEvents as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IExplorerBrowserEvents {}
windows_core::imp::define_interface!(IExplorerCommand, IExplorerCommand_Vtbl, 0xa08ce4d0_fa25_44ab_b57c_c7b1c323e0b9);
windows_core::imp::interface_hierarchy!(IExplorerCommand, windows_core::IUnknown);
impl IExplorerCommand {
    pub unsafe fn GetTitle<P0>(&self, psiitemarray: P0) -> windows_core::Result<windows_core::PWSTR>
    where
        P0: windows_core::Param<IShellItemArray>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTitle)(windows_core::Interface::as_raw(self), psiitemarray.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetIcon<P0>(&self, psiitemarray: P0) -> windows_core::Result<windows_core::PWSTR>
    where
        P0: windows_core::Param<IShellItemArray>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIcon)(windows_core::Interface::as_raw(self), psiitemarray.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetToolTip<P0>(&self, psiitemarray: P0) -> windows_core::Result<windows_core::PWSTR>
    where
        P0: windows_core::Param<IShellItemArray>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetToolTip)(windows_core::Interface::as_raw(self), psiitemarray.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCanonicalName(&self) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCanonicalName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetState<P0>(&self, psiitemarray: P0, foktobeslow: bool) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<IShellItemArray>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetState)(windows_core::Interface::as_raw(self), psiitemarray.param().abi(), foktobeslow.into(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Invoke<P0, P1>(&self, psiitemarray: P0, pbc: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItemArray>,
        P1: windows_core::Param<super::super::System::Com::IBindCtx>,
    {
        unsafe { (windows_core::Interface::vtable(self).Invoke)(windows_core::Interface::as_raw(self), psiitemarray.param().abi(), pbc.param().abi()).ok() }
    }
    pub unsafe fn GetFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn EnumSubCommands(&self) -> windows_core::Result<IEnumExplorerCommand> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumSubCommands)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExplorerCommand_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTitle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetIcon: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetToolTip: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetCanonicalName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub GetState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Invoke: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Invoke: usize,
    pub GetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub EnumSubCommands: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IExplorerCommand_Impl: windows_core::IUnknownImpl {
    fn GetTitle(&self, psiitemarray: windows_core::Ref<IShellItemArray>) -> windows_core::Result<windows_core::PWSTR>;
    fn GetIcon(&self, psiitemarray: windows_core::Ref<IShellItemArray>) -> windows_core::Result<windows_core::PWSTR>;
    fn GetToolTip(&self, psiitemarray: windows_core::Ref<IShellItemArray>) -> windows_core::Result<windows_core::PWSTR>;
    fn GetCanonicalName(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetState(&self, psiitemarray: windows_core::Ref<IShellItemArray>, foktobeslow: windows_core::BOOL) -> windows_core::Result<u32>;
    fn Invoke(&self, psiitemarray: windows_core::Ref<IShellItemArray>, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>) -> windows_core::Result<()>;
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn EnumSubCommands(&self) -> windows_core::Result<IEnumExplorerCommand>;
}
#[cfg(feature = "Win32_System_Com")]
impl IExplorerCommand_Vtbl {
    pub const fn new<Identity: IExplorerCommand_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetTitle<Identity: IExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerCommand_Impl::GetTitle(this, core::mem::transmute_copy(&psiitemarray)) {
                    Ok(ok__) => {
                        ppszname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetIcon<Identity: IExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, ppszicon: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerCommand_Impl::GetIcon(this, core::mem::transmute_copy(&psiitemarray)) {
                    Ok(ok__) => {
                        ppszicon.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetToolTip<Identity: IExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, ppszinfotip: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerCommand_Impl::GetToolTip(this, core::mem::transmute_copy(&psiitemarray)) {
                    Ok(ok__) => {
                        ppszinfotip.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCanonicalName<Identity: IExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidcommandname: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerCommand_Impl::GetCanonicalName(this) {
                    Ok(ok__) => {
                        pguidcommandname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetState<Identity: IExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, foktobeslow: windows_core::BOOL, pcmdstate: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerCommand_Impl::GetState(this, core::mem::transmute_copy(&psiitemarray), core::mem::transmute_copy(&foktobeslow)) {
                    Ok(ok__) => {
                        pcmdstate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Invoke<Identity: IExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerCommand_Impl::Invoke(this, core::mem::transmute_copy(&psiitemarray), core::mem::transmute_copy(&pbc)).into()
            }
        }
        unsafe extern "system" fn GetFlags<Identity: IExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerCommand_Impl::GetFlags(this) {
                    Ok(ok__) => {
                        pflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumSubCommands<Identity: IExplorerCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerCommand_Impl::EnumSubCommands(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTitle: GetTitle::<Identity, OFFSET>,
            GetIcon: GetIcon::<Identity, OFFSET>,
            GetToolTip: GetToolTip::<Identity, OFFSET>,
            GetCanonicalName: GetCanonicalName::<Identity, OFFSET>,
            GetState: GetState::<Identity, OFFSET>,
            Invoke: Invoke::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            EnumSubCommands: EnumSubCommands::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerCommand as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IExplorerCommand {}
windows_core::imp::define_interface!(IExplorerCommandProvider, IExplorerCommandProvider_Vtbl, 0x64961751_0835_43c0_8ffe_d57686530e64);
windows_core::imp::interface_hierarchy!(IExplorerCommandProvider, windows_core::IUnknown);
impl IExplorerCommandProvider {
    pub unsafe fn GetCommands<P0, T>(&self, punksite: P0) -> windows_core::Result<T>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetCommands)(windows_core::Interface::as_raw(self), punksite.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetCommand<T>(&self, rguidcommandid: *const windows_core::GUID) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetCommand)(windows_core::Interface::as_raw(self), rguidcommandid, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExplorerCommandProvider_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCommands: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCommand: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IExplorerCommandProvider_Impl: windows_core::IUnknownImpl {
    fn GetCommands(&self, punksite: windows_core::Ref<windows_core::IUnknown>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetCommand(&self, rguidcommandid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl IExplorerCommandProvider_Vtbl {
    pub const fn new<Identity: IExplorerCommandProvider_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCommands<Identity: IExplorerCommandProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punksite: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerCommandProvider_Impl::GetCommands(this, core::mem::transmute_copy(&punksite), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetCommand<Identity: IExplorerCommandProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rguidcommandid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExplorerCommandProvider_Impl::GetCommand(this, core::mem::transmute_copy(&rguidcommandid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCommands: GetCommands::<Identity, OFFSET>,
            GetCommand: GetCommand::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerCommandProvider as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IExplorerCommandProvider {}
windows_core::imp::define_interface!(IExplorerCommandState, IExplorerCommandState_Vtbl, 0xbddacb60_7657_47ae_8445_d23e1acf82ae);
windows_core::imp::interface_hierarchy!(IExplorerCommandState, windows_core::IUnknown);
impl IExplorerCommandState {
    pub unsafe fn GetState<P0>(&self, psiitemarray: P0, foktobeslow: bool) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<IShellItemArray>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetState)(windows_core::Interface::as_raw(self), psiitemarray.param().abi(), foktobeslow.into(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExplorerCommandState_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL, *mut u32) -> windows_core::HRESULT,
}
pub trait IExplorerCommandState_Impl: windows_core::IUnknownImpl {
    fn GetState(&self, psiitemarray: windows_core::Ref<IShellItemArray>, foktobeslow: windows_core::BOOL) -> windows_core::Result<u32>;
}
impl IExplorerCommandState_Vtbl {
    pub const fn new<Identity: IExplorerCommandState_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetState<Identity: IExplorerCommandState_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitemarray: *mut core::ffi::c_void, foktobeslow: windows_core::BOOL, pcmdstate: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerCommandState_Impl::GetState(this, core::mem::transmute_copy(&psiitemarray), core::mem::transmute_copy(&foktobeslow)) {
                    Ok(ok__) => {
                        pcmdstate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetState: GetState::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerCommandState as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IExplorerCommandState {}
windows_core::imp::define_interface!(IExplorerPaneVisibility, IExplorerPaneVisibility_Vtbl, 0xe07010ec_bc17_44c0_97b0_46c7c95b9edc);
windows_core::imp::interface_hierarchy!(IExplorerPaneVisibility, windows_core::IUnknown);
impl IExplorerPaneVisibility {
    pub unsafe fn GetPaneState(&self, ep: *const windows_core::GUID) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPaneState)(windows_core::Interface::as_raw(self), ep, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExplorerPaneVisibility_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetPaneState: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut u32) -> windows_core::HRESULT,
}
pub trait IExplorerPaneVisibility_Impl: windows_core::IUnknownImpl {
    fn GetPaneState(&self, ep: *const windows_core::GUID) -> windows_core::Result<u32>;
}
impl IExplorerPaneVisibility_Vtbl {
    pub const fn new<Identity: IExplorerPaneVisibility_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetPaneState<Identity: IExplorerPaneVisibility_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ep: *const windows_core::GUID, peps: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExplorerPaneVisibility_Impl::GetPaneState(this, core::mem::transmute_copy(&ep)) {
                    Ok(ok__) => {
                        peps.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetPaneState: GetPaneState::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExplorerPaneVisibility as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IExplorerPaneVisibility {}
windows_core::imp::define_interface!(IExtensionServices, IExtensionServices_Vtbl, 0x79eac9cb_baf9_11ce_8c82_00aa004ba90b);
windows_core::imp::interface_hierarchy!(IExtensionServices, windows_core::IUnknown);
impl IExtensionServices {
    pub unsafe fn SetAdditionalHeaders<P0>(&self, pwzadditionalheaders: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAdditionalHeaders)(windows_core::Interface::as_raw(self), pwzadditionalheaders.param().abi()).ok() }
    }
    pub unsafe fn SetAuthenticateData<P1, P2>(&self, phwnd: super::super::Foundation::HWND, pwzusername: P1, pwzpassword: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAuthenticateData)(windows_core::Interface::as_raw(self), phwnd, pwzusername.param().abi(), pwzpassword.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExtensionServices_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetAdditionalHeaders: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetAuthenticateData: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IExtensionServices_Impl: windows_core::IUnknownImpl {
    fn SetAdditionalHeaders(&self, pwzadditionalheaders: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetAuthenticateData(&self, phwnd: super::super::Foundation::HWND, pwzusername: &windows_core::PCWSTR, pwzpassword: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IExtensionServices_Vtbl {
    pub const fn new<Identity: IExtensionServices_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetAdditionalHeaders<Identity: IExtensionServices_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzadditionalheaders: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExtensionServices_Impl::SetAdditionalHeaders(this, core::mem::transmute(&pwzadditionalheaders)).into()
            }
        }
        unsafe extern "system" fn SetAuthenticateData<Identity: IExtensionServices_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: super::super::Foundation::HWND, pwzusername: windows_core::PCWSTR, pwzpassword: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExtensionServices_Impl::SetAuthenticateData(this, core::mem::transmute_copy(&phwnd), core::mem::transmute(&pwzusername), core::mem::transmute(&pwzpassword)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAdditionalHeaders: SetAdditionalHeaders::<Identity, OFFSET>,
            SetAuthenticateData: SetAuthenticateData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExtensionServices as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IExtensionServices {}
windows_core::imp::define_interface!(IExtractIconA, IExtractIconA_Vtbl, 0x000214eb_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IExtractIconA, windows_core::IUnknown);
impl IExtractIconA {
    pub unsafe fn GetIconLocation(&self, uflags: u32, psziconfile: &mut [u8], piindex: *mut i32, pwflags: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetIconLocation)(windows_core::Interface::as_raw(self), uflags, core::mem::transmute(psziconfile.as_ptr()), psziconfile.len().try_into().unwrap(), piindex as _, pwflags as _).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn Extract<P0>(&self, pszfile: P0, niconindex: u32, phiconlarge: Option<*mut super::WindowsAndMessaging::HICON>, phiconsmall: Option<*mut super::WindowsAndMessaging::HICON>, niconsize: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Extract)(windows_core::Interface::as_raw(self), pszfile.param().abi(), niconindex, phiconlarge.unwrap_or(core::mem::zeroed()) as _, phiconsmall.unwrap_or(core::mem::zeroed()) as _, niconsize).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExtractIconA_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetIconLocation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PSTR, u32, *mut i32, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub Extract: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32, *mut super::WindowsAndMessaging::HICON, *mut super::WindowsAndMessaging::HICON, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    Extract: usize,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IExtractIconA_Impl: windows_core::IUnknownImpl {
    fn GetIconLocation(&self, uflags: u32, psziconfile: windows_core::PSTR, cchmax: u32, piindex: *mut i32, pwflags: *mut u32) -> windows_core::Result<()>;
    fn Extract(&self, pszfile: &windows_core::PCSTR, niconindex: u32, phiconlarge: *mut super::WindowsAndMessaging::HICON, phiconsmall: *mut super::WindowsAndMessaging::HICON, niconsize: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IExtractIconA_Vtbl {
    pub const fn new<Identity: IExtractIconA_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetIconLocation<Identity: IExtractIconA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uflags: u32, psziconfile: windows_core::PSTR, cchmax: u32, piindex: *mut i32, pwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExtractIconA_Impl::GetIconLocation(this, core::mem::transmute_copy(&uflags), core::mem::transmute_copy(&psziconfile), core::mem::transmute_copy(&cchmax), core::mem::transmute_copy(&piindex), core::mem::transmute_copy(&pwflags)).into()
            }
        }
        unsafe extern "system" fn Extract<Identity: IExtractIconA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCSTR, niconindex: u32, phiconlarge: *mut super::WindowsAndMessaging::HICON, phiconsmall: *mut super::WindowsAndMessaging::HICON, niconsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExtractIconA_Impl::Extract(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&niconindex), core::mem::transmute_copy(&phiconlarge), core::mem::transmute_copy(&phiconsmall), core::mem::transmute_copy(&niconsize)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            Extract: Extract::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExtractIconA as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IExtractIconA {}
windows_core::imp::define_interface!(IExtractIconW, IExtractIconW_Vtbl, 0x000214fa_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IExtractIconW, windows_core::IUnknown);
impl IExtractIconW {
    pub unsafe fn GetIconLocation(&self, uflags: u32, psziconfile: &mut [u16], piindex: *mut i32, pwflags: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetIconLocation)(windows_core::Interface::as_raw(self), uflags, core::mem::transmute(psziconfile.as_ptr()), psziconfile.len().try_into().unwrap(), piindex as _, pwflags as _).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn Extract<P0>(&self, pszfile: P0, niconindex: u32, phiconlarge: Option<*mut super::WindowsAndMessaging::HICON>, phiconsmall: Option<*mut super::WindowsAndMessaging::HICON>, niconsize: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Extract)(windows_core::Interface::as_raw(self), pszfile.param().abi(), niconindex, phiconlarge.unwrap_or(core::mem::zeroed()) as _, phiconsmall.unwrap_or(core::mem::zeroed()) as _, niconsize).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExtractIconW_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetIconLocation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PWSTR, u32, *mut i32, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub Extract: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut super::WindowsAndMessaging::HICON, *mut super::WindowsAndMessaging::HICON, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    Extract: usize,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IExtractIconW_Impl: windows_core::IUnknownImpl {
    fn GetIconLocation(&self, uflags: u32, psziconfile: windows_core::PWSTR, cchmax: u32, piindex: *mut i32, pwflags: *mut u32) -> windows_core::Result<()>;
    fn Extract(&self, pszfile: &windows_core::PCWSTR, niconindex: u32, phiconlarge: *mut super::WindowsAndMessaging::HICON, phiconsmall: *mut super::WindowsAndMessaging::HICON, niconsize: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IExtractIconW_Vtbl {
    pub const fn new<Identity: IExtractIconW_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetIconLocation<Identity: IExtractIconW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uflags: u32, psziconfile: windows_core::PWSTR, cchmax: u32, piindex: *mut i32, pwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExtractIconW_Impl::GetIconLocation(this, core::mem::transmute_copy(&uflags), core::mem::transmute_copy(&psziconfile), core::mem::transmute_copy(&cchmax), core::mem::transmute_copy(&piindex), core::mem::transmute_copy(&pwflags)).into()
            }
        }
        unsafe extern "system" fn Extract<Identity: IExtractIconW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR, niconindex: u32, phiconlarge: *mut super::WindowsAndMessaging::HICON, phiconsmall: *mut super::WindowsAndMessaging::HICON, niconsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExtractIconW_Impl::Extract(this, core::mem::transmute(&pszfile), core::mem::transmute_copy(&niconindex), core::mem::transmute_copy(&phiconlarge), core::mem::transmute_copy(&phiconsmall), core::mem::transmute_copy(&niconsize)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            Extract: Extract::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExtractIconW as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IExtractIconW {}
windows_core::imp::define_interface!(IExtractImage, IExtractImage_Vtbl, 0xbb2e617c_0920_11d1_9a0b_00c04fc2d6c1);
windows_core::imp::interface_hierarchy!(IExtractImage, windows_core::IUnknown);
impl IExtractImage {
    pub unsafe fn GetLocation(&self, pszpathbuffer: &mut [u16], pdwpriority: *mut u32, prgsize: *const super::super::Foundation::SIZE, dwrecclrdepth: u32, pdwflags: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetLocation)(windows_core::Interface::as_raw(self), core::mem::transmute(pszpathbuffer.as_ptr()), pszpathbuffer.len().try_into().unwrap(), pdwpriority as _, prgsize, dwrecclrdepth, pdwflags as _).ok() }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn Extract(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Extract)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExtractImage_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetLocation: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut u32, *const super::super::Foundation::SIZE, u32, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub Extract: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    Extract: usize,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IExtractImage_Impl: windows_core::IUnknownImpl {
    fn GetLocation(&self, pszpathbuffer: windows_core::PWSTR, cch: u32, pdwpriority: *mut u32, prgsize: *const super::super::Foundation::SIZE, dwrecclrdepth: u32, pdwflags: *mut u32) -> windows_core::Result<()>;
    fn Extract(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IExtractImage_Vtbl {
    pub const fn new<Identity: IExtractImage_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetLocation<Identity: IExtractImage_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpathbuffer: windows_core::PWSTR, cch: u32, pdwpriority: *mut u32, prgsize: *const super::super::Foundation::SIZE, dwrecclrdepth: u32, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IExtractImage_Impl::GetLocation(this, core::mem::transmute_copy(&pszpathbuffer), core::mem::transmute_copy(&cch), core::mem::transmute_copy(&pdwpriority), core::mem::transmute_copy(&prgsize), core::mem::transmute_copy(&dwrecclrdepth), core::mem::transmute_copy(&pdwflags)).into()
            }
        }
        unsafe extern "system" fn Extract<Identity: IExtractImage_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phbmpthumbnail: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExtractImage_Impl::Extract(this) {
                    Ok(ok__) => {
                        phbmpthumbnail.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetLocation: GetLocation::<Identity, OFFSET>,
            Extract: Extract::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExtractImage as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IExtractImage {}
windows_core::imp::define_interface!(IExtractImage2, IExtractImage2_Vtbl, 0x953bb1ee_93b4_11d1_98a3_00c04fb687da);
impl core::ops::Deref for IExtractImage2 {
    type Target = IExtractImage;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IExtractImage2, windows_core::IUnknown, IExtractImage);
impl IExtractImage2 {
    pub unsafe fn GetDateStamp(&self) -> windows_core::Result<super::super::Foundation::FILETIME> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDateStamp)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IExtractImage2_Vtbl {
    pub base__: IExtractImage_Vtbl,
    pub GetDateStamp: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IExtractImage2_Impl: IExtractImage_Impl {
    fn GetDateStamp(&self) -> windows_core::Result<super::super::Foundation::FILETIME>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IExtractImage2_Vtbl {
    pub const fn new<Identity: IExtractImage2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDateStamp<Identity: IExtractImage2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdatestamp: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IExtractImage2_Impl::GetDateStamp(this) {
                    Ok(ok__) => {
                        pdatestamp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IExtractImage_Vtbl::new::<Identity, OFFSET>(), GetDateStamp: GetDateStamp::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IExtractImage2 as windows_core::Interface>::IID || iid == &<IExtractImage as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IExtractImage2 {}
windows_core::imp::define_interface!(IFileDialog, IFileDialog_Vtbl, 0x42f85136_db7e_439c_85f1_e4075d135fc8);
impl core::ops::Deref for IFileDialog {
    type Target = IModalWindow;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IFileDialog, windows_core::IUnknown, IModalWindow);
impl IFileDialog {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetFileTypes(&self, rgfilterspec: &[Common::COMDLG_FILTERSPEC]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFileTypes)(windows_core::Interface::as_raw(self), rgfilterspec.len().try_into().unwrap(), core::mem::transmute(rgfilterspec.as_ptr())).ok() }
    }
    pub unsafe fn SetFileTypeIndex(&self, ifiletype: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFileTypeIndex)(windows_core::Interface::as_raw(self), ifiletype).ok() }
    }
    pub unsafe fn GetFileTypeIndex(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFileTypeIndex)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Advise<P0>(&self, pfde: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<IFileDialogEvents>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Advise)(windows_core::Interface::as_raw(self), pfde.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Unadvise)(windows_core::Interface::as_raw(self), dwcookie).ok() }
    }
    pub unsafe fn SetOptions(&self, fos: FILEOPENDIALOGOPTIONS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOptions)(windows_core::Interface::as_raw(self), fos).ok() }
    }
    pub unsafe fn GetOptions(&self) -> windows_core::Result<FILEOPENDIALOGOPTIONS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetDefaultFolder<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDefaultFolder)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn SetFolder<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFolder)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn GetFolder(&self) -> windows_core::Result<IShellItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFolder)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetCurrentSelection(&self) -> windows_core::Result<IShellItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentSelection)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetFileName<P0>(&self, pszname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFileName)(windows_core::Interface::as_raw(self), pszname.param().abi()).ok() }
    }
    pub unsafe fn GetFileName(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFileName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetTitle<P0>(&self, psztitle: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTitle)(windows_core::Interface::as_raw(self), psztitle.param().abi()).ok() }
    }
    pub unsafe fn SetOkButtonLabel<P0>(&self, psztext: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOkButtonLabel)(windows_core::Interface::as_raw(self), psztext.param().abi()).ok() }
    }
    pub unsafe fn SetFileNameLabel<P0>(&self, pszlabel: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFileNameLabel)(windows_core::Interface::as_raw(self), pszlabel.param().abi()).ok() }
    }
    pub unsafe fn GetResult(&self) -> windows_core::Result<IShellItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetResult)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn AddPlace<P0>(&self, psi: P0, fdap: FDAP) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddPlace)(windows_core::Interface::as_raw(self), psi.param().abi(), fdap).ok() }
    }
    pub unsafe fn SetDefaultExtension<P0>(&self, pszdefaultextension: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDefaultExtension)(windows_core::Interface::as_raw(self), pszdefaultextension.param().abi()).ok() }
    }
    pub unsafe fn Close(&self, hr: windows_core::HRESULT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Close)(windows_core::Interface::as_raw(self), hr).ok() }
    }
    pub unsafe fn SetClientGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetClientGuid)(windows_core::Interface::as_raw(self), guid).ok() }
    }
    pub unsafe fn ClearClientData(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ClearClientData)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetFilter<P0>(&self, pfilter: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItemFilter>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFilter)(windows_core::Interface::as_raw(self), pfilter.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileDialog_Vtbl {
    pub base__: IModalWindow_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetFileTypes: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const Common::COMDLG_FILTERSPEC) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetFileTypes: usize,
    pub SetFileTypeIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetFileTypeIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Advise: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetOptions: unsafe extern "system" fn(*mut core::ffi::c_void, FILEOPENDIALOGOPTIONS) -> windows_core::HRESULT,
    pub GetOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut FILEOPENDIALOGOPTIONS) -> windows_core::HRESULT,
    pub SetDefaultFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCurrentSelection: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetFileName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetFileName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub SetTitle: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetOkButtonLabel: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetFileNameLabel: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetResult: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddPlace: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, FDAP) -> windows_core::HRESULT,
    pub SetDefaultExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub Close: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::HRESULT) -> windows_core::HRESULT,
    pub SetClientGuid: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub ClearClientData: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IFileDialog_Impl: IModalWindow_Impl {
    fn SetFileTypes(&self, cfiletypes: u32, rgfilterspec: *const Common::COMDLG_FILTERSPEC) -> windows_core::Result<()>;
    fn SetFileTypeIndex(&self, ifiletype: u32) -> windows_core::Result<()>;
    fn GetFileTypeIndex(&self) -> windows_core::Result<u32>;
    fn Advise(&self, pfde: windows_core::Ref<IFileDialogEvents>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn SetOptions(&self, fos: FILEOPENDIALOGOPTIONS) -> windows_core::Result<()>;
    fn GetOptions(&self) -> windows_core::Result<FILEOPENDIALOGOPTIONS>;
    fn SetDefaultFolder(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn SetFolder(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn GetFolder(&self) -> windows_core::Result<IShellItem>;
    fn GetCurrentSelection(&self) -> windows_core::Result<IShellItem>;
    fn SetFileName(&self, pszname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetFileName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn SetTitle(&self, psztitle: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetOkButtonLabel(&self, psztext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFileNameLabel(&self, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetResult(&self) -> windows_core::Result<IShellItem>;
    fn AddPlace(&self, psi: windows_core::Ref<IShellItem>, fdap: FDAP) -> windows_core::Result<()>;
    fn SetDefaultExtension(&self, pszdefaultextension: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Close(&self, hr: windows_core::HRESULT) -> windows_core::Result<()>;
    fn SetClientGuid(&self, guid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn ClearClientData(&self) -> windows_core::Result<()>;
    fn SetFilter(&self, pfilter: windows_core::Ref<IShellItemFilter>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IFileDialog_Vtbl {
    pub const fn new<Identity: IFileDialog_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetFileTypes<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cfiletypes: u32, rgfilterspec: *const Common::COMDLG_FILTERSPEC) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetFileTypes(this, core::mem::transmute_copy(&cfiletypes), core::mem::transmute_copy(&rgfilterspec)).into()
            }
        }
        unsafe extern "system" fn SetFileTypeIndex<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ifiletype: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetFileTypeIndex(this, core::mem::transmute_copy(&ifiletype)).into()
            }
        }
        unsafe extern "system" fn GetFileTypeIndex<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pifiletype: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialog_Impl::GetFileTypeIndex(this) {
                    Ok(ok__) => {
                        pifiletype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Advise<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfde: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialog_Impl::Advise(this, core::mem::transmute_copy(&pfde)) {
                    Ok(ok__) => {
                        pdwcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Unadvise<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
            }
        }
        unsafe extern "system" fn SetOptions<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fos: FILEOPENDIALOGOPTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetOptions(this, core::mem::transmute_copy(&fos)).into()
            }
        }
        unsafe extern "system" fn GetOptions<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfos: *mut FILEOPENDIALOGOPTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialog_Impl::GetOptions(this) {
                    Ok(ok__) => {
                        pfos.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetDefaultFolder<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetDefaultFolder(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn SetFolder<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetFolder(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn GetFolder<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialog_Impl::GetFolder(this) {
                    Ok(ok__) => {
                        ppsi.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCurrentSelection<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialog_Impl::GetCurrentSelection(this) {
                    Ok(ok__) => {
                        ppsi.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetFileName<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetFileName(this, core::mem::transmute(&pszname)).into()
            }
        }
        unsafe extern "system" fn GetFileName<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialog_Impl::GetFileName(this) {
                    Ok(ok__) => {
                        pszname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetTitle<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztitle: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetTitle(this, core::mem::transmute(&psztitle)).into()
            }
        }
        unsafe extern "system" fn SetOkButtonLabel<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetOkButtonLabel(this, core::mem::transmute(&psztext)).into()
            }
        }
        unsafe extern "system" fn SetFileNameLabel<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetFileNameLabel(this, core::mem::transmute(&pszlabel)).into()
            }
        }
        unsafe extern "system" fn GetResult<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialog_Impl::GetResult(this) {
                    Ok(ok__) => {
                        ppsi.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddPlace<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, fdap: FDAP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::AddPlace(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&fdap)).into()
            }
        }
        unsafe extern "system" fn SetDefaultExtension<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdefaultextension: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetDefaultExtension(this, core::mem::transmute(&pszdefaultextension)).into()
            }
        }
        unsafe extern "system" fn Close<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::Close(this, core::mem::transmute_copy(&hr)).into()
            }
        }
        unsafe extern "system" fn SetClientGuid<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetClientGuid(this, core::mem::transmute_copy(&guid)).into()
            }
        }
        unsafe extern "system" fn ClearClientData<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::ClearClientData(this).into()
            }
        }
        unsafe extern "system" fn SetFilter<Identity: IFileDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfilter: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog_Impl::SetFilter(this, core::mem::transmute_copy(&pfilter)).into()
            }
        }
        Self {
            base__: IModalWindow_Vtbl::new::<Identity, OFFSET>(),
            SetFileTypes: SetFileTypes::<Identity, OFFSET>,
            SetFileTypeIndex: SetFileTypeIndex::<Identity, OFFSET>,
            GetFileTypeIndex: GetFileTypeIndex::<Identity, OFFSET>,
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            SetOptions: SetOptions::<Identity, OFFSET>,
            GetOptions: GetOptions::<Identity, OFFSET>,
            SetDefaultFolder: SetDefaultFolder::<Identity, OFFSET>,
            SetFolder: SetFolder::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            GetCurrentSelection: GetCurrentSelection::<Identity, OFFSET>,
            SetFileName: SetFileName::<Identity, OFFSET>,
            GetFileName: GetFileName::<Identity, OFFSET>,
            SetTitle: SetTitle::<Identity, OFFSET>,
            SetOkButtonLabel: SetOkButtonLabel::<Identity, OFFSET>,
            SetFileNameLabel: SetFileNameLabel::<Identity, OFFSET>,
            GetResult: GetResult::<Identity, OFFSET>,
            AddPlace: AddPlace::<Identity, OFFSET>,
            SetDefaultExtension: SetDefaultExtension::<Identity, OFFSET>,
            Close: Close::<Identity, OFFSET>,
            SetClientGuid: SetClientGuid::<Identity, OFFSET>,
            ClearClientData: ClearClientData::<Identity, OFFSET>,
            SetFilter: SetFilter::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileDialog as windows_core::Interface>::IID || iid == &<IModalWindow as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IFileDialog {}
windows_core::imp::define_interface!(IFileDialog2, IFileDialog2_Vtbl, 0x61744fc7_85b5_4791_a9b0_272276309b13);
impl core::ops::Deref for IFileDialog2 {
    type Target = IFileDialog;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IFileDialog2, windows_core::IUnknown, IModalWindow, IFileDialog);
impl IFileDialog2 {
    pub unsafe fn SetCancelButtonLabel<P0>(&self, pszlabel: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetCancelButtonLabel)(windows_core::Interface::as_raw(self), pszlabel.param().abi()).ok() }
    }
    pub unsafe fn SetNavigationRoot<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetNavigationRoot)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileDialog2_Vtbl {
    pub base__: IFileDialog_Vtbl,
    pub SetCancelButtonLabel: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetNavigationRoot: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IFileDialog2_Impl: IFileDialog_Impl {
    fn SetCancelButtonLabel(&self, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetNavigationRoot(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IFileDialog2_Vtbl {
    pub const fn new<Identity: IFileDialog2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetCancelButtonLabel<Identity: IFileDialog2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog2_Impl::SetCancelButtonLabel(this, core::mem::transmute(&pszlabel)).into()
            }
        }
        unsafe extern "system" fn SetNavigationRoot<Identity: IFileDialog2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialog2_Impl::SetNavigationRoot(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        Self {
            base__: IFileDialog_Vtbl::new::<Identity, OFFSET>(),
            SetCancelButtonLabel: SetCancelButtonLabel::<Identity, OFFSET>,
            SetNavigationRoot: SetNavigationRoot::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileDialog2 as windows_core::Interface>::IID || iid == &<IModalWindow as windows_core::Interface>::IID || iid == &<IFileDialog as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IFileDialog2 {}
windows_core::imp::define_interface!(IFileDialogControlEvents, IFileDialogControlEvents_Vtbl, 0x36116642_d713_4b97_9b83_7484a9d00433);
windows_core::imp::interface_hierarchy!(IFileDialogControlEvents, windows_core::IUnknown);
impl IFileDialogControlEvents {
    pub unsafe fn OnItemSelected<P0>(&self, pfdc: P0, dwidctl: u32, dwiditem: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IFileDialogCustomize>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnItemSelected)(windows_core::Interface::as_raw(self), pfdc.param().abi(), dwidctl, dwiditem).ok() }
    }
    pub unsafe fn OnButtonClicked<P0>(&self, pfdc: P0, dwidctl: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IFileDialogCustomize>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnButtonClicked)(windows_core::Interface::as_raw(self), pfdc.param().abi(), dwidctl).ok() }
    }
    pub unsafe fn OnCheckButtonToggled<P0>(&self, pfdc: P0, dwidctl: u32, bchecked: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IFileDialogCustomize>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnCheckButtonToggled)(windows_core::Interface::as_raw(self), pfdc.param().abi(), dwidctl, bchecked.into()).ok() }
    }
    pub unsafe fn OnControlActivating<P0>(&self, pfdc: P0, dwidctl: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IFileDialogCustomize>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnControlActivating)(windows_core::Interface::as_raw(self), pfdc.param().abi(), dwidctl).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileDialogControlEvents_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnItemSelected: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OnButtonClicked: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub OnCheckButtonToggled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, windows_core::BOOL) -> windows_core::HRESULT,
    pub OnControlActivating: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
pub trait IFileDialogControlEvents_Impl: windows_core::IUnknownImpl {
    fn OnItemSelected(&self, pfdc: windows_core::Ref<IFileDialogCustomize>, dwidctl: u32, dwiditem: u32) -> windows_core::Result<()>;
    fn OnButtonClicked(&self, pfdc: windows_core::Ref<IFileDialogCustomize>, dwidctl: u32) -> windows_core::Result<()>;
    fn OnCheckButtonToggled(&self, pfdc: windows_core::Ref<IFileDialogCustomize>, dwidctl: u32, bchecked: windows_core::BOOL) -> windows_core::Result<()>;
    fn OnControlActivating(&self, pfdc: windows_core::Ref<IFileDialogCustomize>, dwidctl: u32) -> windows_core::Result<()>;
}
impl IFileDialogControlEvents_Vtbl {
    pub const fn new<Identity: IFileDialogControlEvents_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnItemSelected<Identity: IFileDialogControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfdc: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogControlEvents_Impl::OnItemSelected(this, core::mem::transmute_copy(&pfdc), core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem)).into()
            }
        }
        unsafe extern "system" fn OnButtonClicked<Identity: IFileDialogControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfdc: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogControlEvents_Impl::OnButtonClicked(this, core::mem::transmute_copy(&pfdc), core::mem::transmute_copy(&dwidctl)).into()
            }
        }
        unsafe extern "system" fn OnCheckButtonToggled<Identity: IFileDialogControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfdc: *mut core::ffi::c_void, dwidctl: u32, bchecked: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogControlEvents_Impl::OnCheckButtonToggled(this, core::mem::transmute_copy(&pfdc), core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&bchecked)).into()
            }
        }
        unsafe extern "system" fn OnControlActivating<Identity: IFileDialogControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfdc: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogControlEvents_Impl::OnControlActivating(this, core::mem::transmute_copy(&pfdc), core::mem::transmute_copy(&dwidctl)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnItemSelected: OnItemSelected::<Identity, OFFSET>,
            OnButtonClicked: OnButtonClicked::<Identity, OFFSET>,
            OnCheckButtonToggled: OnCheckButtonToggled::<Identity, OFFSET>,
            OnControlActivating: OnControlActivating::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileDialogControlEvents as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFileDialogControlEvents {}
windows_core::imp::define_interface!(IFileDialogCustomize, IFileDialogCustomize_Vtbl, 0xe6fdd21a_163f_4975_9c8c_a69f1ba37034);
windows_core::imp::interface_hierarchy!(IFileDialogCustomize, windows_core::IUnknown);
impl IFileDialogCustomize {
    pub unsafe fn EnableOpenDropDown(&self, dwidctl: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EnableOpenDropDown)(windows_core::Interface::as_raw(self), dwidctl).ok() }
    }
    pub unsafe fn AddMenu<P1>(&self, dwidctl: u32, pszlabel: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddMenu)(windows_core::Interface::as_raw(self), dwidctl, pszlabel.param().abi()).ok() }
    }
    pub unsafe fn AddPushButton<P1>(&self, dwidctl: u32, pszlabel: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddPushButton)(windows_core::Interface::as_raw(self), dwidctl, pszlabel.param().abi()).ok() }
    }
    pub unsafe fn AddComboBox(&self, dwidctl: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddComboBox)(windows_core::Interface::as_raw(self), dwidctl).ok() }
    }
    pub unsafe fn AddRadioButtonList(&self, dwidctl: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddRadioButtonList)(windows_core::Interface::as_raw(self), dwidctl).ok() }
    }
    pub unsafe fn AddCheckButton<P1>(&self, dwidctl: u32, pszlabel: P1, bchecked: bool) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddCheckButton)(windows_core::Interface::as_raw(self), dwidctl, pszlabel.param().abi(), bchecked.into()).ok() }
    }
    pub unsafe fn AddEditBox<P1>(&self, dwidctl: u32, psztext: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddEditBox)(windows_core::Interface::as_raw(self), dwidctl, psztext.param().abi()).ok() }
    }
    pub unsafe fn AddSeparator(&self, dwidctl: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddSeparator)(windows_core::Interface::as_raw(self), dwidctl).ok() }
    }
    pub unsafe fn AddText<P1>(&self, dwidctl: u32, psztext: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddText)(windows_core::Interface::as_raw(self), dwidctl, psztext.param().abi()).ok() }
    }
    pub unsafe fn SetControlLabel<P1>(&self, dwidctl: u32, pszlabel: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetControlLabel)(windows_core::Interface::as_raw(self), dwidctl, pszlabel.param().abi()).ok() }
    }
    pub unsafe fn GetControlState(&self, dwidctl: u32) -> windows_core::Result<CDCONTROLSTATEF> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetControlState)(windows_core::Interface::as_raw(self), dwidctl, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetControlState(&self, dwidctl: u32, dwstate: CDCONTROLSTATEF) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetControlState)(windows_core::Interface::as_raw(self), dwidctl, dwstate).ok() }
    }
    pub unsafe fn GetEditBoxText(&self, dwidctl: u32) -> windows_core::Result<*mut u16> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEditBoxText)(windows_core::Interface::as_raw(self), dwidctl, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetEditBoxText<P1>(&self, dwidctl: u32, psztext: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEditBoxText)(windows_core::Interface::as_raw(self), dwidctl, psztext.param().abi()).ok() }
    }
    pub unsafe fn GetCheckButtonState(&self, dwidctl: u32) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCheckButtonState)(windows_core::Interface::as_raw(self), dwidctl, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCheckButtonState(&self, dwidctl: u32, bchecked: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCheckButtonState)(windows_core::Interface::as_raw(self), dwidctl, bchecked.into()).ok() }
    }
    pub unsafe fn AddControlItem<P2>(&self, dwidctl: u32, dwiditem: u32, pszlabel: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddControlItem)(windows_core::Interface::as_raw(self), dwidctl, dwiditem, pszlabel.param().abi()).ok() }
    }
    pub unsafe fn RemoveControlItem(&self, dwidctl: u32, dwiditem: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveControlItem)(windows_core::Interface::as_raw(self), dwidctl, dwiditem).ok() }
    }
    pub unsafe fn RemoveAllControlItems(&self, dwidctl: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveAllControlItems)(windows_core::Interface::as_raw(self), dwidctl).ok() }
    }
    pub unsafe fn GetControlItemState(&self, dwidctl: u32, dwiditem: u32) -> windows_core::Result<CDCONTROLSTATEF> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetControlItemState)(windows_core::Interface::as_raw(self), dwidctl, dwiditem, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetControlItemState(&self, dwidctl: u32, dwiditem: u32, dwstate: CDCONTROLSTATEF) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetControlItemState)(windows_core::Interface::as_raw(self), dwidctl, dwiditem, dwstate).ok() }
    }
    pub unsafe fn GetSelectedControlItem(&self, dwidctl: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSelectedControlItem)(windows_core::Interface::as_raw(self), dwidctl, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetSelectedControlItem(&self, dwidctl: u32, dwiditem: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSelectedControlItem)(windows_core::Interface::as_raw(self), dwidctl, dwiditem).ok() }
    }
    pub unsafe fn StartVisualGroup<P1>(&self, dwidctl: u32, pszlabel: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartVisualGroup)(windows_core::Interface::as_raw(self), dwidctl, pszlabel.param().abi()).ok() }
    }
    pub unsafe fn EndVisualGroup(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EndVisualGroup)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn MakeProminent(&self, dwidctl: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MakeProminent)(windows_core::Interface::as_raw(self), dwidctl).ok() }
    }
    pub unsafe fn SetControlItemText<P2>(&self, dwidctl: u32, dwiditem: u32, pszlabel: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetControlItemText)(windows_core::Interface::as_raw(self), dwidctl, dwiditem, pszlabel.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileDialogCustomize_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub EnableOpenDropDown: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub AddMenu: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AddPushButton: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AddComboBox: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub AddRadioButtonList: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub AddCheckButton: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::BOOL) -> windows_core::HRESULT,
    pub AddEditBox: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AddSeparator: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub AddText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetControlLabel: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetControlState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut CDCONTROLSTATEF) -> windows_core::HRESULT,
    pub SetControlState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, CDCONTROLSTATEF) -> windows_core::HRESULT,
    pub GetEditBoxText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut u16) -> windows_core::HRESULT,
    pub SetEditBoxText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetCheckButtonState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub SetCheckButtonState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::BOOL) -> windows_core::HRESULT,
    pub AddControlItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub RemoveControlItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub RemoveAllControlItems: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetControlItemState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut CDCONTROLSTATEF) -> windows_core::HRESULT,
    pub SetControlItemState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, CDCONTROLSTATEF) -> windows_core::HRESULT,
    pub GetSelectedControlItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub SetSelectedControlItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub StartVisualGroup: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub EndVisualGroup: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub MakeProminent: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetControlItemText: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IFileDialogCustomize_Impl: windows_core::IUnknownImpl {
    fn EnableOpenDropDown(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn AddMenu(&self, dwidctl: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddPushButton(&self, dwidctl: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddComboBox(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn AddRadioButtonList(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn AddCheckButton(&self, dwidctl: u32, pszlabel: &windows_core::PCWSTR, bchecked: windows_core::BOOL) -> windows_core::Result<()>;
    fn AddEditBox(&self, dwidctl: u32, psztext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddSeparator(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn AddText(&self, dwidctl: u32, psztext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetControlLabel(&self, dwidctl: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetControlState(&self, dwidctl: u32) -> windows_core::Result<CDCONTROLSTATEF>;
    fn SetControlState(&self, dwidctl: u32, dwstate: CDCONTROLSTATEF) -> windows_core::Result<()>;
    fn GetEditBoxText(&self, dwidctl: u32) -> windows_core::Result<*mut u16>;
    fn SetEditBoxText(&self, dwidctl: u32, psztext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetCheckButtonState(&self, dwidctl: u32) -> windows_core::Result<windows_core::BOOL>;
    fn SetCheckButtonState(&self, dwidctl: u32, bchecked: windows_core::BOOL) -> windows_core::Result<()>;
    fn AddControlItem(&self, dwidctl: u32, dwiditem: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn RemoveControlItem(&self, dwidctl: u32, dwiditem: u32) -> windows_core::Result<()>;
    fn RemoveAllControlItems(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn GetControlItemState(&self, dwidctl: u32, dwiditem: u32) -> windows_core::Result<CDCONTROLSTATEF>;
    fn SetControlItemState(&self, dwidctl: u32, dwiditem: u32, dwstate: CDCONTROLSTATEF) -> windows_core::Result<()>;
    fn GetSelectedControlItem(&self, dwidctl: u32) -> windows_core::Result<u32>;
    fn SetSelectedControlItem(&self, dwidctl: u32, dwiditem: u32) -> windows_core::Result<()>;
    fn StartVisualGroup(&self, dwidctl: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EndVisualGroup(&self) -> windows_core::Result<()>;
    fn MakeProminent(&self, dwidctl: u32) -> windows_core::Result<()>;
    fn SetControlItemText(&self, dwidctl: u32, dwiditem: u32, pszlabel: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IFileDialogCustomize_Vtbl {
    pub const fn new<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn EnableOpenDropDown<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::EnableOpenDropDown(this, core::mem::transmute_copy(&dwidctl)).into()
            }
        }
        unsafe extern "system" fn AddMenu<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::AddMenu(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&pszlabel)).into()
            }
        }
        unsafe extern "system" fn AddPushButton<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::AddPushButton(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&pszlabel)).into()
            }
        }
        unsafe extern "system" fn AddComboBox<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::AddComboBox(this, core::mem::transmute_copy(&dwidctl)).into()
            }
        }
        unsafe extern "system" fn AddRadioButtonList<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::AddRadioButtonList(this, core::mem::transmute_copy(&dwidctl)).into()
            }
        }
        unsafe extern "system" fn AddCheckButton<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pszlabel: windows_core::PCWSTR, bchecked: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::AddCheckButton(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&pszlabel), core::mem::transmute_copy(&bchecked)).into()
            }
        }
        unsafe extern "system" fn AddEditBox<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, psztext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::AddEditBox(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&psztext)).into()
            }
        }
        unsafe extern "system" fn AddSeparator<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::AddSeparator(this, core::mem::transmute_copy(&dwidctl)).into()
            }
        }
        unsafe extern "system" fn AddText<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, psztext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::AddText(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&psztext)).into()
            }
        }
        unsafe extern "system" fn SetControlLabel<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::SetControlLabel(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&pszlabel)).into()
            }
        }
        unsafe extern "system" fn GetControlState<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pdwstate: *mut CDCONTROLSTATEF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialogCustomize_Impl::GetControlState(this, core::mem::transmute_copy(&dwidctl)) {
                    Ok(ok__) => {
                        pdwstate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetControlState<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwstate: CDCONTROLSTATEF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::SetControlState(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwstate)).into()
            }
        }
        unsafe extern "system" fn GetEditBoxText<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, ppsztext: *mut *mut u16) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialogCustomize_Impl::GetEditBoxText(this, core::mem::transmute_copy(&dwidctl)) {
                    Ok(ok__) => {
                        ppsztext.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEditBoxText<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, psztext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::SetEditBoxText(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&psztext)).into()
            }
        }
        unsafe extern "system" fn GetCheckButtonState<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pbchecked: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialogCustomize_Impl::GetCheckButtonState(this, core::mem::transmute_copy(&dwidctl)) {
                    Ok(ok__) => {
                        pbchecked.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCheckButtonState<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, bchecked: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::SetCheckButtonState(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&bchecked)).into()
            }
        }
        unsafe extern "system" fn AddControlItem<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::AddControlItem(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem), core::mem::transmute(&pszlabel)).into()
            }
        }
        unsafe extern "system" fn RemoveControlItem<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::RemoveControlItem(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem)).into()
            }
        }
        unsafe extern "system" fn RemoveAllControlItems<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::RemoveAllControlItems(this, core::mem::transmute_copy(&dwidctl)).into()
            }
        }
        unsafe extern "system" fn GetControlItemState<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32, pdwstate: *mut CDCONTROLSTATEF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialogCustomize_Impl::GetControlItemState(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem)) {
                    Ok(ok__) => {
                        pdwstate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetControlItemState<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32, dwstate: CDCONTROLSTATEF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::SetControlItemState(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem), core::mem::transmute_copy(&dwstate)).into()
            }
        }
        unsafe extern "system" fn GetSelectedControlItem<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pdwiditem: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialogCustomize_Impl::GetSelectedControlItem(this, core::mem::transmute_copy(&dwidctl)) {
                    Ok(ok__) => {
                        pdwiditem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetSelectedControlItem<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::SetSelectedControlItem(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem)).into()
            }
        }
        unsafe extern "system" fn StartVisualGroup<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::StartVisualGroup(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute(&pszlabel)).into()
            }
        }
        unsafe extern "system" fn EndVisualGroup<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::EndVisualGroup(this).into()
            }
        }
        unsafe extern "system" fn MakeProminent<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::MakeProminent(this, core::mem::transmute_copy(&dwidctl)).into()
            }
        }
        unsafe extern "system" fn SetControlItemText<Identity: IFileDialogCustomize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwidctl: u32, dwiditem: u32, pszlabel: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogCustomize_Impl::SetControlItemText(this, core::mem::transmute_copy(&dwidctl), core::mem::transmute_copy(&dwiditem), core::mem::transmute(&pszlabel)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EnableOpenDropDown: EnableOpenDropDown::<Identity, OFFSET>,
            AddMenu: AddMenu::<Identity, OFFSET>,
            AddPushButton: AddPushButton::<Identity, OFFSET>,
            AddComboBox: AddComboBox::<Identity, OFFSET>,
            AddRadioButtonList: AddRadioButtonList::<Identity, OFFSET>,
            AddCheckButton: AddCheckButton::<Identity, OFFSET>,
            AddEditBox: AddEditBox::<Identity, OFFSET>,
            AddSeparator: AddSeparator::<Identity, OFFSET>,
            AddText: AddText::<Identity, OFFSET>,
            SetControlLabel: SetControlLabel::<Identity, OFFSET>,
            GetControlState: GetControlState::<Identity, OFFSET>,
            SetControlState: SetControlState::<Identity, OFFSET>,
            GetEditBoxText: GetEditBoxText::<Identity, OFFSET>,
            SetEditBoxText: SetEditBoxText::<Identity, OFFSET>,
            GetCheckButtonState: GetCheckButtonState::<Identity, OFFSET>,
            SetCheckButtonState: SetCheckButtonState::<Identity, OFFSET>,
            AddControlItem: AddControlItem::<Identity, OFFSET>,
            RemoveControlItem: RemoveControlItem::<Identity, OFFSET>,
            RemoveAllControlItems: RemoveAllControlItems::<Identity, OFFSET>,
            GetControlItemState: GetControlItemState::<Identity, OFFSET>,
            SetControlItemState: SetControlItemState::<Identity, OFFSET>,
            GetSelectedControlItem: GetSelectedControlItem::<Identity, OFFSET>,
            SetSelectedControlItem: SetSelectedControlItem::<Identity, OFFSET>,
            StartVisualGroup: StartVisualGroup::<Identity, OFFSET>,
            EndVisualGroup: EndVisualGroup::<Identity, OFFSET>,
            MakeProminent: MakeProminent::<Identity, OFFSET>,
            SetControlItemText: SetControlItemText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileDialogCustomize as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFileDialogCustomize {}
windows_core::imp::define_interface!(IFileDialogEvents, IFileDialogEvents_Vtbl, 0x973510db_7d7f_452b_8975_74a85828d354);
windows_core::imp::interface_hierarchy!(IFileDialogEvents, windows_core::IUnknown);
impl IFileDialogEvents {
    pub unsafe fn OnFileOk<P0>(&self, pfd: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IFileDialog>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnFileOk)(windows_core::Interface::as_raw(self), pfd.param().abi()).ok() }
    }
    pub unsafe fn OnFolderChanging<P0, P1>(&self, pfd: P0, psifolder: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IFileDialog>,
        P1: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnFolderChanging)(windows_core::Interface::as_raw(self), pfd.param().abi(), psifolder.param().abi()).ok() }
    }
    pub unsafe fn OnFolderChange<P0>(&self, pfd: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IFileDialog>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnFolderChange)(windows_core::Interface::as_raw(self), pfd.param().abi()).ok() }
    }
    pub unsafe fn OnSelectionChange<P0>(&self, pfd: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IFileDialog>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnSelectionChange)(windows_core::Interface::as_raw(self), pfd.param().abi()).ok() }
    }
    pub unsafe fn OnShareViolation<P0, P1>(&self, pfd: P0, psi: P1) -> windows_core::Result<FDE_SHAREVIOLATION_RESPONSE>
    where
        P0: windows_core::Param<IFileDialog>,
        P1: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OnShareViolation)(windows_core::Interface::as_raw(self), pfd.param().abi(), psi.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn OnTypeChange<P0>(&self, pfd: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IFileDialog>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnTypeChange)(windows_core::Interface::as_raw(self), pfd.param().abi()).ok() }
    }
    pub unsafe fn OnOverwrite<P0, P1>(&self, pfd: P0, psi: P1) -> windows_core::Result<FDE_OVERWRITE_RESPONSE>
    where
        P0: windows_core::Param<IFileDialog>,
        P1: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OnOverwrite)(windows_core::Interface::as_raw(self), pfd.param().abi(), psi.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileDialogEvents_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnFileOk: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnFolderChanging: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnFolderChange: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnSelectionChange: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnShareViolation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut FDE_SHAREVIOLATION_RESPONSE) -> windows_core::HRESULT,
    pub OnTypeChange: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnOverwrite: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut FDE_OVERWRITE_RESPONSE) -> windows_core::HRESULT,
}
pub trait IFileDialogEvents_Impl: windows_core::IUnknownImpl {
    fn OnFileOk(&self, pfd: windows_core::Ref<IFileDialog>) -> windows_core::Result<()>;
    fn OnFolderChanging(&self, pfd: windows_core::Ref<IFileDialog>, psifolder: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn OnFolderChange(&self, pfd: windows_core::Ref<IFileDialog>) -> windows_core::Result<()>;
    fn OnSelectionChange(&self, pfd: windows_core::Ref<IFileDialog>) -> windows_core::Result<()>;
    fn OnShareViolation(&self, pfd: windows_core::Ref<IFileDialog>, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<FDE_SHAREVIOLATION_RESPONSE>;
    fn OnTypeChange(&self, pfd: windows_core::Ref<IFileDialog>) -> windows_core::Result<()>;
    fn OnOverwrite(&self, pfd: windows_core::Ref<IFileDialog>, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<FDE_OVERWRITE_RESPONSE>;
}
impl IFileDialogEvents_Vtbl {
    pub const fn new<Identity: IFileDialogEvents_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnFileOk<Identity: IFileDialogEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogEvents_Impl::OnFileOk(this, core::mem::transmute_copy(&pfd)).into()
            }
        }
        unsafe extern "system" fn OnFolderChanging<Identity: IFileDialogEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void, psifolder: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogEvents_Impl::OnFolderChanging(this, core::mem::transmute_copy(&pfd), core::mem::transmute_copy(&psifolder)).into()
            }
        }
        unsafe extern "system" fn OnFolderChange<Identity: IFileDialogEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogEvents_Impl::OnFolderChange(this, core::mem::transmute_copy(&pfd)).into()
            }
        }
        unsafe extern "system" fn OnSelectionChange<Identity: IFileDialogEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogEvents_Impl::OnSelectionChange(this, core::mem::transmute_copy(&pfd)).into()
            }
        }
        unsafe extern "system" fn OnShareViolation<Identity: IFileDialogEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, presponse: *mut FDE_SHAREVIOLATION_RESPONSE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialogEvents_Impl::OnShareViolation(this, core::mem::transmute_copy(&pfd), core::mem::transmute_copy(&psi)) {
                    Ok(ok__) => {
                        presponse.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OnTypeChange<Identity: IFileDialogEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileDialogEvents_Impl::OnTypeChange(this, core::mem::transmute_copy(&pfd)).into()
            }
        }
        unsafe extern "system" fn OnOverwrite<Identity: IFileDialogEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, presponse: *mut FDE_OVERWRITE_RESPONSE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileDialogEvents_Impl::OnOverwrite(this, core::mem::transmute_copy(&pfd), core::mem::transmute_copy(&psi)) {
                    Ok(ok__) => {
                        presponse.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnFileOk: OnFileOk::<Identity, OFFSET>,
            OnFolderChanging: OnFolderChanging::<Identity, OFFSET>,
            OnFolderChange: OnFolderChange::<Identity, OFFSET>,
            OnSelectionChange: OnSelectionChange::<Identity, OFFSET>,
            OnShareViolation: OnShareViolation::<Identity, OFFSET>,
            OnTypeChange: OnTypeChange::<Identity, OFFSET>,
            OnOverwrite: OnOverwrite::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileDialogEvents as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFileDialogEvents {}
windows_core::imp::define_interface!(IFileIsInUse, IFileIsInUse_Vtbl, 0x64a1cbf0_3a1a_4461_9158_376969693950);
windows_core::imp::interface_hierarchy!(IFileIsInUse, windows_core::IUnknown);
impl IFileIsInUse {
    pub unsafe fn GetAppName(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAppName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetUsage(&self) -> windows_core::Result<FILE_USAGE_TYPE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetUsage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCapabilities(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCapabilities)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSwitchToHWND(&self) -> windows_core::Result<super::super::Foundation::HWND> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSwitchToHWND)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CloseFile(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CloseFile)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileIsInUse_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetAppName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetUsage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut FILE_USAGE_TYPE) -> windows_core::HRESULT,
    pub GetCapabilities: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSwitchToHWND: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub CloseFile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IFileIsInUse_Impl: windows_core::IUnknownImpl {
    fn GetAppName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetUsage(&self) -> windows_core::Result<FILE_USAGE_TYPE>;
    fn GetCapabilities(&self) -> windows_core::Result<u32>;
    fn GetSwitchToHWND(&self) -> windows_core::Result<super::super::Foundation::HWND>;
    fn CloseFile(&self) -> windows_core::Result<()>;
}
impl IFileIsInUse_Vtbl {
    pub const fn new<Identity: IFileIsInUse_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetAppName<Identity: IFileIsInUse_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileIsInUse_Impl::GetAppName(this) {
                    Ok(ok__) => {
                        ppszname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetUsage<Identity: IFileIsInUse_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfut: *mut FILE_USAGE_TYPE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileIsInUse_Impl::GetUsage(this) {
                    Ok(ok__) => {
                        pfut.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCapabilities<Identity: IFileIsInUse_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwcapflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileIsInUse_Impl::GetCapabilities(this) {
                    Ok(ok__) => {
                        pdwcapflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSwitchToHWND<Identity: IFileIsInUse_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileIsInUse_Impl::GetSwitchToHWND(this) {
                    Ok(ok__) => {
                        phwnd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CloseFile<Identity: IFileIsInUse_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileIsInUse_Impl::CloseFile(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAppName: GetAppName::<Identity, OFFSET>,
            GetUsage: GetUsage::<Identity, OFFSET>,
            GetCapabilities: GetCapabilities::<Identity, OFFSET>,
            GetSwitchToHWND: GetSwitchToHWND::<Identity, OFFSET>,
            CloseFile: CloseFile::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileIsInUse as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFileIsInUse {}
windows_core::imp::define_interface!(IFileOpenDialog, IFileOpenDialog_Vtbl, 0xd57c7288_d4ad_4768_be02_9d969532d960);
impl core::ops::Deref for IFileOpenDialog {
    type Target = IFileDialog;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IFileOpenDialog, windows_core::IUnknown, IModalWindow, IFileDialog);
impl IFileOpenDialog {
    pub unsafe fn GetResults(&self) -> windows_core::Result<IShellItemArray> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetResults)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetSelectedItems(&self) -> windows_core::Result<IShellItemArray> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSelectedItems)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileOpenDialog_Vtbl {
    pub base__: IFileDialog_Vtbl,
    pub GetResults: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSelectedItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IFileOpenDialog_Impl: IFileDialog_Impl {
    fn GetResults(&self) -> windows_core::Result<IShellItemArray>;
    fn GetSelectedItems(&self) -> windows_core::Result<IShellItemArray>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IFileOpenDialog_Vtbl {
    pub const fn new<Identity: IFileOpenDialog_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetResults<Identity: IFileOpenDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileOpenDialog_Impl::GetResults(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSelectedItems<Identity: IFileOpenDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsai: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileOpenDialog_Impl::GetSelectedItems(this) {
                    Ok(ok__) => {
                        ppsai.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IFileDialog_Vtbl::new::<Identity, OFFSET>(),
            GetResults: GetResults::<Identity, OFFSET>,
            GetSelectedItems: GetSelectedItems::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileOpenDialog as windows_core::Interface>::IID || iid == &<IModalWindow as windows_core::Interface>::IID || iid == &<IFileDialog as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IFileOpenDialog {}
windows_core::imp::define_interface!(IFileOperation, IFileOperation_Vtbl, 0x947aab5f_0a5c_4c13_b4d6_4bf7836fc9f8);
windows_core::imp::interface_hierarchy!(IFileOperation, windows_core::IUnknown);
impl IFileOperation {
    pub unsafe fn Advise<P0>(&self, pfops: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<IFileOperationProgressSink>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Advise)(windows_core::Interface::as_raw(self), pfops.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Unadvise)(windows_core::Interface::as_raw(self), dwcookie).ok() }
    }
    pub unsafe fn SetOperationFlags(&self, dwoperationflags: FILEOPERATION_FLAGS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOperationFlags)(windows_core::Interface::as_raw(self), dwoperationflags).ok() }
    }
    pub unsafe fn SetProgressMessage<P0>(&self, pszmessage: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetProgressMessage)(windows_core::Interface::as_raw(self), pszmessage.param().abi()).ok() }
    }
    pub unsafe fn SetProgressDialog<P0>(&self, popd: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IOperationsProgressDialog>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetProgressDialog)(windows_core::Interface::as_raw(self), popd.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn SetProperties<P0>(&self, pproparray: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<PropertiesSystem::IPropertyChangeArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetProperties)(windows_core::Interface::as_raw(self), pproparray.param().abi()).ok() }
    }
    pub unsafe fn SetOwnerWindow(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOwnerWindow)(windows_core::Interface::as_raw(self), hwndowner).ok() }
    }
    pub unsafe fn ApplyPropertiesToItem<P0>(&self, psiitem: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).ApplyPropertiesToItem)(windows_core::Interface::as_raw(self), psiitem.param().abi()).ok() }
    }
    pub unsafe fn ApplyPropertiesToItems<P0>(&self, punkitems: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).ApplyPropertiesToItems)(windows_core::Interface::as_raw(self), punkitems.param().abi()).ok() }
    }
    pub unsafe fn RenameItem<P0, P1, P2>(&self, psiitem: P0, psznewname: P1, pfopsitem: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<IFileOperationProgressSink>,
    {
        unsafe { (windows_core::Interface::vtable(self).RenameItem)(windows_core::Interface::as_raw(self), psiitem.param().abi(), psznewname.param().abi(), pfopsitem.param().abi()).ok() }
    }
    pub unsafe fn RenameItems<P0, P1>(&self, punkitems: P0, psznewname: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).RenameItems)(windows_core::Interface::as_raw(self), punkitems.param().abi(), psznewname.param().abi()).ok() }
    }
    pub unsafe fn MoveItem<P0, P1, P2, P3>(&self, psiitem: P0, psidestinationfolder: P1, psznewname: P2, pfopsitem: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<IFileOperationProgressSink>,
    {
        unsafe { (windows_core::Interface::vtable(self).MoveItem)(windows_core::Interface::as_raw(self), psiitem.param().abi(), psidestinationfolder.param().abi(), psznewname.param().abi(), pfopsitem.param().abi()).ok() }
    }
    pub unsafe fn MoveItems<P0, P1>(&self, punkitems: P0, psidestinationfolder: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
        P1: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).MoveItems)(windows_core::Interface::as_raw(self), punkitems.param().abi(), psidestinationfolder.param().abi()).ok() }
    }
    pub unsafe fn CopyItem<P0, P1, P2, P3>(&self, psiitem: P0, psidestinationfolder: P1, pszcopyname: P2, pfopsitem: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<IFileOperationProgressSink>,
    {
        unsafe { (windows_core::Interface::vtable(self).CopyItem)(windows_core::Interface::as_raw(self), psiitem.param().abi(), psidestinationfolder.param().abi(), pszcopyname.param().abi(), pfopsitem.param().abi()).ok() }
    }
    pub unsafe fn CopyItems<P0, P1>(&self, punkitems: P0, psidestinationfolder: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
        P1: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).CopyItems)(windows_core::Interface::as_raw(self), punkitems.param().abi(), psidestinationfolder.param().abi()).ok() }
    }
    pub unsafe fn DeleteItem<P0, P1>(&self, psiitem: P0, pfopsitem: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IFileOperationProgressSink>,
    {
        unsafe { (windows_core::Interface::vtable(self).DeleteItem)(windows_core::Interface::as_raw(self), psiitem.param().abi(), pfopsitem.param().abi()).ok() }
    }
    pub unsafe fn DeleteItems<P0>(&self, punkitems: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).DeleteItems)(windows_core::Interface::as_raw(self), punkitems.param().abi()).ok() }
    }
    pub unsafe fn NewItem<P0, P2, P3, P4>(&self, psidestinationfolder: P0, dwfileattributes: u32, pszname: P2, psztemplatename: P3, pfopsitem: P4) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<IFileOperationProgressSink>,
    {
        unsafe { (windows_core::Interface::vtable(self).NewItem)(windows_core::Interface::as_raw(self), psidestinationfolder.param().abi(), dwfileattributes, pszname.param().abi(), psztemplatename.param().abi(), pfopsitem.param().abi()).ok() }
    }
    pub unsafe fn PerformOperations(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PerformOperations)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetAnyOperationsAborted(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAnyOperationsAborted)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileOperation_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Advise: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetOperationFlags: unsafe extern "system" fn(*mut core::ffi::c_void, FILEOPERATION_FLAGS) -> windows_core::HRESULT,
    pub SetProgressMessage: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetProgressDialog: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub SetProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    SetProperties: usize,
    pub SetOwnerWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub ApplyPropertiesToItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ApplyPropertiesToItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RenameItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RenameItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub MoveItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub MoveItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CopyItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CopyItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DeleteItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DeleteItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub NewItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PerformOperations: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetAnyOperationsAborted: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IFileOperation_Impl: windows_core::IUnknownImpl {
    fn Advise(&self, pfops: windows_core::Ref<IFileOperationProgressSink>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn SetOperationFlags(&self, dwoperationflags: FILEOPERATION_FLAGS) -> windows_core::Result<()>;
    fn SetProgressMessage(&self, pszmessage: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetProgressDialog(&self, popd: windows_core::Ref<IOperationsProgressDialog>) -> windows_core::Result<()>;
    fn SetProperties(&self, pproparray: windows_core::Ref<PropertiesSystem::IPropertyChangeArray>) -> windows_core::Result<()>;
    fn SetOwnerWindow(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn ApplyPropertiesToItem(&self, psiitem: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn ApplyPropertiesToItems(&self, punkitems: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn RenameItem(&self, psiitem: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR, pfopsitem: windows_core::Ref<IFileOperationProgressSink>) -> windows_core::Result<()>;
    fn RenameItems(&self, punkitems: windows_core::Ref<windows_core::IUnknown>, psznewname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn MoveItem(&self, psiitem: windows_core::Ref<IShellItem>, psidestinationfolder: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR, pfopsitem: windows_core::Ref<IFileOperationProgressSink>) -> windows_core::Result<()>;
    fn MoveItems(&self, punkitems: windows_core::Ref<windows_core::IUnknown>, psidestinationfolder: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn CopyItem(&self, psiitem: windows_core::Ref<IShellItem>, psidestinationfolder: windows_core::Ref<IShellItem>, pszcopyname: &windows_core::PCWSTR, pfopsitem: windows_core::Ref<IFileOperationProgressSink>) -> windows_core::Result<()>;
    fn CopyItems(&self, punkitems: windows_core::Ref<windows_core::IUnknown>, psidestinationfolder: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn DeleteItem(&self, psiitem: windows_core::Ref<IShellItem>, pfopsitem: windows_core::Ref<IFileOperationProgressSink>) -> windows_core::Result<()>;
    fn DeleteItems(&self, punkitems: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn NewItem(&self, psidestinationfolder: windows_core::Ref<IShellItem>, dwfileattributes: u32, pszname: &windows_core::PCWSTR, psztemplatename: &windows_core::PCWSTR, pfopsitem: windows_core::Ref<IFileOperationProgressSink>) -> windows_core::Result<()>;
    fn PerformOperations(&self) -> windows_core::Result<()>;
    fn GetAnyOperationsAborted(&self) -> windows_core::Result<windows_core::BOOL>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IFileOperation_Vtbl {
    pub const fn new<Identity: IFileOperation_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Advise<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfops: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileOperation_Impl::Advise(this, core::mem::transmute_copy(&pfops)) {
                    Ok(ok__) => {
                        pdwcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Unadvise<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
            }
        }
        unsafe extern "system" fn SetOperationFlags<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwoperationflags: FILEOPERATION_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::SetOperationFlags(this, core::mem::transmute_copy(&dwoperationflags)).into()
            }
        }
        unsafe extern "system" fn SetProgressMessage<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszmessage: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::SetProgressMessage(this, core::mem::transmute(&pszmessage)).into()
            }
        }
        unsafe extern "system" fn SetProgressDialog<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, popd: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::SetProgressDialog(this, core::mem::transmute_copy(&popd)).into()
            }
        }
        unsafe extern "system" fn SetProperties<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pproparray: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::SetProperties(this, core::mem::transmute_copy(&pproparray)).into()
            }
        }
        unsafe extern "system" fn SetOwnerWindow<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::SetOwnerWindow(this, core::mem::transmute_copy(&hwndowner)).into()
            }
        }
        unsafe extern "system" fn ApplyPropertiesToItem<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::ApplyPropertiesToItem(this, core::mem::transmute_copy(&psiitem)).into()
            }
        }
        unsafe extern "system" fn ApplyPropertiesToItems<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkitems: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::ApplyPropertiesToItems(this, core::mem::transmute_copy(&punkitems)).into()
            }
        }
        unsafe extern "system" fn RenameItem<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, pfopsitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::RenameItem(this, core::mem::transmute_copy(&psiitem), core::mem::transmute(&psznewname), core::mem::transmute_copy(&pfopsitem)).into()
            }
        }
        unsafe extern "system" fn RenameItems<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkitems: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::RenameItems(this, core::mem::transmute_copy(&punkitems), core::mem::transmute(&psznewname)).into()
            }
        }
        unsafe extern "system" fn MoveItem<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, pfopsitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::MoveItem(this, core::mem::transmute_copy(&psiitem), core::mem::transmute_copy(&psidestinationfolder), core::mem::transmute(&psznewname), core::mem::transmute_copy(&pfopsitem)).into()
            }
        }
        unsafe extern "system" fn MoveItems<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkitems: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::MoveItems(this, core::mem::transmute_copy(&punkitems), core::mem::transmute_copy(&psidestinationfolder)).into()
            }
        }
        unsafe extern "system" fn CopyItem<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, pszcopyname: windows_core::PCWSTR, pfopsitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::CopyItem(this, core::mem::transmute_copy(&psiitem), core::mem::transmute_copy(&psidestinationfolder), core::mem::transmute(&pszcopyname), core::mem::transmute_copy(&pfopsitem)).into()
            }
        }
        unsafe extern "system" fn CopyItems<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkitems: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::CopyItems(this, core::mem::transmute_copy(&punkitems), core::mem::transmute_copy(&psidestinationfolder)).into()
            }
        }
        unsafe extern "system" fn DeleteItem<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void, pfopsitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::DeleteItem(this, core::mem::transmute_copy(&psiitem), core::mem::transmute_copy(&pfopsitem)).into()
            }
        }
        unsafe extern "system" fn DeleteItems<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkitems: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::DeleteItems(this, core::mem::transmute_copy(&punkitems)).into()
            }
        }
        unsafe extern "system" fn NewItem<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, dwfileattributes: u32, pszname: windows_core::PCWSTR, psztemplatename: windows_core::PCWSTR, pfopsitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::NewItem(this, core::mem::transmute_copy(&psidestinationfolder), core::mem::transmute_copy(&dwfileattributes), core::mem::transmute(&pszname), core::mem::transmute(&psztemplatename), core::mem::transmute_copy(&pfopsitem)).into()
            }
        }
        unsafe extern "system" fn PerformOperations<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation_Impl::PerformOperations(this).into()
            }
        }
        unsafe extern "system" fn GetAnyOperationsAborted<Identity: IFileOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfanyoperationsaborted: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileOperation_Impl::GetAnyOperationsAborted(this) {
                    Ok(ok__) => {
                        pfanyoperationsaborted.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            SetOperationFlags: SetOperationFlags::<Identity, OFFSET>,
            SetProgressMessage: SetProgressMessage::<Identity, OFFSET>,
            SetProgressDialog: SetProgressDialog::<Identity, OFFSET>,
            SetProperties: SetProperties::<Identity, OFFSET>,
            SetOwnerWindow: SetOwnerWindow::<Identity, OFFSET>,
            ApplyPropertiesToItem: ApplyPropertiesToItem::<Identity, OFFSET>,
            ApplyPropertiesToItems: ApplyPropertiesToItems::<Identity, OFFSET>,
            RenameItem: RenameItem::<Identity, OFFSET>,
            RenameItems: RenameItems::<Identity, OFFSET>,
            MoveItem: MoveItem::<Identity, OFFSET>,
            MoveItems: MoveItems::<Identity, OFFSET>,
            CopyItem: CopyItem::<Identity, OFFSET>,
            CopyItems: CopyItems::<Identity, OFFSET>,
            DeleteItem: DeleteItem::<Identity, OFFSET>,
            DeleteItems: DeleteItems::<Identity, OFFSET>,
            NewItem: NewItem::<Identity, OFFSET>,
            PerformOperations: PerformOperations::<Identity, OFFSET>,
            GetAnyOperationsAborted: GetAnyOperationsAborted::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileOperation as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IFileOperation {}
windows_core::imp::define_interface!(IFileOperation2, IFileOperation2_Vtbl, 0xcd8f23c1_8f61_4916_909d_55bdd0918753);
impl core::ops::Deref for IFileOperation2 {
    type Target = IFileOperation;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IFileOperation2, windows_core::IUnknown, IFileOperation);
impl IFileOperation2 {
    pub unsafe fn SetOperationFlags2(&self, operationflags2: FILE_OPERATION_FLAGS2) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOperationFlags2)(windows_core::Interface::as_raw(self), operationflags2).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileOperation2_Vtbl {
    pub base__: IFileOperation_Vtbl,
    pub SetOperationFlags2: unsafe extern "system" fn(*mut core::ffi::c_void, FILE_OPERATION_FLAGS2) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IFileOperation2_Impl: IFileOperation_Impl {
    fn SetOperationFlags2(&self, operationflags2: FILE_OPERATION_FLAGS2) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IFileOperation2_Vtbl {
    pub const fn new<Identity: IFileOperation2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetOperationFlags2<Identity: IFileOperation2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, operationflags2: FILE_OPERATION_FLAGS2) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperation2_Impl::SetOperationFlags2(this, core::mem::transmute_copy(&operationflags2)).into()
            }
        }
        Self { base__: IFileOperation_Vtbl::new::<Identity, OFFSET>(), SetOperationFlags2: SetOperationFlags2::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileOperation2 as windows_core::Interface>::IID || iid == &<IFileOperation as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IFileOperation2 {}
windows_core::imp::define_interface!(IFileOperationProgressSink, IFileOperationProgressSink_Vtbl, 0x04b0f1a7_9490_44bc_96e1_4296a31252e2);
windows_core::imp::interface_hierarchy!(IFileOperationProgressSink, windows_core::IUnknown);
impl IFileOperationProgressSink {
    pub unsafe fn StartOperations(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).StartOperations)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn FinishOperations(&self, hrresult: windows_core::HRESULT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FinishOperations)(windows_core::Interface::as_raw(self), hrresult).ok() }
    }
    pub unsafe fn PreRenameItem<P1, P2>(&self, dwflags: u32, psiitem: P1, psznewname: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).PreRenameItem)(windows_core::Interface::as_raw(self), dwflags, psiitem.param().abi(), psznewname.param().abi()).ok() }
    }
    pub unsafe fn PostRenameItem<P1, P2, P4>(&self, dwflags: u32, psiitem: P1, psznewname: P2, hrrename: windows_core::HRESULT, psinewlycreated: P4) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).PostRenameItem)(windows_core::Interface::as_raw(self), dwflags, psiitem.param().abi(), psznewname.param().abi(), hrrename, psinewlycreated.param().abi()).ok() }
    }
    pub unsafe fn PreMoveItem<P1, P2, P3>(&self, dwflags: u32, psiitem: P1, psidestinationfolder: P2, psznewname: P3) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<IShellItem>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).PreMoveItem)(windows_core::Interface::as_raw(self), dwflags, psiitem.param().abi(), psidestinationfolder.param().abi(), psznewname.param().abi()).ok() }
    }
    pub unsafe fn PostMoveItem<P1, P2, P3, P5>(&self, dwflags: u32, psiitem: P1, psidestinationfolder: P2, psznewname: P3, hrmove: windows_core::HRESULT, psinewlycreated: P5) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<IShellItem>,
        P3: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).PostMoveItem)(windows_core::Interface::as_raw(self), dwflags, psiitem.param().abi(), psidestinationfolder.param().abi(), psznewname.param().abi(), hrmove, psinewlycreated.param().abi()).ok() }
    }
    pub unsafe fn PreCopyItem<P1, P2, P3>(&self, dwflags: u32, psiitem: P1, psidestinationfolder: P2, psznewname: P3) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<IShellItem>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).PreCopyItem)(windows_core::Interface::as_raw(self), dwflags, psiitem.param().abi(), psidestinationfolder.param().abi(), psznewname.param().abi()).ok() }
    }
    pub unsafe fn PostCopyItem<P1, P2, P3, P5>(&self, dwflags: u32, psiitem: P1, psidestinationfolder: P2, psznewname: P3, hrcopy: windows_core::HRESULT, psinewlycreated: P5) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<IShellItem>,
        P3: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).PostCopyItem)(windows_core::Interface::as_raw(self), dwflags, psiitem.param().abi(), psidestinationfolder.param().abi(), psznewname.param().abi(), hrcopy, psinewlycreated.param().abi()).ok() }
    }
    pub unsafe fn PreDeleteItem<P1>(&self, dwflags: u32, psiitem: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).PreDeleteItem)(windows_core::Interface::as_raw(self), dwflags, psiitem.param().abi()).ok() }
    }
    pub unsafe fn PostDeleteItem<P1, P3>(&self, dwflags: u32, psiitem: P1, hrdelete: windows_core::HRESULT, psinewlycreated: P3) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
        P3: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).PostDeleteItem)(windows_core::Interface::as_raw(self), dwflags, psiitem.param().abi(), hrdelete, psinewlycreated.param().abi()).ok() }
    }
    pub unsafe fn PreNewItem<P1, P2>(&self, dwflags: u32, psidestinationfolder: P1, psznewname: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).PreNewItem)(windows_core::Interface::as_raw(self), dwflags, psidestinationfolder.param().abi(), psznewname.param().abi()).ok() }
    }
    pub unsafe fn PostNewItem<P1, P2, P3, P6>(&self, dwflags: u32, psidestinationfolder: P1, psznewname: P2, psztemplatename: P3, dwfileattributes: u32, hrnew: windows_core::HRESULT, psinewitem: P6) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
        P6: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).PostNewItem)(windows_core::Interface::as_raw(self), dwflags, psidestinationfolder.param().abi(), psznewname.param().abi(), psztemplatename.param().abi(), dwfileattributes, hrnew, psinewitem.param().abi()).ok() }
    }
    pub unsafe fn UpdateProgress(&self, iworktotal: u32, iworksofar: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateProgress)(windows_core::Interface::as_raw(self), iworktotal, iworksofar).ok() }
    }
    pub unsafe fn ResetTimer(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetTimer)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn PauseTimer(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PauseTimer)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ResumeTimer(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResumeTimer)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileOperationProgressSink_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub StartOperations: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FinishOperations: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::HRESULT) -> windows_core::HRESULT,
    pub PreRenameItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub PostRenameItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::HRESULT, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PreMoveItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub PostMoveItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::HRESULT, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PreCopyItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub PostCopyItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::HRESULT, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PreDeleteItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PostDeleteItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, windows_core::HRESULT, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PreNewItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub PostNewItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, u32, windows_core::HRESULT, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UpdateProgress: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub ResetTimer: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PauseTimer: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ResumeTimer: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IFileOperationProgressSink_Impl: windows_core::IUnknownImpl {
    fn StartOperations(&self) -> windows_core::Result<()>;
    fn FinishOperations(&self, hrresult: windows_core::HRESULT) -> windows_core::Result<()>;
    fn PreRenameItem(&self, dwflags: u32, psiitem: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn PostRenameItem(&self, dwflags: u32, psiitem: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR, hrrename: windows_core::HRESULT, psinewlycreated: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn PreMoveItem(&self, dwflags: u32, psiitem: windows_core::Ref<IShellItem>, psidestinationfolder: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn PostMoveItem(&self, dwflags: u32, psiitem: windows_core::Ref<IShellItem>, psidestinationfolder: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR, hrmove: windows_core::HRESULT, psinewlycreated: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn PreCopyItem(&self, dwflags: u32, psiitem: windows_core::Ref<IShellItem>, psidestinationfolder: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn PostCopyItem(&self, dwflags: u32, psiitem: windows_core::Ref<IShellItem>, psidestinationfolder: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR, hrcopy: windows_core::HRESULT, psinewlycreated: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn PreDeleteItem(&self, dwflags: u32, psiitem: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn PostDeleteItem(&self, dwflags: u32, psiitem: windows_core::Ref<IShellItem>, hrdelete: windows_core::HRESULT, psinewlycreated: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn PreNewItem(&self, dwflags: u32, psidestinationfolder: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn PostNewItem(&self, dwflags: u32, psidestinationfolder: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR, psztemplatename: &windows_core::PCWSTR, dwfileattributes: u32, hrnew: windows_core::HRESULT, psinewitem: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn UpdateProgress(&self, iworktotal: u32, iworksofar: u32) -> windows_core::Result<()>;
    fn ResetTimer(&self) -> windows_core::Result<()>;
    fn PauseTimer(&self) -> windows_core::Result<()>;
    fn ResumeTimer(&self) -> windows_core::Result<()>;
}
impl IFileOperationProgressSink_Vtbl {
    pub const fn new<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn StartOperations<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::StartOperations(this).into()
            }
        }
        unsafe extern "system" fn FinishOperations<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hrresult: windows_core::HRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::FinishOperations(this, core::mem::transmute_copy(&hrresult)).into()
            }
        }
        unsafe extern "system" fn PreRenameItem<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PreRenameItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&psiitem), core::mem::transmute(&psznewname)).into()
            }
        }
        unsafe extern "system" fn PostRenameItem<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, hrrename: windows_core::HRESULT, psinewlycreated: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PostRenameItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&psiitem), core::mem::transmute(&psznewname), core::mem::transmute_copy(&hrrename), core::mem::transmute_copy(&psinewlycreated)).into()
            }
        }
        unsafe extern "system" fn PreMoveItem<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PreMoveItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&psiitem), core::mem::transmute_copy(&psidestinationfolder), core::mem::transmute(&psznewname)).into()
            }
        }
        unsafe extern "system" fn PostMoveItem<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, hrmove: windows_core::HRESULT, psinewlycreated: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PostMoveItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&psiitem), core::mem::transmute_copy(&psidestinationfolder), core::mem::transmute(&psznewname), core::mem::transmute_copy(&hrmove), core::mem::transmute_copy(&psinewlycreated)).into()
            }
        }
        unsafe extern "system" fn PreCopyItem<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PreCopyItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&psiitem), core::mem::transmute_copy(&psidestinationfolder), core::mem::transmute(&psznewname)).into()
            }
        }
        unsafe extern "system" fn PostCopyItem<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, hrcopy: windows_core::HRESULT, psinewlycreated: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PostCopyItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&psiitem), core::mem::transmute_copy(&psidestinationfolder), core::mem::transmute(&psznewname), core::mem::transmute_copy(&hrcopy), core::mem::transmute_copy(&psinewlycreated)).into()
            }
        }
        unsafe extern "system" fn PreDeleteItem<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PreDeleteItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&psiitem)).into()
            }
        }
        unsafe extern "system" fn PostDeleteItem<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psiitem: *mut core::ffi::c_void, hrdelete: windows_core::HRESULT, psinewlycreated: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PostDeleteItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&psiitem), core::mem::transmute_copy(&hrdelete), core::mem::transmute_copy(&psinewlycreated)).into()
            }
        }
        unsafe extern "system" fn PreNewItem<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PreNewItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&psidestinationfolder), core::mem::transmute(&psznewname)).into()
            }
        }
        unsafe extern "system" fn PostNewItem<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, psidestinationfolder: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, psztemplatename: windows_core::PCWSTR, dwfileattributes: u32, hrnew: windows_core::HRESULT, psinewitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PostNewItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&psidestinationfolder), core::mem::transmute(&psznewname), core::mem::transmute(&psztemplatename), core::mem::transmute_copy(&dwfileattributes), core::mem::transmute_copy(&hrnew), core::mem::transmute_copy(&psinewitem)).into()
            }
        }
        unsafe extern "system" fn UpdateProgress<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iworktotal: u32, iworksofar: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::UpdateProgress(this, core::mem::transmute_copy(&iworktotal), core::mem::transmute_copy(&iworksofar)).into()
            }
        }
        unsafe extern "system" fn ResetTimer<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::ResetTimer(this).into()
            }
        }
        unsafe extern "system" fn PauseTimer<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::PauseTimer(this).into()
            }
        }
        unsafe extern "system" fn ResumeTimer<Identity: IFileOperationProgressSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileOperationProgressSink_Impl::ResumeTimer(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartOperations: StartOperations::<Identity, OFFSET>,
            FinishOperations: FinishOperations::<Identity, OFFSET>,
            PreRenameItem: PreRenameItem::<Identity, OFFSET>,
            PostRenameItem: PostRenameItem::<Identity, OFFSET>,
            PreMoveItem: PreMoveItem::<Identity, OFFSET>,
            PostMoveItem: PostMoveItem::<Identity, OFFSET>,
            PreCopyItem: PreCopyItem::<Identity, OFFSET>,
            PostCopyItem: PostCopyItem::<Identity, OFFSET>,
            PreDeleteItem: PreDeleteItem::<Identity, OFFSET>,
            PostDeleteItem: PostDeleteItem::<Identity, OFFSET>,
            PreNewItem: PreNewItem::<Identity, OFFSET>,
            PostNewItem: PostNewItem::<Identity, OFFSET>,
            UpdateProgress: UpdateProgress::<Identity, OFFSET>,
            ResetTimer: ResetTimer::<Identity, OFFSET>,
            PauseTimer: PauseTimer::<Identity, OFFSET>,
            ResumeTimer: ResumeTimer::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileOperationProgressSink as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFileOperationProgressSink {}
windows_core::imp::define_interface!(IFileSaveDialog, IFileSaveDialog_Vtbl, 0x84bccd23_5fde_4cdb_aea4_af64b83d78ab);
impl core::ops::Deref for IFileSaveDialog {
    type Target = IFileDialog;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IFileSaveDialog, windows_core::IUnknown, IModalWindow, IFileDialog);
impl IFileSaveDialog {
    pub unsafe fn SetSaveAsItem<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSaveAsItem)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn SetProperties<P0>(&self, pstore: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<PropertiesSystem::IPropertyStore>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetProperties)(windows_core::Interface::as_raw(self), pstore.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn SetCollectedProperties<P0>(&self, plist: P0, fappenddefault: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<PropertiesSystem::IPropertyDescriptionList>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetCollectedProperties)(windows_core::Interface::as_raw(self), plist.param().abi(), fappenddefault.into()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn GetProperties(&self) -> windows_core::Result<PropertiesSystem::IPropertyStore> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProperties)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn ApplyProperties<P0, P1, P3>(&self, psi: P0, pstore: P1, hwnd: super::super::Foundation::HWND, psink: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<PropertiesSystem::IPropertyStore>,
        P3: windows_core::Param<IFileOperationProgressSink>,
    {
        unsafe { (windows_core::Interface::vtable(self).ApplyProperties)(windows_core::Interface::as_raw(self), psi.param().abi(), pstore.param().abi(), hwnd, psink.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileSaveDialog_Vtbl {
    pub base__: IFileDialog_Vtbl,
    pub SetSaveAsItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub SetProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    SetProperties: usize,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub SetCollectedProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    SetCollectedProperties: usize,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub GetProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    GetProperties: usize,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub ApplyProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    ApplyProperties: usize,
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait IFileSaveDialog_Impl: IFileDialog_Impl {
    fn SetSaveAsItem(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn SetProperties(&self, pstore: windows_core::Ref<PropertiesSystem::IPropertyStore>) -> windows_core::Result<()>;
    fn SetCollectedProperties(&self, plist: windows_core::Ref<PropertiesSystem::IPropertyDescriptionList>, fappenddefault: windows_core::BOOL) -> windows_core::Result<()>;
    fn GetProperties(&self) -> windows_core::Result<PropertiesSystem::IPropertyStore>;
    fn ApplyProperties(&self, psi: windows_core::Ref<IShellItem>, pstore: windows_core::Ref<PropertiesSystem::IPropertyStore>, hwnd: super::super::Foundation::HWND, psink: windows_core::Ref<IFileOperationProgressSink>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl IFileSaveDialog_Vtbl {
    pub const fn new<Identity: IFileSaveDialog_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetSaveAsItem<Identity: IFileSaveDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSaveDialog_Impl::SetSaveAsItem(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn SetProperties<Identity: IFileSaveDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstore: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSaveDialog_Impl::SetProperties(this, core::mem::transmute_copy(&pstore)).into()
            }
        }
        unsafe extern "system" fn SetCollectedProperties<Identity: IFileSaveDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plist: *mut core::ffi::c_void, fappenddefault: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSaveDialog_Impl::SetCollectedProperties(this, core::mem::transmute_copy(&plist), core::mem::transmute_copy(&fappenddefault)).into()
            }
        }
        unsafe extern "system" fn GetProperties<Identity: IFileSaveDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppstore: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileSaveDialog_Impl::GetProperties(this) {
                    Ok(ok__) => {
                        ppstore.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ApplyProperties<Identity: IFileSaveDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pstore: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, psink: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSaveDialog_Impl::ApplyProperties(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&pstore), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&psink)).into()
            }
        }
        Self {
            base__: IFileDialog_Vtbl::new::<Identity, OFFSET>(),
            SetSaveAsItem: SetSaveAsItem::<Identity, OFFSET>,
            SetProperties: SetProperties::<Identity, OFFSET>,
            SetCollectedProperties: SetCollectedProperties::<Identity, OFFSET>,
            GetProperties: GetProperties::<Identity, OFFSET>,
            ApplyProperties: ApplyProperties::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSaveDialog as windows_core::Interface>::IID || iid == &<IModalWindow as windows_core::Interface>::IID || iid == &<IFileDialog as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for IFileSaveDialog {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IFileSearchBand, IFileSearchBand_Vtbl, 0x2d91eea1_9932_11d2_be86_00a0c9a83da1);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IFileSearchBand {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IFileSearchBand, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IFileSearchBand {
    pub unsafe fn SetFocus(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFocus)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn SetSearchParameters(&self, pbstrsearchid: *const windows_core::BSTR, bnavtoresults: super::super::Foundation::VARIANT_BOOL, pvarscope: *const super::super::System::Variant::VARIANT, pvarqueryfile: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSearchParameters)(windows_core::Interface::as_raw(self), core::mem::transmute(pbstrsearchid), bnavtoresults, core::mem::transmute(pvarscope), core::mem::transmute(pvarqueryfile)).ok() }
    }
    pub unsafe fn SearchID(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SearchID)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Scope(&self) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Scope)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn QueryFile(&self) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).QueryFile)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IFileSearchBand_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub SetFocus: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub SetSearchParameters: unsafe extern "system" fn(*mut core::ffi::c_void, *const *mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    SetSearchParameters: usize,
    pub SearchID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Scope: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Scope: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub QueryFile: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    QueryFile: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IFileSearchBand_Impl: super::super::System::Com::IDispatch_Impl {
    fn SetFocus(&self) -> windows_core::Result<()>;
    fn SetSearchParameters(&self, pbstrsearchid: *const windows_core::BSTR, bnavtoresults: super::super::Foundation::VARIANT_BOOL, pvarscope: *const super::super::System::Variant::VARIANT, pvarqueryfile: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn SearchID(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Scope(&self) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn QueryFile(&self) -> windows_core::Result<super::super::System::Variant::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IFileSearchBand_Vtbl {
    pub const fn new<Identity: IFileSearchBand_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetFocus<Identity: IFileSearchBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSearchBand_Impl::SetFocus(this).into()
            }
        }
        unsafe extern "system" fn SetSearchParameters<Identity: IFileSearchBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsearchid: *const *mut core::ffi::c_void, bnavtoresults: super::super::Foundation::VARIANT_BOOL, pvarscope: *const super::super::System::Variant::VARIANT, pvarqueryfile: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSearchBand_Impl::SetSearchParameters(this, core::mem::transmute_copy(&pbstrsearchid), core::mem::transmute_copy(&bnavtoresults), core::mem::transmute_copy(&pvarscope), core::mem::transmute_copy(&pvarqueryfile)).into()
            }
        }
        unsafe extern "system" fn SearchID<Identity: IFileSearchBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsearchid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileSearchBand_Impl::SearchID(this) {
                    Ok(ok__) => {
                        pbstrsearchid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Scope<Identity: IFileSearchBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarscope: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileSearchBand_Impl::Scope(this) {
                    Ok(ok__) => {
                        pvarscope.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn QueryFile<Identity: IFileSearchBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarfile: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileSearchBand_Impl::QueryFile(this) {
                    Ok(ok__) => {
                        pvarfile.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            SetFocus: SetFocus::<Identity, OFFSET>,
            SetSearchParameters: SetSearchParameters::<Identity, OFFSET>,
            SearchID: SearchID::<Identity, OFFSET>,
            Scope: Scope::<Identity, OFFSET>,
            QueryFile: QueryFile::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSearchBand as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IFileSearchBand {}
windows_core::imp::define_interface!(IFileSyncMergeHandler, IFileSyncMergeHandler_Vtbl, 0xd97b5aac_c792_433c_975d_35c4eadc7a9d);
windows_core::imp::interface_hierarchy!(IFileSyncMergeHandler, windows_core::IUnknown);
impl IFileSyncMergeHandler {
    pub unsafe fn Merge<P0, P1>(&self, localfilepath: P0, serverfilepath: P1) -> windows_core::Result<MERGE_UPDATE_STATUS>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Merge)(windows_core::Interface::as_raw(self), localfilepath.param().abi(), serverfilepath.param().abi(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn ShowResolveConflictUIAsync<P0>(&self, localfilepath: P0, monitortodisplayon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ShowResolveConflictUIAsync)(windows_core::Interface::as_raw(self), localfilepath.param().abi(), monitortodisplayon).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileSyncMergeHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Merge: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *mut MERGE_UPDATE_STATUS) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub ShowResolveConflictUIAsync: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    ShowResolveConflictUIAsync: usize,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IFileSyncMergeHandler_Impl: windows_core::IUnknownImpl {
    fn Merge(&self, localfilepath: &windows_core::PCWSTR, serverfilepath: &windows_core::PCWSTR) -> windows_core::Result<MERGE_UPDATE_STATUS>;
    fn ShowResolveConflictUIAsync(&self, localfilepath: &windows_core::PCWSTR, monitortodisplayon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IFileSyncMergeHandler_Vtbl {
    pub const fn new<Identity: IFileSyncMergeHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Merge<Identity: IFileSyncMergeHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, localfilepath: windows_core::PCWSTR, serverfilepath: windows_core::PCWSTR, updatestatus: *mut MERGE_UPDATE_STATUS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileSyncMergeHandler_Impl::Merge(this, core::mem::transmute(&localfilepath), core::mem::transmute(&serverfilepath)) {
                    Ok(ok__) => {
                        updatestatus.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ShowResolveConflictUIAsync<Identity: IFileSyncMergeHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, localfilepath: windows_core::PCWSTR, monitortodisplayon: super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSyncMergeHandler_Impl::ShowResolveConflictUIAsync(this, core::mem::transmute(&localfilepath), core::mem::transmute_copy(&monitortodisplayon)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Merge: Merge::<Identity, OFFSET>,
            ShowResolveConflictUIAsync: ShowResolveConflictUIAsync::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSyncMergeHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IFileSyncMergeHandler {}
windows_core::imp::define_interface!(IFileSystemBindData, IFileSystemBindData_Vtbl, 0x01e18d10_4d8b_11d2_855d_006008059367);
windows_core::imp::interface_hierarchy!(IFileSystemBindData, windows_core::IUnknown);
impl IFileSystemBindData {
    #[cfg(feature = "Win32_Storage_FileSystem")]
    pub unsafe fn SetFindData(&self, pfd: *const super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFindData)(windows_core::Interface::as_raw(self), pfd).ok() }
    }
    #[cfg(feature = "Win32_Storage_FileSystem")]
    pub unsafe fn GetFindData(&self, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFindData)(windows_core::Interface::as_raw(self), pfd as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileSystemBindData_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Storage_FileSystem")]
    pub SetFindData: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Storage_FileSystem"))]
    SetFindData: usize,
    #[cfg(feature = "Win32_Storage_FileSystem")]
    pub GetFindData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Storage_FileSystem"))]
    GetFindData: usize,
}
#[cfg(feature = "Win32_Storage_FileSystem")]
pub trait IFileSystemBindData_Impl: windows_core::IUnknownImpl {
    fn SetFindData(&self, pfd: *const super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::Result<()>;
    fn GetFindData(&self, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Storage_FileSystem")]
impl IFileSystemBindData_Vtbl {
    pub const fn new<Identity: IFileSystemBindData_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetFindData<Identity: IFileSystemBindData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *const super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSystemBindData_Impl::SetFindData(this, core::mem::transmute_copy(&pfd)).into()
            }
        }
        unsafe extern "system" fn GetFindData<Identity: IFileSystemBindData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSystemBindData_Impl::GetFindData(this, core::mem::transmute_copy(&pfd)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFindData: SetFindData::<Identity, OFFSET>,
            GetFindData: GetFindData::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSystemBindData as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Storage_FileSystem")]
impl windows_core::RuntimeName for IFileSystemBindData {}
windows_core::imp::define_interface!(IFileSystemBindData2, IFileSystemBindData2_Vtbl, 0x3acf075f_71db_4afa_81f0_3fc4fdf2a5b8);
impl core::ops::Deref for IFileSystemBindData2 {
    type Target = IFileSystemBindData;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IFileSystemBindData2, windows_core::IUnknown, IFileSystemBindData);
impl IFileSystemBindData2 {
    pub unsafe fn SetFileID(&self, lifileid: i64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFileID)(windows_core::Interface::as_raw(self), lifileid).ok() }
    }
    pub unsafe fn GetFileID(&self) -> windows_core::Result<i64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFileID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetJunctionCLSID(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetJunctionCLSID)(windows_core::Interface::as_raw(self), clsid).ok() }
    }
    pub unsafe fn GetJunctionCLSID(&self) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetJunctionCLSID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFileSystemBindData2_Vtbl {
    pub base__: IFileSystemBindData_Vtbl,
    pub SetFileID: unsafe extern "system" fn(*mut core::ffi::c_void, i64) -> windows_core::HRESULT,
    pub GetFileID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i64) -> windows_core::HRESULT,
    pub SetJunctionCLSID: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub GetJunctionCLSID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Storage_FileSystem")]
pub trait IFileSystemBindData2_Impl: IFileSystemBindData_Impl {
    fn SetFileID(&self, lifileid: i64) -> windows_core::Result<()>;
    fn GetFileID(&self) -> windows_core::Result<i64>;
    fn SetJunctionCLSID(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetJunctionCLSID(&self) -> windows_core::Result<windows_core::GUID>;
}
#[cfg(feature = "Win32_Storage_FileSystem")]
impl IFileSystemBindData2_Vtbl {
    pub const fn new<Identity: IFileSystemBindData2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetFileID<Identity: IFileSystemBindData2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lifileid: i64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSystemBindData2_Impl::SetFileID(this, core::mem::transmute_copy(&lifileid)).into()
            }
        }
        unsafe extern "system" fn GetFileID<Identity: IFileSystemBindData2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plifileid: *mut i64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileSystemBindData2_Impl::GetFileID(this) {
                    Ok(ok__) => {
                        plifileid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetJunctionCLSID<Identity: IFileSystemBindData2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFileSystemBindData2_Impl::SetJunctionCLSID(this, core::mem::transmute_copy(&clsid)).into()
            }
        }
        unsafe extern "system" fn GetJunctionCLSID<Identity: IFileSystemBindData2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pclsid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFileSystemBindData2_Impl::GetJunctionCLSID(this) {
                    Ok(ok__) => {
                        pclsid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IFileSystemBindData_Vtbl::new::<Identity, OFFSET>(),
            SetFileID: SetFileID::<Identity, OFFSET>,
            GetFileID: GetFileID::<Identity, OFFSET>,
            SetJunctionCLSID: SetJunctionCLSID::<Identity, OFFSET>,
            GetJunctionCLSID: GetJunctionCLSID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFileSystemBindData2 as windows_core::Interface>::IID || iid == &<IFileSystemBindData as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Storage_FileSystem")]
impl windows_core::RuntimeName for IFileSystemBindData2 {}
windows_core::imp::define_interface!(IFolderBandPriv, IFolderBandPriv_Vtbl, 0x47c01f95_e185_412c_b5c5_4f27df965aea);
windows_core::imp::interface_hierarchy!(IFolderBandPriv, windows_core::IUnknown);
impl IFolderBandPriv {
    pub unsafe fn SetCascade(&self, fcascade: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCascade)(windows_core::Interface::as_raw(self), fcascade.into()).ok() }
    }
    pub unsafe fn SetAccelerators(&self, faccelerators: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAccelerators)(windows_core::Interface::as_raw(self), faccelerators.into()).ok() }
    }
    pub unsafe fn SetNoIcons(&self, fnoicons: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNoIcons)(windows_core::Interface::as_raw(self), fnoicons.into()).ok() }
    }
    pub unsafe fn SetNoText(&self, fnotext: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNoText)(windows_core::Interface::as_raw(self), fnotext.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFolderBandPriv_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetCascade: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub SetAccelerators: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub SetNoIcons: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub SetNoText: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait IFolderBandPriv_Impl: windows_core::IUnknownImpl {
    fn SetCascade(&self, fcascade: windows_core::BOOL) -> windows_core::Result<()>;
    fn SetAccelerators(&self, faccelerators: windows_core::BOOL) -> windows_core::Result<()>;
    fn SetNoIcons(&self, fnoicons: windows_core::BOOL) -> windows_core::Result<()>;
    fn SetNoText(&self, fnotext: windows_core::BOOL) -> windows_core::Result<()>;
}
impl IFolderBandPriv_Vtbl {
    pub const fn new<Identity: IFolderBandPriv_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetCascade<Identity: IFolderBandPriv_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fcascade: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderBandPriv_Impl::SetCascade(this, core::mem::transmute_copy(&fcascade)).into()
            }
        }
        unsafe extern "system" fn SetAccelerators<Identity: IFolderBandPriv_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, faccelerators: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderBandPriv_Impl::SetAccelerators(this, core::mem::transmute_copy(&faccelerators)).into()
            }
        }
        unsafe extern "system" fn SetNoIcons<Identity: IFolderBandPriv_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fnoicons: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderBandPriv_Impl::SetNoIcons(this, core::mem::transmute_copy(&fnoicons)).into()
            }
        }
        unsafe extern "system" fn SetNoText<Identity: IFolderBandPriv_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fnotext: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderBandPriv_Impl::SetNoText(this, core::mem::transmute_copy(&fnotext)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetCascade: SetCascade::<Identity, OFFSET>,
            SetAccelerators: SetAccelerators::<Identity, OFFSET>,
            SetNoIcons: SetNoIcons::<Identity, OFFSET>,
            SetNoText: SetNoText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderBandPriv as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFolderBandPriv {}
windows_core::imp::define_interface!(IFolderFilter, IFolderFilter_Vtbl, 0x9cc22886_dc8e_11d2_b1d0_00c04f8eeb3e);
windows_core::imp::interface_hierarchy!(IFolderFilter, windows_core::IUnknown);
impl IFolderFilter {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn ShouldShow<P0>(&self, psf: P0, pidlfolder: *const Common::ITEMIDLIST, pidlitem: *const Common::ITEMIDLIST) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellFolder>,
    {
        unsafe { (windows_core::Interface::vtable(self).ShouldShow)(windows_core::Interface::as_raw(self), psf.param().abi(), pidlfolder, pidlitem).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetEnumFlags<P0>(&self, psf: P0, pidlfolder: *const Common::ITEMIDLIST, phwnd: *mut super::super::Foundation::HWND, pgrfflags: *mut u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellFolder>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEnumFlags)(windows_core::Interface::as_raw(self), psf.param().abi(), pidlfolder, phwnd as _, pgrfflags as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFolderFilter_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub ShouldShow: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    ShouldShow: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetEnumFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut super::super::Foundation::HWND, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetEnumFlags: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IFolderFilter_Impl: windows_core::IUnknownImpl {
    fn ShouldShow(&self, psf: windows_core::Ref<IShellFolder>, pidlfolder: *const Common::ITEMIDLIST, pidlitem: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetEnumFlags(&self, psf: windows_core::Ref<IShellFolder>, pidlfolder: *const Common::ITEMIDLIST, phwnd: *mut super::super::Foundation::HWND, pgrfflags: *mut u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IFolderFilter_Vtbl {
    pub const fn new<Identity: IFolderFilter_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ShouldShow<Identity: IFolderFilter_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, pidlitem: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderFilter_Impl::ShouldShow(this, core::mem::transmute_copy(&psf), core::mem::transmute_copy(&pidlfolder), core::mem::transmute_copy(&pidlitem)).into()
            }
        }
        unsafe extern "system" fn GetEnumFlags<Identity: IFolderFilter_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, phwnd: *mut super::super::Foundation::HWND, pgrfflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderFilter_Impl::GetEnumFlags(this, core::mem::transmute_copy(&psf), core::mem::transmute_copy(&pidlfolder), core::mem::transmute_copy(&phwnd), core::mem::transmute_copy(&pgrfflags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ShouldShow: ShouldShow::<Identity, OFFSET>,
            GetEnumFlags: GetEnumFlags::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderFilter as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IFolderFilter {}
windows_core::imp::define_interface!(IFolderFilterSite, IFolderFilterSite_Vtbl, 0xc0a651f5_b48b_11d2_b5ed_006097c686f6);
windows_core::imp::interface_hierarchy!(IFolderFilterSite, windows_core::IUnknown);
impl IFolderFilterSite {
    pub unsafe fn SetFilter<P0>(&self, punk: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFilter)(windows_core::Interface::as_raw(self), punk.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFolderFilterSite_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetFilter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IFolderFilterSite_Impl: windows_core::IUnknownImpl {
    fn SetFilter(&self, punk: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl IFolderFilterSite_Vtbl {
    pub const fn new<Identity: IFolderFilterSite_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetFilter<Identity: IFolderFilterSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderFilterSite_Impl::SetFilter(this, core::mem::transmute_copy(&punk)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetFilter: SetFilter::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderFilterSite as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFolderFilterSite {}
windows_core::imp::define_interface!(IFolderView, IFolderView_Vtbl, 0xcde725b0_ccc9_4519_917e_325d72fab4ce);
windows_core::imp::interface_hierarchy!(IFolderView, windows_core::IUnknown);
impl IFolderView {
    pub unsafe fn GetCurrentViewMode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentViewMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentViewMode(&self, viewmode: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentViewMode)(windows_core::Interface::as_raw(self), viewmode).ok() }
    }
    pub unsafe fn GetFolder<T>(&self) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetFolder)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn Item(&self, iitemindex: i32) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Item)(windows_core::Interface::as_raw(self), iitemindex, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ItemCount(&self, uflags: _SVGIO) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ItemCount)(windows_core::Interface::as_raw(self), uflags.0 as _, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Items<T>(&self, uflags: _SVGIO) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).Items)(windows_core::Interface::as_raw(self), uflags.0 as _, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetSelectionMarkedItem(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSelectionMarkedItem)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFocusedItem(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFocusedItem)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetItemPosition(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<super::super::Foundation::POINT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemPosition)(windows_core::Interface::as_raw(self), pidl, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSpacing(&self, ppt: *mut super::super::Foundation::POINT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSpacing)(windows_core::Interface::as_raw(self), ppt as _).ok() }
    }
    pub unsafe fn GetDefaultSpacing(&self) -> windows_core::Result<super::super::Foundation::POINT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDefaultSpacing)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetAutoArrange(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetAutoArrange)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SelectItem(&self, iitem: i32, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SelectItem)(windows_core::Interface::as_raw(self), iitem, dwflags).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SelectAndPositionItems(&self, cidl: u32, apidl: *const *const Common::ITEMIDLIST, apt: Option<*const super::super::Foundation::POINT>, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SelectAndPositionItems)(windows_core::Interface::as_raw(self), cidl, apidl, apt.unwrap_or(core::mem::zeroed()) as _, dwflags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFolderView_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCurrentViewMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentViewMode: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub Item: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    Item: usize,
    pub ItemCount: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut i32) -> windows_core::HRESULT,
    pub Items: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSelectionMarkedItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub GetFocusedItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetItemPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut super::super::Foundation::POINT) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetItemPosition: usize,
    pub GetSpacing: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::POINT) -> windows_core::HRESULT,
    pub GetDefaultSpacing: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::POINT) -> windows_core::HRESULT,
    pub GetAutoArrange: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SelectItem: unsafe extern "system" fn(*mut core::ffi::c_void, i32, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SelectAndPositionItems: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const *const Common::ITEMIDLIST, *const super::super::Foundation::POINT, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SelectAndPositionItems: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IFolderView_Impl: windows_core::IUnknownImpl {
    fn GetCurrentViewMode(&self) -> windows_core::Result<u32>;
    fn SetCurrentViewMode(&self, viewmode: u32) -> windows_core::Result<()>;
    fn GetFolder(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn Item(&self, iitemindex: i32) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn ItemCount(&self, uflags: &_SVGIO) -> windows_core::Result<i32>;
    fn Items(&self, uflags: &_SVGIO, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetSelectionMarkedItem(&self) -> windows_core::Result<i32>;
    fn GetFocusedItem(&self) -> windows_core::Result<i32>;
    fn GetItemPosition(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<super::super::Foundation::POINT>;
    fn GetSpacing(&self, ppt: *mut super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn GetDefaultSpacing(&self) -> windows_core::Result<super::super::Foundation::POINT>;
    fn GetAutoArrange(&self) -> windows_core::Result<()>;
    fn SelectItem(&self, iitem: i32, dwflags: u32) -> windows_core::Result<()>;
    fn SelectAndPositionItems(&self, cidl: u32, apidl: *const *const Common::ITEMIDLIST, apt: *const super::super::Foundation::POINT, dwflags: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IFolderView_Vtbl {
    pub const fn new<Identity: IFolderView_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCurrentViewMode<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pviewmode: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView_Impl::GetCurrentViewMode(this) {
                    Ok(ok__) => {
                        pviewmode.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentViewMode<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, viewmode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView_Impl::SetCurrentViewMode(this, core::mem::transmute_copy(&viewmode)).into()
            }
        }
        unsafe extern "system" fn GetFolder<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView_Impl::GetFolder(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn Item<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iitemindex: i32, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView_Impl::Item(this, core::mem::transmute_copy(&iitemindex)) {
                    Ok(ok__) => {
                        ppidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ItemCount<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uflags: u32, pcitems: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView_Impl::ItemCount(this, core::mem::transmute(&uflags)) {
                    Ok(ok__) => {
                        pcitems.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Items<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uflags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView_Impl::Items(this, core::mem::transmute(&uflags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetSelectionMarkedItem<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, piitem: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView_Impl::GetSelectionMarkedItem(this) {
                    Ok(ok__) => {
                        piitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFocusedItem<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, piitem: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView_Impl::GetFocusedItem(this) {
                    Ok(ok__) => {
                        piitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItemPosition<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, ppt: *mut super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView_Impl::GetItemPosition(this, core::mem::transmute_copy(&pidl)) {
                    Ok(ok__) => {
                        ppt.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSpacing<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *mut super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView_Impl::GetSpacing(this, core::mem::transmute_copy(&ppt)).into()
            }
        }
        unsafe extern "system" fn GetDefaultSpacing<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *mut super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView_Impl::GetDefaultSpacing(this) {
                    Ok(ok__) => {
                        ppt.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetAutoArrange<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView_Impl::GetAutoArrange(this).into()
            }
        }
        unsafe extern "system" fn SelectItem<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iitem: i32, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView_Impl::SelectItem(this, core::mem::transmute_copy(&iitem), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn SelectAndPositionItems<Identity: IFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cidl: u32, apidl: *const *const Common::ITEMIDLIST, apt: *const super::super::Foundation::POINT, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView_Impl::SelectAndPositionItems(this, core::mem::transmute_copy(&cidl), core::mem::transmute_copy(&apidl), core::mem::transmute_copy(&apt), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCurrentViewMode: GetCurrentViewMode::<Identity, OFFSET>,
            SetCurrentViewMode: SetCurrentViewMode::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            Item: Item::<Identity, OFFSET>,
            ItemCount: ItemCount::<Identity, OFFSET>,
            Items: Items::<Identity, OFFSET>,
            GetSelectionMarkedItem: GetSelectionMarkedItem::<Identity, OFFSET>,
            GetFocusedItem: GetFocusedItem::<Identity, OFFSET>,
            GetItemPosition: GetItemPosition::<Identity, OFFSET>,
            GetSpacing: GetSpacing::<Identity, OFFSET>,
            GetDefaultSpacing: GetDefaultSpacing::<Identity, OFFSET>,
            GetAutoArrange: GetAutoArrange::<Identity, OFFSET>,
            SelectItem: SelectItem::<Identity, OFFSET>,
            SelectAndPositionItems: SelectAndPositionItems::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderView as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IFolderView {}
windows_core::imp::define_interface!(IFolderView2, IFolderView2_Vtbl, 0x1af3a467_214f_4298_908e_06b03e0b39f9);
impl core::ops::Deref for IFolderView2 {
    type Target = IFolderView;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IFolderView2, windows_core::IUnknown, IFolderView);
impl IFolderView2 {
    pub unsafe fn SetGroupBy(&self, key: *const super::super::Foundation::PROPERTYKEY, fascending: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetGroupBy)(windows_core::Interface::as_raw(self), key, fascending.into()).ok() }
    }
    pub unsafe fn GetGroupBy(&self, pkey: *mut super::super::Foundation::PROPERTYKEY, pfascending: Option<*mut windows_core::BOOL>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetGroupBy)(windows_core::Interface::as_raw(self), pkey as _, pfascending.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn SetViewProperty(&self, pidl: *const Common::ITEMIDLIST, propkey: *const super::super::Foundation::PROPERTYKEY, propvar: *const super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetViewProperty)(windows_core::Interface::as_raw(self), pidl, propkey, core::mem::transmute(propvar)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn GetViewProperty(&self, pidl: *const Common::ITEMIDLIST, propkey: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Com::StructuredStorage::PROPVARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetViewProperty)(windows_core::Interface::as_raw(self), pidl, propkey, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetTileViewProperties<P1>(&self, pidl: *const Common::ITEMIDLIST, pszproplist: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTileViewProperties)(windows_core::Interface::as_raw(self), pidl, pszproplist.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetExtendedTileViewProperties<P1>(&self, pidl: *const Common::ITEMIDLIST, pszproplist: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetExtendedTileViewProperties)(windows_core::Interface::as_raw(self), pidl, pszproplist.param().abi()).ok() }
    }
    pub unsafe fn SetText<P1>(&self, itype: FVTEXTTYPE, pwsztext: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetText)(windows_core::Interface::as_raw(self), itype, pwsztext.param().abi()).ok() }
    }
    pub unsafe fn SetCurrentFolderFlags(&self, dwmask: u32, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentFolderFlags)(windows_core::Interface::as_raw(self), dwmask, dwflags).ok() }
    }
    pub unsafe fn GetCurrentFolderFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentFolderFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSortColumnCount(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSortColumnCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetSortColumns(&self, rgsortcolumns: &[SORTCOLUMN]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSortColumns)(windows_core::Interface::as_raw(self), core::mem::transmute(rgsortcolumns.as_ptr()), rgsortcolumns.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn GetSortColumns(&self, rgsortcolumns: &mut [SORTCOLUMN]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSortColumns)(windows_core::Interface::as_raw(self), core::mem::transmute(rgsortcolumns.as_ptr()), rgsortcolumns.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn GetItem<T>(&self, iitem: i32) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetItem)(windows_core::Interface::as_raw(self), iitem, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetVisibleItem(&self, istart: i32, fprevious: bool) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetVisibleItem)(windows_core::Interface::as_raw(self), istart, fprevious.into(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSelectedItem(&self, istart: i32) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSelectedItem)(windows_core::Interface::as_raw(self), istart, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSelection(&self, fnoneimpliesfolder: bool) -> windows_core::Result<IShellItemArray> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSelection)(windows_core::Interface::as_raw(self), fnoneimpliesfolder.into(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetSelectionState(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSelectionState)(windows_core::Interface::as_raw(self), pidl, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn InvokeVerbOnSelection<P0>(&self, pszverb: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).InvokeVerbOnSelection)(windows_core::Interface::as_raw(self), pszverb.param().abi()).ok() }
    }
    pub unsafe fn SetViewModeAndIconSize(&self, uviewmode: FOLDERVIEWMODE, iimagesize: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetViewModeAndIconSize)(windows_core::Interface::as_raw(self), uviewmode, iimagesize).ok() }
    }
    pub unsafe fn GetViewModeAndIconSize(&self, puviewmode: *mut FOLDERVIEWMODE, piimagesize: *mut i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetViewModeAndIconSize)(windows_core::Interface::as_raw(self), puviewmode as _, piimagesize as _).ok() }
    }
    pub unsafe fn SetGroupSubsetCount(&self, cvisiblerows: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetGroupSubsetCount)(windows_core::Interface::as_raw(self), cvisiblerows).ok() }
    }
    pub unsafe fn GetGroupSubsetCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetGroupSubsetCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRedraw(&self, fredrawon: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRedraw)(windows_core::Interface::as_raw(self), fredrawon.into()).ok() }
    }
    pub unsafe fn IsMoveInSameFolder(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsMoveInSameFolder)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DoRename(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DoRename)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFolderView2_Vtbl {
    pub base__: IFolderView_Vtbl,
    pub SetGroupBy: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, windows_core::BOOL) -> windows_core::HRESULT,
    pub GetGroupBy: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::PROPERTYKEY, *mut windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
    pub SetViewProperty: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *const super::super::Foundation::PROPERTYKEY, *const super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common")))]
    SetViewProperty: usize,
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
    pub GetViewProperty: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *const super::super::Foundation::PROPERTYKEY, *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common")))]
    GetViewProperty: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetTileViewProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetTileViewProperties: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetExtendedTileViewProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetExtendedTileViewProperties: usize,
    pub SetText: unsafe extern "system" fn(*mut core::ffi::c_void, FVTEXTTYPE, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetCurrentFolderFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetCurrentFolderFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSortColumnCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetSortColumns: unsafe extern "system" fn(*mut core::ffi::c_void, *const SORTCOLUMN, i32) -> windows_core::HRESULT,
    pub GetSortColumns: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SORTCOLUMN, i32) -> windows_core::HRESULT,
    pub GetItem: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetVisibleItem: unsafe extern "system" fn(*mut core::ffi::c_void, i32, windows_core::BOOL, *mut i32) -> windows_core::HRESULT,
    pub GetSelectedItem: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut i32) -> windows_core::HRESULT,
    pub GetSelection: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetSelectionState: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetSelectionState: usize,
    pub InvokeVerbOnSelection: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub SetViewModeAndIconSize: unsafe extern "system" fn(*mut core::ffi::c_void, FOLDERVIEWMODE, i32) -> windows_core::HRESULT,
    pub GetViewModeAndIconSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut FOLDERVIEWMODE, *mut i32) -> windows_core::HRESULT,
    pub SetGroupSubsetCount: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetGroupSubsetCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetRedraw: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub IsMoveInSameFolder: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DoRename: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
pub trait IFolderView2_Impl: IFolderView_Impl {
    fn SetGroupBy(&self, key: *const super::super::Foundation::PROPERTYKEY, fascending: windows_core::BOOL) -> windows_core::Result<()>;
    fn GetGroupBy(&self, pkey: *mut super::super::Foundation::PROPERTYKEY, pfascending: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn SetViewProperty(&self, pidl: *const Common::ITEMIDLIST, propkey: *const super::super::Foundation::PROPERTYKEY, propvar: *const super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::Result<()>;
    fn GetViewProperty(&self, pidl: *const Common::ITEMIDLIST, propkey: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Com::StructuredStorage::PROPVARIANT>;
    fn SetTileViewProperties(&self, pidl: *const Common::ITEMIDLIST, pszproplist: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetExtendedTileViewProperties(&self, pidl: *const Common::ITEMIDLIST, pszproplist: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetText(&self, itype: FVTEXTTYPE, pwsztext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetCurrentFolderFlags(&self, dwmask: u32, dwflags: u32) -> windows_core::Result<()>;
    fn GetCurrentFolderFlags(&self) -> windows_core::Result<u32>;
    fn GetSortColumnCount(&self) -> windows_core::Result<i32>;
    fn SetSortColumns(&self, rgsortcolumns: *const SORTCOLUMN, ccolumns: i32) -> windows_core::Result<()>;
    fn GetSortColumns(&self, rgsortcolumns: *mut SORTCOLUMN, ccolumns: i32) -> windows_core::Result<()>;
    fn GetItem(&self, iitem: i32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetVisibleItem(&self, istart: i32, fprevious: windows_core::BOOL) -> windows_core::Result<i32>;
    fn GetSelectedItem(&self, istart: i32) -> windows_core::Result<i32>;
    fn GetSelection(&self, fnoneimpliesfolder: windows_core::BOOL) -> windows_core::Result<IShellItemArray>;
    fn GetSelectionState(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32>;
    fn InvokeVerbOnSelection(&self, pszverb: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn SetViewModeAndIconSize(&self, uviewmode: FOLDERVIEWMODE, iimagesize: i32) -> windows_core::Result<()>;
    fn GetViewModeAndIconSize(&self, puviewmode: *mut FOLDERVIEWMODE, piimagesize: *mut i32) -> windows_core::Result<()>;
    fn SetGroupSubsetCount(&self, cvisiblerows: u32) -> windows_core::Result<()>;
    fn GetGroupSubsetCount(&self) -> windows_core::Result<u32>;
    fn SetRedraw(&self, fredrawon: windows_core::BOOL) -> windows_core::Result<()>;
    fn IsMoveInSameFolder(&self) -> windows_core::Result<()>;
    fn DoRename(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
impl IFolderView2_Vtbl {
    pub const fn new<Identity: IFolderView2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetGroupBy<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, fascending: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::SetGroupBy(this, core::mem::transmute_copy(&key), core::mem::transmute_copy(&fascending)).into()
            }
        }
        unsafe extern "system" fn GetGroupBy<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkey: *mut super::super::Foundation::PROPERTYKEY, pfascending: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::GetGroupBy(this, core::mem::transmute_copy(&pkey), core::mem::transmute_copy(&pfascending)).into()
            }
        }
        unsafe extern "system" fn SetViewProperty<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, propkey: *const super::super::Foundation::PROPERTYKEY, propvar: *const super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::SetViewProperty(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&propkey), core::mem::transmute_copy(&propvar)).into()
            }
        }
        unsafe extern "system" fn GetViewProperty<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, propkey: *const super::super::Foundation::PROPERTYKEY, ppropvar: *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView2_Impl::GetViewProperty(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&propkey)) {
                    Ok(ok__) => {
                        ppropvar.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetTileViewProperties<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pszproplist: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::SetTileViewProperties(this, core::mem::transmute_copy(&pidl), core::mem::transmute(&pszproplist)).into()
            }
        }
        unsafe extern "system" fn SetExtendedTileViewProperties<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pszproplist: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::SetExtendedTileViewProperties(this, core::mem::transmute_copy(&pidl), core::mem::transmute(&pszproplist)).into()
            }
        }
        unsafe extern "system" fn SetText<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, itype: FVTEXTTYPE, pwsztext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::SetText(this, core::mem::transmute_copy(&itype), core::mem::transmute(&pwsztext)).into()
            }
        }
        unsafe extern "system" fn SetCurrentFolderFlags<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmask: u32, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::SetCurrentFolderFlags(this, core::mem::transmute_copy(&dwmask), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn GetCurrentFolderFlags<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView2_Impl::GetCurrentFolderFlags(this) {
                    Ok(ok__) => {
                        pdwflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSortColumnCount<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pccolumns: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView2_Impl::GetSortColumnCount(this) {
                    Ok(ok__) => {
                        pccolumns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetSortColumns<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgsortcolumns: *const SORTCOLUMN, ccolumns: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::SetSortColumns(this, core::mem::transmute_copy(&rgsortcolumns), core::mem::transmute_copy(&ccolumns)).into()
            }
        }
        unsafe extern "system" fn GetSortColumns<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgsortcolumns: *mut SORTCOLUMN, ccolumns: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::GetSortColumns(this, core::mem::transmute_copy(&rgsortcolumns), core::mem::transmute_copy(&ccolumns)).into()
            }
        }
        unsafe extern "system" fn GetItem<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iitem: i32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::GetItem(this, core::mem::transmute_copy(&iitem), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetVisibleItem<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, istart: i32, fprevious: windows_core::BOOL, piitem: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView2_Impl::GetVisibleItem(this, core::mem::transmute_copy(&istart), core::mem::transmute_copy(&fprevious)) {
                    Ok(ok__) => {
                        piitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSelectedItem<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, istart: i32, piitem: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView2_Impl::GetSelectedItem(this, core::mem::transmute_copy(&istart)) {
                    Ok(ok__) => {
                        piitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSelection<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fnoneimpliesfolder: windows_core::BOOL, ppsia: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView2_Impl::GetSelection(this, core::mem::transmute_copy(&fnoneimpliesfolder)) {
                    Ok(ok__) => {
                        ppsia.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSelectionState<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView2_Impl::GetSelectionState(this, core::mem::transmute_copy(&pidl)) {
                    Ok(ok__) => {
                        pdwflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn InvokeVerbOnSelection<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszverb: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::InvokeVerbOnSelection(this, core::mem::transmute(&pszverb)).into()
            }
        }
        unsafe extern "system" fn SetViewModeAndIconSize<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uviewmode: FOLDERVIEWMODE, iimagesize: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::SetViewModeAndIconSize(this, core::mem::transmute_copy(&uviewmode), core::mem::transmute_copy(&iimagesize)).into()
            }
        }
        unsafe extern "system" fn GetViewModeAndIconSize<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, puviewmode: *mut FOLDERVIEWMODE, piimagesize: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::GetViewModeAndIconSize(this, core::mem::transmute_copy(&puviewmode), core::mem::transmute_copy(&piimagesize)).into()
            }
        }
        unsafe extern "system" fn SetGroupSubsetCount<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cvisiblerows: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::SetGroupSubsetCount(this, core::mem::transmute_copy(&cvisiblerows)).into()
            }
        }
        unsafe extern "system" fn GetGroupSubsetCount<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcvisiblerows: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderView2_Impl::GetGroupSubsetCount(this) {
                    Ok(ok__) => {
                        pcvisiblerows.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRedraw<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fredrawon: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::SetRedraw(this, core::mem::transmute_copy(&fredrawon)).into()
            }
        }
        unsafe extern "system" fn IsMoveInSameFolder<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::IsMoveInSameFolder(this).into()
            }
        }
        unsafe extern "system" fn DoRename<Identity: IFolderView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderView2_Impl::DoRename(this).into()
            }
        }
        Self {
            base__: IFolderView_Vtbl::new::<Identity, OFFSET>(),
            SetGroupBy: SetGroupBy::<Identity, OFFSET>,
            GetGroupBy: GetGroupBy::<Identity, OFFSET>,
            SetViewProperty: SetViewProperty::<Identity, OFFSET>,
            GetViewProperty: GetViewProperty::<Identity, OFFSET>,
            SetTileViewProperties: SetTileViewProperties::<Identity, OFFSET>,
            SetExtendedTileViewProperties: SetExtendedTileViewProperties::<Identity, OFFSET>,
            SetText: SetText::<Identity, OFFSET>,
            SetCurrentFolderFlags: SetCurrentFolderFlags::<Identity, OFFSET>,
            GetCurrentFolderFlags: GetCurrentFolderFlags::<Identity, OFFSET>,
            GetSortColumnCount: GetSortColumnCount::<Identity, OFFSET>,
            SetSortColumns: SetSortColumns::<Identity, OFFSET>,
            GetSortColumns: GetSortColumns::<Identity, OFFSET>,
            GetItem: GetItem::<Identity, OFFSET>,
            GetVisibleItem: GetVisibleItem::<Identity, OFFSET>,
            GetSelectedItem: GetSelectedItem::<Identity, OFFSET>,
            GetSelection: GetSelection::<Identity, OFFSET>,
            GetSelectionState: GetSelectionState::<Identity, OFFSET>,
            InvokeVerbOnSelection: InvokeVerbOnSelection::<Identity, OFFSET>,
            SetViewModeAndIconSize: SetViewModeAndIconSize::<Identity, OFFSET>,
            GetViewModeAndIconSize: GetViewModeAndIconSize::<Identity, OFFSET>,
            SetGroupSubsetCount: SetGroupSubsetCount::<Identity, OFFSET>,
            GetGroupSubsetCount: GetGroupSubsetCount::<Identity, OFFSET>,
            SetRedraw: SetRedraw::<Identity, OFFSET>,
            IsMoveInSameFolder: IsMoveInSameFolder::<Identity, OFFSET>,
            DoRename: DoRename::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderView2 as windows_core::Interface>::IID || iid == &<IFolderView as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IFolderView2 {}
windows_core::imp::define_interface!(IFolderViewHost, IFolderViewHost_Vtbl, 0x1ea58f02_d55a_411d_b09e_9e65ac21605b);
windows_core::imp::interface_hierarchy!(IFolderViewHost, windows_core::IUnknown);
impl IFolderViewHost {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P1>(&self, hwndparent: super::super::Foundation::HWND, pdo: P1, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), hwndparent, pdo.param().abi(), prc).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFolderViewHost_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void, *const super::super::Foundation::RECT) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IFolderViewHost_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, hwndparent: super::super::Foundation::HWND, pdo: windows_core::Ref<super::super::System::Com::IDataObject>, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IFolderViewHost_Vtbl {
    pub const fn new<Identity: IFolderViewHost_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IFolderViewHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, pdo: *mut core::ffi::c_void, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderViewHost_Impl::Initialize(this, core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&pdo), core::mem::transmute_copy(&prc)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderViewHost as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IFolderViewHost {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IFolderViewOC, IFolderViewOC_Vtbl, 0x9ba05970_f6a8_11cf_a442_00a0c90a8f39);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IFolderViewOC {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IFolderViewOC, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IFolderViewOC {
    pub unsafe fn SetFolderView<P0>(&self, pdisp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IDispatch>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFolderView)(windows_core::Interface::as_raw(self), pdisp.param().abi()).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IFolderViewOC_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub SetFolderView: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IFolderViewOC_Impl: super::super::System::Com::IDispatch_Impl {
    fn SetFolderView(&self, pdisp: windows_core::Ref<super::super::System::Com::IDispatch>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IFolderViewOC_Vtbl {
    pub const fn new<Identity: IFolderViewOC_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetFolderView<Identity: IFolderViewOC_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdisp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderViewOC_Impl::SetFolderView(this, core::mem::transmute_copy(&pdisp)).into()
            }
        }
        Self { base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(), SetFolderView: SetFolderView::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderViewOC as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IFolderViewOC {}
windows_core::imp::define_interface!(IFolderViewOptions, IFolderViewOptions_Vtbl, 0x3cc974d2_b302_4d36_ad3e_06d93f695d3f);
windows_core::imp::interface_hierarchy!(IFolderViewOptions, windows_core::IUnknown);
impl IFolderViewOptions {
    pub unsafe fn SetFolderViewOptions(&self, fvomask: FOLDERVIEWOPTIONS, fvoflags: FOLDERVIEWOPTIONS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFolderViewOptions)(windows_core::Interface::as_raw(self), fvomask, fvoflags).ok() }
    }
    pub unsafe fn GetFolderViewOptions(&self) -> windows_core::Result<FOLDERVIEWOPTIONS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFolderViewOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFolderViewOptions_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetFolderViewOptions: unsafe extern "system" fn(*mut core::ffi::c_void, FOLDERVIEWOPTIONS, FOLDERVIEWOPTIONS) -> windows_core::HRESULT,
    pub GetFolderViewOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut FOLDERVIEWOPTIONS) -> windows_core::HRESULT,
}
pub trait IFolderViewOptions_Impl: windows_core::IUnknownImpl {
    fn SetFolderViewOptions(&self, fvomask: FOLDERVIEWOPTIONS, fvoflags: FOLDERVIEWOPTIONS) -> windows_core::Result<()>;
    fn GetFolderViewOptions(&self) -> windows_core::Result<FOLDERVIEWOPTIONS>;
}
impl IFolderViewOptions_Vtbl {
    pub const fn new<Identity: IFolderViewOptions_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetFolderViewOptions<Identity: IFolderViewOptions_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fvomask: FOLDERVIEWOPTIONS, fvoflags: FOLDERVIEWOPTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderViewOptions_Impl::SetFolderViewOptions(this, core::mem::transmute_copy(&fvomask), core::mem::transmute_copy(&fvoflags)).into()
            }
        }
        unsafe extern "system" fn GetFolderViewOptions<Identity: IFolderViewOptions_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfvoflags: *mut FOLDERVIEWOPTIONS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderViewOptions_Impl::GetFolderViewOptions(this) {
                    Ok(ok__) => {
                        pfvoflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetFolderViewOptions: SetFolderViewOptions::<Identity, OFFSET>,
            GetFolderViewOptions: GetFolderViewOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderViewOptions as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFolderViewOptions {}
windows_core::imp::define_interface!(IFolderViewSettings, IFolderViewSettings_Vtbl, 0xae8c987d_8797_4ed3_be72_2a47dd938db0);
windows_core::imp::interface_hierarchy!(IFolderViewSettings, windows_core::IUnknown);
impl IFolderViewSettings {
    pub unsafe fn GetColumnPropertyList<T>(&self) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetColumnPropertyList)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetGroupByProperty(&self, pkey: *mut super::super::Foundation::PROPERTYKEY, pfgroupascending: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetGroupByProperty)(windows_core::Interface::as_raw(self), pkey as _, pfgroupascending as _).ok() }
    }
    pub unsafe fn GetViewMode(&self) -> windows_core::Result<FOLDERLOGICALVIEWMODE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetViewMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetIconSize(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIconSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFolderFlags(&self, pfoldermask: *mut FOLDERFLAGS, pfolderflags: *mut FOLDERFLAGS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFolderFlags)(windows_core::Interface::as_raw(self), pfoldermask as _, pfolderflags as _).ok() }
    }
    pub unsafe fn GetSortColumns(&self, rgsortcolumns: &mut [SORTCOLUMN], pccolumnsout: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSortColumns)(windows_core::Interface::as_raw(self), core::mem::transmute(rgsortcolumns.as_ptr()), rgsortcolumns.len().try_into().unwrap(), pccolumnsout as _).ok() }
    }
    pub unsafe fn GetGroupSubsetCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetGroupSubsetCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFolderViewSettings_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetColumnPropertyList: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetGroupByProperty: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::PROPERTYKEY, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub GetViewMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut FOLDERLOGICALVIEWMODE) -> windows_core::HRESULT,
    pub GetIconSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetFolderFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut FOLDERFLAGS, *mut FOLDERFLAGS) -> windows_core::HRESULT,
    pub GetSortColumns: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SORTCOLUMN, u32, *mut u32) -> windows_core::HRESULT,
    pub GetGroupSubsetCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait IFolderViewSettings_Impl: windows_core::IUnknownImpl {
    fn GetColumnPropertyList(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetGroupByProperty(&self, pkey: *mut super::super::Foundation::PROPERTYKEY, pfgroupascending: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn GetViewMode(&self) -> windows_core::Result<FOLDERLOGICALVIEWMODE>;
    fn GetIconSize(&self) -> windows_core::Result<u32>;
    fn GetFolderFlags(&self, pfoldermask: *mut FOLDERFLAGS, pfolderflags: *mut FOLDERFLAGS) -> windows_core::Result<()>;
    fn GetSortColumns(&self, rgsortcolumns: *mut SORTCOLUMN, ccolumnsin: u32, pccolumnsout: *mut u32) -> windows_core::Result<()>;
    fn GetGroupSubsetCount(&self) -> windows_core::Result<u32>;
}
impl IFolderViewSettings_Vtbl {
    pub const fn new<Identity: IFolderViewSettings_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetColumnPropertyList<Identity: IFolderViewSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderViewSettings_Impl::GetColumnPropertyList(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetGroupByProperty<Identity: IFolderViewSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkey: *mut super::super::Foundation::PROPERTYKEY, pfgroupascending: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderViewSettings_Impl::GetGroupByProperty(this, core::mem::transmute_copy(&pkey), core::mem::transmute_copy(&pfgroupascending)).into()
            }
        }
        unsafe extern "system" fn GetViewMode<Identity: IFolderViewSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plvm: *mut FOLDERLOGICALVIEWMODE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderViewSettings_Impl::GetViewMode(this) {
                    Ok(ok__) => {
                        plvm.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetIconSize<Identity: IFolderViewSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, puiconsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderViewSettings_Impl::GetIconSize(this) {
                    Ok(ok__) => {
                        puiconsize.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFolderFlags<Identity: IFolderViewSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfoldermask: *mut FOLDERFLAGS, pfolderflags: *mut FOLDERFLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderViewSettings_Impl::GetFolderFlags(this, core::mem::transmute_copy(&pfoldermask), core::mem::transmute_copy(&pfolderflags)).into()
            }
        }
        unsafe extern "system" fn GetSortColumns<Identity: IFolderViewSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgsortcolumns: *mut SORTCOLUMN, ccolumnsin: u32, pccolumnsout: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFolderViewSettings_Impl::GetSortColumns(this, core::mem::transmute_copy(&rgsortcolumns), core::mem::transmute_copy(&ccolumnsin), core::mem::transmute_copy(&pccolumnsout)).into()
            }
        }
        unsafe extern "system" fn GetGroupSubsetCount<Identity: IFolderViewSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcvisiblerows: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFolderViewSettings_Impl::GetGroupSubsetCount(this) {
                    Ok(ok__) => {
                        pcvisiblerows.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetColumnPropertyList: GetColumnPropertyList::<Identity, OFFSET>,
            GetGroupByProperty: GetGroupByProperty::<Identity, OFFSET>,
            GetViewMode: GetViewMode::<Identity, OFFSET>,
            GetIconSize: GetIconSize::<Identity, OFFSET>,
            GetFolderFlags: GetFolderFlags::<Identity, OFFSET>,
            GetSortColumns: GetSortColumns::<Identity, OFFSET>,
            GetGroupSubsetCount: GetGroupSubsetCount::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFolderViewSettings as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFolderViewSettings {}
windows_core::imp::define_interface!(IFrameworkInputPane, IFrameworkInputPane_Vtbl, 0x5752238b_24f0_495a_82f1_2fd593056796);
windows_core::imp::interface_hierarchy!(IFrameworkInputPane, windows_core::IUnknown);
impl IFrameworkInputPane {
    pub unsafe fn Advise<P0, P1>(&self, pwindow: P0, phandler: P1) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
        P1: windows_core::Param<IFrameworkInputPaneHandler>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Advise)(windows_core::Interface::as_raw(self), pwindow.param().abi(), phandler.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn AdviseWithHWND<P1>(&self, hwnd: super::super::Foundation::HWND, phandler: P1) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<IFrameworkInputPaneHandler>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AdviseWithHWND)(windows_core::Interface::as_raw(self), hwnd, phandler.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Unadvise)(windows_core::Interface::as_raw(self), dwcookie).ok() }
    }
    pub unsafe fn Location(&self) -> windows_core::Result<super::super::Foundation::RECT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Location)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFrameworkInputPane_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Advise: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub AdviseWithHWND: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Location: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::RECT) -> windows_core::HRESULT,
}
pub trait IFrameworkInputPane_Impl: windows_core::IUnknownImpl {
    fn Advise(&self, pwindow: windows_core::Ref<windows_core::IUnknown>, phandler: windows_core::Ref<IFrameworkInputPaneHandler>) -> windows_core::Result<u32>;
    fn AdviseWithHWND(&self, hwnd: super::super::Foundation::HWND, phandler: windows_core::Ref<IFrameworkInputPaneHandler>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn Location(&self) -> windows_core::Result<super::super::Foundation::RECT>;
}
impl IFrameworkInputPane_Vtbl {
    pub const fn new<Identity: IFrameworkInputPane_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Advise<Identity: IFrameworkInputPane_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwindow: *mut core::ffi::c_void, phandler: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFrameworkInputPane_Impl::Advise(this, core::mem::transmute_copy(&pwindow), core::mem::transmute_copy(&phandler)) {
                    Ok(ok__) => {
                        pdwcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AdviseWithHWND<Identity: IFrameworkInputPane_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, phandler: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFrameworkInputPane_Impl::AdviseWithHWND(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&phandler)) {
                    Ok(ok__) => {
                        pdwcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Unadvise<Identity: IFrameworkInputPane_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFrameworkInputPane_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
            }
        }
        unsafe extern "system" fn Location<Identity: IFrameworkInputPane_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prcinputpanescreenlocation: *mut super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IFrameworkInputPane_Impl::Location(this) {
                    Ok(ok__) => {
                        prcinputpanescreenlocation.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Advise: Advise::<Identity, OFFSET>,
            AdviseWithHWND: AdviseWithHWND::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            Location: Location::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFrameworkInputPane as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFrameworkInputPane {}
windows_core::imp::define_interface!(IFrameworkInputPaneHandler, IFrameworkInputPaneHandler_Vtbl, 0x226c537b_1e76_4d9e_a760_33db29922f18);
windows_core::imp::interface_hierarchy!(IFrameworkInputPaneHandler, windows_core::IUnknown);
impl IFrameworkInputPaneHandler {
    pub unsafe fn Showing(&self, prcinputpanescreenlocation: *const super::super::Foundation::RECT, fensurefocusedelementinview: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Showing)(windows_core::Interface::as_raw(self), prcinputpanescreenlocation, fensurefocusedelementinview.into()).ok() }
    }
    pub unsafe fn Hiding(&self, fensurefocusedelementinview: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Hiding)(windows_core::Interface::as_raw(self), fensurefocusedelementinview.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IFrameworkInputPaneHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Showing: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::RECT, windows_core::BOOL) -> windows_core::HRESULT,
    pub Hiding: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait IFrameworkInputPaneHandler_Impl: windows_core::IUnknownImpl {
    fn Showing(&self, prcinputpanescreenlocation: *const super::super::Foundation::RECT, fensurefocusedelementinview: windows_core::BOOL) -> windows_core::Result<()>;
    fn Hiding(&self, fensurefocusedelementinview: windows_core::BOOL) -> windows_core::Result<()>;
}
impl IFrameworkInputPaneHandler_Vtbl {
    pub const fn new<Identity: IFrameworkInputPaneHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Showing<Identity: IFrameworkInputPaneHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prcinputpanescreenlocation: *const super::super::Foundation::RECT, fensurefocusedelementinview: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFrameworkInputPaneHandler_Impl::Showing(this, core::mem::transmute_copy(&prcinputpanescreenlocation), core::mem::transmute_copy(&fensurefocusedelementinview)).into()
            }
        }
        unsafe extern "system" fn Hiding<Identity: IFrameworkInputPaneHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fensurefocusedelementinview: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IFrameworkInputPaneHandler_Impl::Hiding(this, core::mem::transmute_copy(&fensurefocusedelementinview)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Showing: Showing::<Identity, OFFSET>, Hiding: Hiding::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IFrameworkInputPaneHandler as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IFrameworkInputPaneHandler {}
windows_core::imp::define_interface!(IGetServiceIds, IGetServiceIds_Vtbl, 0x4a073526_6103_4e21_b7bc_f519d1524e5d);
windows_core::imp::interface_hierarchy!(IGetServiceIds, windows_core::IUnknown);
impl IGetServiceIds {
    pub unsafe fn GetServiceIds(&self, serviceidcount: *mut u32, serviceids: *mut *mut windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetServiceIds)(windows_core::Interface::as_raw(self), serviceidcount as _, serviceids as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IGetServiceIds_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetServiceIds: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut *mut windows_core::GUID) -> windows_core::HRESULT,
}
pub trait IGetServiceIds_Impl: windows_core::IUnknownImpl {
    fn GetServiceIds(&self, serviceidcount: *mut u32, serviceids: *mut *mut windows_core::GUID) -> windows_core::Result<()>;
}
impl IGetServiceIds_Vtbl {
    pub const fn new<Identity: IGetServiceIds_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetServiceIds<Identity: IGetServiceIds_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, serviceidcount: *mut u32, serviceids: *mut *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IGetServiceIds_Impl::GetServiceIds(this, core::mem::transmute_copy(&serviceidcount), core::mem::transmute_copy(&serviceids)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetServiceIds: GetServiceIds::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IGetServiceIds as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IGetServiceIds {}
windows_core::imp::define_interface!(IHWEventHandler, IHWEventHandler_Vtbl, 0xc1fb73d0_ec3a_4ba2_b512_8cdb9187b6d1);
windows_core::imp::interface_hierarchy!(IHWEventHandler, windows_core::IUnknown);
impl IHWEventHandler {
    pub unsafe fn Initialize<P0>(&self, pszparams: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pszparams.param().abi()).ok() }
    }
    pub unsafe fn HandleEvent<P0, P1, P2>(&self, pszdeviceid: P0, pszaltdeviceid: P1, pszeventtype: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).HandleEvent)(windows_core::Interface::as_raw(self), pszdeviceid.param().abi(), pszaltdeviceid.param().abi(), pszeventtype.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn HandleEventWithContent<P0, P1, P2, P3, P4>(&self, pszdeviceid: P0, pszaltdeviceid: P1, pszeventtype: P2, pszcontenttypehandler: P3, pdataobject: P4) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).HandleEventWithContent)(windows_core::Interface::as_raw(self), pszdeviceid.param().abi(), pszaltdeviceid.param().abi(), pszeventtype.param().abi(), pszcontenttypehandler.param().abi(), pdataobject.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHWEventHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub HandleEvent: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub HandleEventWithContent: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    HandleEventWithContent: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHWEventHandler_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, pszparams: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn HandleEvent(&self, pszdeviceid: &windows_core::PCWSTR, pszaltdeviceid: &windows_core::PCWSTR, pszeventtype: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn HandleEventWithContent(&self, pszdeviceid: &windows_core::PCWSTR, pszaltdeviceid: &windows_core::PCWSTR, pszeventtype: &windows_core::PCWSTR, pszcontenttypehandler: &windows_core::PCWSTR, pdataobject: windows_core::Ref<super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IHWEventHandler_Vtbl {
    pub const fn new<Identity: IHWEventHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IHWEventHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszparams: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHWEventHandler_Impl::Initialize(this, core::mem::transmute(&pszparams)).into()
            }
        }
        unsafe extern "system" fn HandleEvent<Identity: IHWEventHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdeviceid: windows_core::PCWSTR, pszaltdeviceid: windows_core::PCWSTR, pszeventtype: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHWEventHandler_Impl::HandleEvent(this, core::mem::transmute(&pszdeviceid), core::mem::transmute(&pszaltdeviceid), core::mem::transmute(&pszeventtype)).into()
            }
        }
        unsafe extern "system" fn HandleEventWithContent<Identity: IHWEventHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdeviceid: windows_core::PCWSTR, pszaltdeviceid: windows_core::PCWSTR, pszeventtype: windows_core::PCWSTR, pszcontenttypehandler: windows_core::PCWSTR, pdataobject: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHWEventHandler_Impl::HandleEventWithContent(this, core::mem::transmute(&pszdeviceid), core::mem::transmute(&pszaltdeviceid), core::mem::transmute(&pszeventtype), core::mem::transmute(&pszcontenttypehandler), core::mem::transmute_copy(&pdataobject)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            HandleEvent: HandleEvent::<Identity, OFFSET>,
            HandleEventWithContent: HandleEventWithContent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHWEventHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHWEventHandler {}
windows_core::imp::define_interface!(IHWEventHandler2, IHWEventHandler2_Vtbl, 0xcfcc809f_295d_42e8_9ffc_424b33c487e6);
impl core::ops::Deref for IHWEventHandler2 {
    type Target = IHWEventHandler;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IHWEventHandler2, windows_core::IUnknown, IHWEventHandler);
impl IHWEventHandler2 {
    pub unsafe fn HandleEventWithHWND<P0, P1, P2>(&self, pszdeviceid: P0, pszaltdeviceid: P1, pszeventtype: P2, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).HandleEventWithHWND)(windows_core::Interface::as_raw(self), pszdeviceid.param().abi(), pszaltdeviceid.param().abi(), pszeventtype.param().abi(), hwndowner).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHWEventHandler2_Vtbl {
    pub base__: IHWEventHandler_Vtbl,
    pub HandleEventWithHWND: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, super::super::Foundation::HWND) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHWEventHandler2_Impl: IHWEventHandler_Impl {
    fn HandleEventWithHWND(&self, pszdeviceid: &windows_core::PCWSTR, pszaltdeviceid: &windows_core::PCWSTR, pszeventtype: &windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IHWEventHandler2_Vtbl {
    pub const fn new<Identity: IHWEventHandler2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn HandleEventWithHWND<Identity: IHWEventHandler2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdeviceid: windows_core::PCWSTR, pszaltdeviceid: windows_core::PCWSTR, pszeventtype: windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHWEventHandler2_Impl::HandleEventWithHWND(this, core::mem::transmute(&pszdeviceid), core::mem::transmute(&pszaltdeviceid), core::mem::transmute(&pszeventtype), core::mem::transmute_copy(&hwndowner)).into()
            }
        }
        Self { base__: IHWEventHandler_Vtbl::new::<Identity, OFFSET>(), HandleEventWithHWND: HandleEventWithHWND::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHWEventHandler2 as windows_core::Interface>::IID || iid == &<IHWEventHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHWEventHandler2 {}
windows_core::imp::define_interface!(IHandlerActivationHost, IHandlerActivationHost_Vtbl, 0x35094a87_8bb1_4237_96c6_c417eebdb078);
windows_core::imp::interface_hierarchy!(IHandlerActivationHost, windows_core::IUnknown);
impl IHandlerActivationHost {
    pub unsafe fn BeforeCoCreateInstance<P1, P2>(&self, clsidhandler: *const windows_core::GUID, itemsbeingactivated: P1, handlerinfo: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItemArray>,
        P2: windows_core::Param<IHandlerInfo>,
    {
        unsafe { (windows_core::Interface::vtable(self).BeforeCoCreateInstance)(windows_core::Interface::as_raw(self), clsidhandler, itemsbeingactivated.param().abi(), handlerinfo.param().abi()).ok() }
    }
    pub unsafe fn BeforeCreateProcess<P0, P1, P2>(&self, applicationpath: P0, commandline: P1, handlerinfo: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<IHandlerInfo>,
    {
        unsafe { (windows_core::Interface::vtable(self).BeforeCreateProcess)(windows_core::Interface::as_raw(self), applicationpath.param().abi(), commandline.param().abi(), handlerinfo.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHandlerActivationHost_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub BeforeCoCreateInstance: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub BeforeCreateProcess: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IHandlerActivationHost_Impl: windows_core::IUnknownImpl {
    fn BeforeCoCreateInstance(&self, clsidhandler: *const windows_core::GUID, itemsbeingactivated: windows_core::Ref<IShellItemArray>, handlerinfo: windows_core::Ref<IHandlerInfo>) -> windows_core::Result<()>;
    fn BeforeCreateProcess(&self, applicationpath: &windows_core::PCWSTR, commandline: &windows_core::PCWSTR, handlerinfo: windows_core::Ref<IHandlerInfo>) -> windows_core::Result<()>;
}
impl IHandlerActivationHost_Vtbl {
    pub const fn new<Identity: IHandlerActivationHost_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn BeforeCoCreateInstance<Identity: IHandlerActivationHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsidhandler: *const windows_core::GUID, itemsbeingactivated: *mut core::ffi::c_void, handlerinfo: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHandlerActivationHost_Impl::BeforeCoCreateInstance(this, core::mem::transmute_copy(&clsidhandler), core::mem::transmute_copy(&itemsbeingactivated), core::mem::transmute_copy(&handlerinfo)).into()
            }
        }
        unsafe extern "system" fn BeforeCreateProcess<Identity: IHandlerActivationHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, applicationpath: windows_core::PCWSTR, commandline: windows_core::PCWSTR, handlerinfo: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHandlerActivationHost_Impl::BeforeCreateProcess(this, core::mem::transmute(&applicationpath), core::mem::transmute(&commandline), core::mem::transmute_copy(&handlerinfo)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            BeforeCoCreateInstance: BeforeCoCreateInstance::<Identity, OFFSET>,
            BeforeCreateProcess: BeforeCreateProcess::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHandlerActivationHost as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IHandlerActivationHost {}
windows_core::imp::define_interface!(IHandlerInfo, IHandlerInfo_Vtbl, 0x997706ef_f880_453b_8118_39e1a2d2655a);
windows_core::imp::interface_hierarchy!(IHandlerInfo, windows_core::IUnknown);
impl IHandlerInfo {
    pub unsafe fn GetApplicationDisplayName(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetApplicationDisplayName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetApplicationPublisher(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetApplicationPublisher)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetApplicationIconReference(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetApplicationIconReference)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHandlerInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetApplicationDisplayName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetApplicationPublisher: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetApplicationIconReference: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait IHandlerInfo_Impl: windows_core::IUnknownImpl {
    fn GetApplicationDisplayName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetApplicationPublisher(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetApplicationIconReference(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl IHandlerInfo_Vtbl {
    pub const fn new<Identity: IHandlerInfo_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetApplicationDisplayName<Identity: IHandlerInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHandlerInfo_Impl::GetApplicationDisplayName(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetApplicationPublisher<Identity: IHandlerInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHandlerInfo_Impl::GetApplicationPublisher(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetApplicationIconReference<Identity: IHandlerInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHandlerInfo_Impl::GetApplicationIconReference(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetApplicationDisplayName: GetApplicationDisplayName::<Identity, OFFSET>,
            GetApplicationPublisher: GetApplicationPublisher::<Identity, OFFSET>,
            GetApplicationIconReference: GetApplicationIconReference::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHandlerInfo as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IHandlerInfo {}
windows_core::imp::define_interface!(IHandlerInfo2, IHandlerInfo2_Vtbl, 0x31cca04c_04d3_4ea9_90de_97b15e87a532);
impl core::ops::Deref for IHandlerInfo2 {
    type Target = IHandlerInfo;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IHandlerInfo2, windows_core::IUnknown, IHandlerInfo);
impl IHandlerInfo2 {
    pub unsafe fn GetApplicationId(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetApplicationId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHandlerInfo2_Vtbl {
    pub base__: IHandlerInfo_Vtbl,
    pub GetApplicationId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait IHandlerInfo2_Impl: IHandlerInfo_Impl {
    fn GetApplicationId(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl IHandlerInfo2_Vtbl {
    pub const fn new<Identity: IHandlerInfo2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetApplicationId<Identity: IHandlerInfo2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHandlerInfo2_Impl::GetApplicationId(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IHandlerInfo_Vtbl::new::<Identity, OFFSET>(), GetApplicationId: GetApplicationId::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHandlerInfo2 as windows_core::Interface>::IID || iid == &<IHandlerInfo as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IHandlerInfo2 {}
windows_core::imp::define_interface!(IHlink, IHlink_Vtbl, 0x79eac9c3_baf9_11ce_8c82_00aa004ba90b);
windows_core::imp::interface_hierarchy!(IHlink, windows_core::IUnknown);
impl IHlink {
    pub unsafe fn SetHlinkSite<P0>(&self, pihlsite: P0, dwsitedata: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IHlinkSite>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetHlinkSite)(windows_core::Interface::as_raw(self), pihlsite.param().abi(), dwsitedata).ok() }
    }
    pub unsafe fn GetHlinkSite(&self, ppihlsite: *mut Option<IHlinkSite>, pdwsitedata: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetHlinkSite)(windows_core::Interface::as_raw(self), core::mem::transmute(ppihlsite), pdwsitedata as _).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetMonikerReference<P1, P2>(&self, grfhlsetf: u32, pimktarget: P1, pwzlocation: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IMoniker>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetMonikerReference)(windows_core::Interface::as_raw(self), grfhlsetf, pimktarget.param().abi(), pwzlocation.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetMonikerReference(&self, dwwhichref: u32, ppimktarget: Option<*mut Option<super::super::System::Com::IMoniker>>, ppwzlocation: Option<*mut windows_core::PWSTR>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetMonikerReference)(windows_core::Interface::as_raw(self), dwwhichref, ppimktarget.unwrap_or(core::mem::zeroed()) as _, ppwzlocation.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetStringReference<P1, P2>(&self, grfhlsetf: u32, pwztarget: P1, pwzlocation: P2) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetStringReference)(windows_core::Interface::as_raw(self), grfhlsetf, pwztarget.param().abi(), pwzlocation.param().abi()).ok() }
    }
    pub unsafe fn GetStringReference(&self, dwwhichref: u32, ppwztarget: Option<*mut windows_core::PWSTR>, ppwzlocation: Option<*mut windows_core::PWSTR>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetStringReference)(windows_core::Interface::as_raw(self), dwwhichref, ppwztarget.unwrap_or(core::mem::zeroed()) as _, ppwzlocation.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetFriendlyName<P0>(&self, pwzfriendlyname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFriendlyName)(windows_core::Interface::as_raw(self), pwzfriendlyname.param().abi()).ok() }
    }
    pub unsafe fn GetFriendlyName(&self, grfhlfnamef: u32) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFriendlyName)(windows_core::Interface::as_raw(self), grfhlfnamef, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetTargetFrameName<P0>(&self, pwztargetframename: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTargetFrameName)(windows_core::Interface::as_raw(self), pwztargetframename.param().abi()).ok() }
    }
    pub unsafe fn GetTargetFrameName(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTargetFrameName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetMiscStatus(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMiscStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Navigate<P1, P2, P3>(&self, grfhlnf: u32, pibc: P1, pibsc: P2, pihlbc: P3) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IBindCtx>,
        P2: windows_core::Param<super::super::System::Com::IBindStatusCallback>,
        P3: windows_core::Param<IHlinkBrowseContext>,
    {
        unsafe { (windows_core::Interface::vtable(self).Navigate)(windows_core::Interface::as_raw(self), grfhlnf, pibc.param().abi(), pibsc.param().abi(), pihlbc.param().abi()).ok() }
    }
    pub unsafe fn SetAdditionalParams<P0>(&self, pwzadditionalparams: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAdditionalParams)(windows_core::Interface::as_raw(self), pwzadditionalparams.param().abi()).ok() }
    }
    pub unsafe fn GetAdditionalParams(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAdditionalParams)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHlink_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetHlinkSite: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetHlinkSite: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SetMonikerReference: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetMonikerReference: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetMonikerReference: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetMonikerReference: usize,
    pub SetStringReference: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetStringReference: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut windows_core::PWSTR, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub SetFriendlyName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetFriendlyName: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub SetTargetFrameName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetTargetFrameName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetMiscStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Navigate: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Navigate: usize,
    pub SetAdditionalParams: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetAdditionalParams: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHlink_Impl: windows_core::IUnknownImpl {
    fn SetHlinkSite(&self, pihlsite: windows_core::Ref<IHlinkSite>, dwsitedata: u32) -> windows_core::Result<()>;
    fn GetHlinkSite(&self, ppihlsite: windows_core::OutRef<IHlinkSite>, pdwsitedata: *mut u32) -> windows_core::Result<()>;
    fn SetMonikerReference(&self, grfhlsetf: u32, pimktarget: windows_core::Ref<super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetMonikerReference(&self, dwwhichref: u32, ppimktarget: windows_core::OutRef<super::super::System::Com::IMoniker>, ppwzlocation: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn SetStringReference(&self, grfhlsetf: u32, pwztarget: &windows_core::PCWSTR, pwzlocation: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetStringReference(&self, dwwhichref: u32, ppwztarget: *mut windows_core::PWSTR, ppwzlocation: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn SetFriendlyName(&self, pwzfriendlyname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetFriendlyName(&self, grfhlfnamef: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn SetTargetFrameName(&self, pwztargetframename: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetTargetFrameName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetMiscStatus(&self) -> windows_core::Result<u32>;
    fn Navigate(&self, grfhlnf: u32, pibc: windows_core::Ref<super::super::System::Com::IBindCtx>, pibsc: windows_core::Ref<super::super::System::Com::IBindStatusCallback>, pihlbc: windows_core::Ref<IHlinkBrowseContext>) -> windows_core::Result<()>;
    fn SetAdditionalParams(&self, pwzadditionalparams: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetAdditionalParams(&self) -> windows_core::Result<windows_core::PWSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl IHlink_Vtbl {
    pub const fn new<Identity: IHlink_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetHlinkSite<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pihlsite: *mut core::ffi::c_void, dwsitedata: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlink_Impl::SetHlinkSite(this, core::mem::transmute_copy(&pihlsite), core::mem::transmute_copy(&dwsitedata)).into()
            }
        }
        unsafe extern "system" fn GetHlinkSite<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppihlsite: *mut *mut core::ffi::c_void, pdwsitedata: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlink_Impl::GetHlinkSite(this, core::mem::transmute_copy(&ppihlsite), core::mem::transmute_copy(&pdwsitedata)).into()
            }
        }
        unsafe extern "system" fn SetMonikerReference<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlsetf: u32, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlink_Impl::SetMonikerReference(this, core::mem::transmute_copy(&grfhlsetf), core::mem::transmute_copy(&pimktarget), core::mem::transmute(&pwzlocation)).into()
            }
        }
        unsafe extern "system" fn GetMonikerReference<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwwhichref: u32, ppimktarget: *mut *mut core::ffi::c_void, ppwzlocation: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlink_Impl::GetMonikerReference(this, core::mem::transmute_copy(&dwwhichref), core::mem::transmute_copy(&ppimktarget), core::mem::transmute_copy(&ppwzlocation)).into()
            }
        }
        unsafe extern "system" fn SetStringReference<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlsetf: u32, pwztarget: windows_core::PCWSTR, pwzlocation: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlink_Impl::SetStringReference(this, core::mem::transmute_copy(&grfhlsetf), core::mem::transmute(&pwztarget), core::mem::transmute(&pwzlocation)).into()
            }
        }
        unsafe extern "system" fn GetStringReference<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwwhichref: u32, ppwztarget: *mut windows_core::PWSTR, ppwzlocation: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlink_Impl::GetStringReference(this, core::mem::transmute_copy(&dwwhichref), core::mem::transmute_copy(&ppwztarget), core::mem::transmute_copy(&ppwzlocation)).into()
            }
        }
        unsafe extern "system" fn SetFriendlyName<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzfriendlyname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlink_Impl::SetFriendlyName(this, core::mem::transmute(&pwzfriendlyname)).into()
            }
        }
        unsafe extern "system" fn GetFriendlyName<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlfnamef: u32, ppwzfriendlyname: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlink_Impl::GetFriendlyName(this, core::mem::transmute_copy(&grfhlfnamef)) {
                    Ok(ok__) => {
                        ppwzfriendlyname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetTargetFrameName<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwztargetframename: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlink_Impl::SetTargetFrameName(this, core::mem::transmute(&pwztargetframename)).into()
            }
        }
        unsafe extern "system" fn GetTargetFrameName<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppwztargetframename: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlink_Impl::GetTargetFrameName(this) {
                    Ok(ok__) => {
                        ppwztargetframename.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetMiscStatus<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwstatus: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlink_Impl::GetMiscStatus(this) {
                    Ok(ok__) => {
                        pdwstatus.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Navigate<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlnf: u32, pibc: *mut core::ffi::c_void, pibsc: *mut core::ffi::c_void, pihlbc: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlink_Impl::Navigate(this, core::mem::transmute_copy(&grfhlnf), core::mem::transmute_copy(&pibc), core::mem::transmute_copy(&pibsc), core::mem::transmute_copy(&pihlbc)).into()
            }
        }
        unsafe extern "system" fn SetAdditionalParams<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzadditionalparams: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlink_Impl::SetAdditionalParams(this, core::mem::transmute(&pwzadditionalparams)).into()
            }
        }
        unsafe extern "system" fn GetAdditionalParams<Identity: IHlink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppwzadditionalparams: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlink_Impl::GetAdditionalParams(this) {
                    Ok(ok__) => {
                        ppwzadditionalparams.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetHlinkSite: SetHlinkSite::<Identity, OFFSET>,
            GetHlinkSite: GetHlinkSite::<Identity, OFFSET>,
            SetMonikerReference: SetMonikerReference::<Identity, OFFSET>,
            GetMonikerReference: GetMonikerReference::<Identity, OFFSET>,
            SetStringReference: SetStringReference::<Identity, OFFSET>,
            GetStringReference: GetStringReference::<Identity, OFFSET>,
            SetFriendlyName: SetFriendlyName::<Identity, OFFSET>,
            GetFriendlyName: GetFriendlyName::<Identity, OFFSET>,
            SetTargetFrameName: SetTargetFrameName::<Identity, OFFSET>,
            GetTargetFrameName: GetTargetFrameName::<Identity, OFFSET>,
            GetMiscStatus: GetMiscStatus::<Identity, OFFSET>,
            Navigate: Navigate::<Identity, OFFSET>,
            SetAdditionalParams: SetAdditionalParams::<Identity, OFFSET>,
            GetAdditionalParams: GetAdditionalParams::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHlink as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHlink {}
windows_core::imp::define_interface!(IHlinkBrowseContext, IHlinkBrowseContext_Vtbl, 0x79eac9c7_baf9_11ce_8c82_00aa004ba90b);
windows_core::imp::interface_hierarchy!(IHlinkBrowseContext, windows_core::IUnknown);
impl IHlinkBrowseContext {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Register<P1, P2>(&self, reserved: u32, piunk: P1, pimk: P2) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
        P2: windows_core::Param<super::super::System::Com::IMoniker>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Register)(windows_core::Interface::as_raw(self), reserved, piunk.param().abi(), pimk.param().abi(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetObject<P0>(&self, pimk: P0, fbindifrootregistered: bool) -> windows_core::Result<windows_core::IUnknown>
    where
        P0: windows_core::Param<super::super::System::Com::IMoniker>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetObject)(windows_core::Interface::as_raw(self), pimk.param().abi(), fbindifrootregistered.into(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Revoke(&self, dwregister: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Revoke)(windows_core::Interface::as_raw(self), dwregister).ok() }
    }
    pub unsafe fn SetBrowseWindowInfo(&self, phlbwi: *const HLBWINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetBrowseWindowInfo)(windows_core::Interface::as_raw(self), phlbwi).ok() }
    }
    pub unsafe fn GetBrowseWindowInfo(&self, phlbwi: *mut HLBWINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBrowseWindowInfo)(windows_core::Interface::as_raw(self), phlbwi as _).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetInitialHlink<P0, P1, P2>(&self, pimktarget: P0, pwzlocation: P1, pwzfriendlyname: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IMoniker>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetInitialHlink)(windows_core::Interface::as_raw(self), pimktarget.param().abi(), pwzlocation.param().abi(), pwzfriendlyname.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn OnNavigateHlink<P1, P2, P3>(&self, grfhlnf: u32, pimktarget: P1, pwzlocation: P2, pwzfriendlyname: P3) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<super::super::System::Com::IMoniker>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OnNavigateHlink)(windows_core::Interface::as_raw(self), grfhlnf, pimktarget.param().abi(), pwzlocation.param().abi(), pwzfriendlyname.param().abi(), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn UpdateHlink<P1, P2, P3>(&self, uhlid: u32, pimktarget: P1, pwzlocation: P2, pwzfriendlyname: P3) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IMoniker>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateHlink)(windows_core::Interface::as_raw(self), uhlid, pimktarget.param().abi(), pwzlocation.param().abi(), pwzfriendlyname.param().abi()).ok() }
    }
    pub unsafe fn EnumNavigationStack(&self, dwreserved: u32, grfhlfnamef: u32) -> windows_core::Result<IEnumHLITEM> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumNavigationStack)(windows_core::Interface::as_raw(self), dwreserved, grfhlfnamef, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn QueryHlink(&self, grfhlqf: u32, uhlid: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).QueryHlink)(windows_core::Interface::as_raw(self), grfhlqf, uhlid).ok() }
    }
    pub unsafe fn GetHlink(&self, uhlid: u32) -> windows_core::Result<IHlink> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetHlink)(windows_core::Interface::as_raw(self), uhlid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetCurrentHlink(&self, uhlid: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentHlink)(windows_core::Interface::as_raw(self), uhlid).ok() }
    }
    pub unsafe fn Clone<P0>(&self, piunkouter: P0, riid: *const windows_core::GUID) -> windows_core::Result<windows_core::IUnknown>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), piunkouter.param().abi(), riid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Close(&self, reserved: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Close)(windows_core::Interface::as_raw(self), reserved).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHlinkBrowseContext_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Register: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Register: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetObject: usize,
    pub Revoke: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetBrowseWindowInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *const HLBWINFO) -> windows_core::HRESULT,
    pub GetBrowseWindowInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut HLBWINFO) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SetInitialHlink: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetInitialHlink: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub OnNavigateHlink: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    OnNavigateHlink: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub UpdateHlink: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    UpdateHlink: usize,
    pub EnumNavigationStack: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub QueryHlink: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetHlink: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetCurrentHlink: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Close: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHlinkBrowseContext_Impl: windows_core::IUnknownImpl {
    fn Register(&self, reserved: u32, piunk: windows_core::Ref<windows_core::IUnknown>, pimk: windows_core::Ref<super::super::System::Com::IMoniker>) -> windows_core::Result<u32>;
    fn GetObject(&self, pimk: windows_core::Ref<super::super::System::Com::IMoniker>, fbindifrootregistered: windows_core::BOOL) -> windows_core::Result<windows_core::IUnknown>;
    fn Revoke(&self, dwregister: u32) -> windows_core::Result<()>;
    fn SetBrowseWindowInfo(&self, phlbwi: *const HLBWINFO) -> windows_core::Result<()>;
    fn GetBrowseWindowInfo(&self, phlbwi: *mut HLBWINFO) -> windows_core::Result<()>;
    fn SetInitialHlink(&self, pimktarget: windows_core::Ref<super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR, pwzfriendlyname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn OnNavigateHlink(&self, grfhlnf: u32, pimktarget: windows_core::Ref<super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR, pwzfriendlyname: &windows_core::PCWSTR) -> windows_core::Result<u32>;
    fn UpdateHlink(&self, uhlid: u32, pimktarget: windows_core::Ref<super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR, pwzfriendlyname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EnumNavigationStack(&self, dwreserved: u32, grfhlfnamef: u32) -> windows_core::Result<IEnumHLITEM>;
    fn QueryHlink(&self, grfhlqf: u32, uhlid: u32) -> windows_core::Result<()>;
    fn GetHlink(&self, uhlid: u32) -> windows_core::Result<IHlink>;
    fn SetCurrentHlink(&self, uhlid: u32) -> windows_core::Result<()>;
    fn Clone(&self, piunkouter: windows_core::Ref<windows_core::IUnknown>, riid: *const windows_core::GUID) -> windows_core::Result<windows_core::IUnknown>;
    fn Close(&self, reserved: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IHlinkBrowseContext_Vtbl {
    pub const fn new<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Register<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, reserved: u32, piunk: *mut core::ffi::c_void, pimk: *mut core::ffi::c_void, pdwregister: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkBrowseContext_Impl::Register(this, core::mem::transmute_copy(&reserved), core::mem::transmute_copy(&piunk), core::mem::transmute_copy(&pimk)) {
                    Ok(ok__) => {
                        pdwregister.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetObject<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pimk: *mut core::ffi::c_void, fbindifrootregistered: windows_core::BOOL, ppiunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkBrowseContext_Impl::GetObject(this, core::mem::transmute_copy(&pimk), core::mem::transmute_copy(&fbindifrootregistered)) {
                    Ok(ok__) => {
                        ppiunk.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Revoke<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwregister: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkBrowseContext_Impl::Revoke(this, core::mem::transmute_copy(&dwregister)).into()
            }
        }
        unsafe extern "system" fn SetBrowseWindowInfo<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phlbwi: *const HLBWINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkBrowseContext_Impl::SetBrowseWindowInfo(this, core::mem::transmute_copy(&phlbwi)).into()
            }
        }
        unsafe extern "system" fn GetBrowseWindowInfo<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phlbwi: *mut HLBWINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkBrowseContext_Impl::GetBrowseWindowInfo(this, core::mem::transmute_copy(&phlbwi)).into()
            }
        }
        unsafe extern "system" fn SetInitialHlink<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, pwzfriendlyname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkBrowseContext_Impl::SetInitialHlink(this, core::mem::transmute_copy(&pimktarget), core::mem::transmute(&pwzlocation), core::mem::transmute(&pwzfriendlyname)).into()
            }
        }
        unsafe extern "system" fn OnNavigateHlink<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlnf: u32, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, pwzfriendlyname: windows_core::PCWSTR, puhlid: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkBrowseContext_Impl::OnNavigateHlink(this, core::mem::transmute_copy(&grfhlnf), core::mem::transmute_copy(&pimktarget), core::mem::transmute(&pwzlocation), core::mem::transmute(&pwzfriendlyname)) {
                    Ok(ok__) => {
                        puhlid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn UpdateHlink<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uhlid: u32, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, pwzfriendlyname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkBrowseContext_Impl::UpdateHlink(this, core::mem::transmute_copy(&uhlid), core::mem::transmute_copy(&pimktarget), core::mem::transmute(&pwzlocation), core::mem::transmute(&pwzfriendlyname)).into()
            }
        }
        unsafe extern "system" fn EnumNavigationStack<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwreserved: u32, grfhlfnamef: u32, ppienumhlitem: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkBrowseContext_Impl::EnumNavigationStack(this, core::mem::transmute_copy(&dwreserved), core::mem::transmute_copy(&grfhlfnamef)) {
                    Ok(ok__) => {
                        ppienumhlitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn QueryHlink<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlqf: u32, uhlid: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkBrowseContext_Impl::QueryHlink(this, core::mem::transmute_copy(&grfhlqf), core::mem::transmute_copy(&uhlid)).into()
            }
        }
        unsafe extern "system" fn GetHlink<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uhlid: u32, ppihl: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkBrowseContext_Impl::GetHlink(this, core::mem::transmute_copy(&uhlid)) {
                    Ok(ok__) => {
                        ppihl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentHlink<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uhlid: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkBrowseContext_Impl::SetCurrentHlink(this, core::mem::transmute_copy(&uhlid)).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, piunkouter: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppiunkobj: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkBrowseContext_Impl::Clone(this, core::mem::transmute_copy(&piunkouter), core::mem::transmute_copy(&riid)) {
                    Ok(ok__) => {
                        ppiunkobj.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Close<Identity: IHlinkBrowseContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, reserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkBrowseContext_Impl::Close(this, core::mem::transmute_copy(&reserved)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Register: Register::<Identity, OFFSET>,
            GetObject: GetObject::<Identity, OFFSET>,
            Revoke: Revoke::<Identity, OFFSET>,
            SetBrowseWindowInfo: SetBrowseWindowInfo::<Identity, OFFSET>,
            GetBrowseWindowInfo: GetBrowseWindowInfo::<Identity, OFFSET>,
            SetInitialHlink: SetInitialHlink::<Identity, OFFSET>,
            OnNavigateHlink: OnNavigateHlink::<Identity, OFFSET>,
            UpdateHlink: UpdateHlink::<Identity, OFFSET>,
            EnumNavigationStack: EnumNavigationStack::<Identity, OFFSET>,
            QueryHlink: QueryHlink::<Identity, OFFSET>,
            GetHlink: GetHlink::<Identity, OFFSET>,
            SetCurrentHlink: SetCurrentHlink::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
            Close: Close::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHlinkBrowseContext as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHlinkBrowseContext {}
windows_core::imp::define_interface!(IHlinkFrame, IHlinkFrame_Vtbl, 0x79eac9c5_baf9_11ce_8c82_00aa004ba90b);
windows_core::imp::interface_hierarchy!(IHlinkFrame, windows_core::IUnknown);
impl IHlinkFrame {
    pub unsafe fn SetBrowseContext<P0>(&self, pihlbc: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IHlinkBrowseContext>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetBrowseContext)(windows_core::Interface::as_raw(self), pihlbc.param().abi()).ok() }
    }
    pub unsafe fn GetBrowseContext(&self) -> windows_core::Result<IHlinkBrowseContext> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBrowseContext)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Navigate<P1, P2, P3>(&self, grfhlnf: u32, pbc: P1, pibsc: P2, pihlnavigate: P3) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IBindCtx>,
        P2: windows_core::Param<super::super::System::Com::IBindStatusCallback>,
        P3: windows_core::Param<IHlink>,
    {
        unsafe { (windows_core::Interface::vtable(self).Navigate)(windows_core::Interface::as_raw(self), grfhlnf, pbc.param().abi(), pibsc.param().abi(), pihlnavigate.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn OnNavigate<P1, P2, P3>(&self, grfhlnf: u32, pimktarget: P1, pwzlocation: P2, pwzfriendlyname: P3, dwreserved: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IMoniker>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnNavigate)(windows_core::Interface::as_raw(self), grfhlnf, pimktarget.param().abi(), pwzlocation.param().abi(), pwzfriendlyname.param().abi(), dwreserved).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn UpdateHlink<P1, P2, P3>(&self, uhlid: u32, pimktarget: P1, pwzlocation: P2, pwzfriendlyname: P3) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IMoniker>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateHlink)(windows_core::Interface::as_raw(self), uhlid, pimktarget.param().abi(), pwzlocation.param().abi(), pwzfriendlyname.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHlinkFrame_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetBrowseContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBrowseContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Navigate: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Navigate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub OnNavigate: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    OnNavigate: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub UpdateHlink: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    UpdateHlink: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHlinkFrame_Impl: windows_core::IUnknownImpl {
    fn SetBrowseContext(&self, pihlbc: windows_core::Ref<IHlinkBrowseContext>) -> windows_core::Result<()>;
    fn GetBrowseContext(&self) -> windows_core::Result<IHlinkBrowseContext>;
    fn Navigate(&self, grfhlnf: u32, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>, pibsc: windows_core::Ref<super::super::System::Com::IBindStatusCallback>, pihlnavigate: windows_core::Ref<IHlink>) -> windows_core::Result<()>;
    fn OnNavigate(&self, grfhlnf: u32, pimktarget: windows_core::Ref<super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR, pwzfriendlyname: &windows_core::PCWSTR, dwreserved: u32) -> windows_core::Result<()>;
    fn UpdateHlink(&self, uhlid: u32, pimktarget: windows_core::Ref<super::super::System::Com::IMoniker>, pwzlocation: &windows_core::PCWSTR, pwzfriendlyname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IHlinkFrame_Vtbl {
    pub const fn new<Identity: IHlinkFrame_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetBrowseContext<Identity: IHlinkFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pihlbc: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkFrame_Impl::SetBrowseContext(this, core::mem::transmute_copy(&pihlbc)).into()
            }
        }
        unsafe extern "system" fn GetBrowseContext<Identity: IHlinkFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppihlbc: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkFrame_Impl::GetBrowseContext(this) {
                    Ok(ok__) => {
                        ppihlbc.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Navigate<Identity: IHlinkFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlnf: u32, pbc: *mut core::ffi::c_void, pibsc: *mut core::ffi::c_void, pihlnavigate: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkFrame_Impl::Navigate(this, core::mem::transmute_copy(&grfhlnf), core::mem::transmute_copy(&pbc), core::mem::transmute_copy(&pibsc), core::mem::transmute_copy(&pihlnavigate)).into()
            }
        }
        unsafe extern "system" fn OnNavigate<Identity: IHlinkFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlnf: u32, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, pwzfriendlyname: windows_core::PCWSTR, dwreserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkFrame_Impl::OnNavigate(this, core::mem::transmute_copy(&grfhlnf), core::mem::transmute_copy(&pimktarget), core::mem::transmute(&pwzlocation), core::mem::transmute(&pwzfriendlyname), core::mem::transmute_copy(&dwreserved)).into()
            }
        }
        unsafe extern "system" fn UpdateHlink<Identity: IHlinkFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uhlid: u32, pimktarget: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, pwzfriendlyname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkFrame_Impl::UpdateHlink(this, core::mem::transmute_copy(&uhlid), core::mem::transmute_copy(&pimktarget), core::mem::transmute(&pwzlocation), core::mem::transmute(&pwzfriendlyname)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBrowseContext: SetBrowseContext::<Identity, OFFSET>,
            GetBrowseContext: GetBrowseContext::<Identity, OFFSET>,
            Navigate: Navigate::<Identity, OFFSET>,
            OnNavigate: OnNavigate::<Identity, OFFSET>,
            UpdateHlink: UpdateHlink::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHlinkFrame as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHlinkFrame {}
windows_core::imp::define_interface!(IHlinkSite, IHlinkSite_Vtbl, 0x79eac9c2_baf9_11ce_8c82_00aa004ba90b);
windows_core::imp::interface_hierarchy!(IHlinkSite, windows_core::IUnknown);
impl IHlinkSite {
    pub unsafe fn QueryService(&self, dwsitedata: u32, guidservice: *const windows_core::GUID, riid: *const windows_core::GUID) -> windows_core::Result<windows_core::IUnknown> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).QueryService)(windows_core::Interface::as_raw(self), dwsitedata, guidservice, riid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetMoniker(&self, dwsitedata: u32, dwassign: u32, dwwhich: u32) -> windows_core::Result<super::super::System::Com::IMoniker> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMoniker)(windows_core::Interface::as_raw(self), dwsitedata, dwassign, dwwhich, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn ReadyToNavigate(&self, dwsitedata: u32, dwreserved: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadyToNavigate)(windows_core::Interface::as_raw(self), dwsitedata, dwreserved).ok() }
    }
    pub unsafe fn OnNavigationComplete<P3>(&self, dwsitedata: u32, dwreserved: u32, hrerror: windows_core::HRESULT, pwzerror: P3) -> windows_core::Result<()>
    where
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnNavigationComplete)(windows_core::Interface::as_raw(self), dwsitedata, dwreserved, hrerror, pwzerror.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHlinkSite_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub QueryService: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const windows_core::GUID, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetMoniker: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetMoniker: usize,
    pub ReadyToNavigate: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OnNavigationComplete: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, windows_core::HRESULT, windows_core::PCWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHlinkSite_Impl: windows_core::IUnknownImpl {
    fn QueryService(&self, dwsitedata: u32, guidservice: *const windows_core::GUID, riid: *const windows_core::GUID) -> windows_core::Result<windows_core::IUnknown>;
    fn GetMoniker(&self, dwsitedata: u32, dwassign: u32, dwwhich: u32) -> windows_core::Result<super::super::System::Com::IMoniker>;
    fn ReadyToNavigate(&self, dwsitedata: u32, dwreserved: u32) -> windows_core::Result<()>;
    fn OnNavigationComplete(&self, dwsitedata: u32, dwreserved: u32, hrerror: windows_core::HRESULT, pwzerror: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IHlinkSite_Vtbl {
    pub const fn new<Identity: IHlinkSite_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn QueryService<Identity: IHlinkSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsitedata: u32, guidservice: *const windows_core::GUID, riid: *const windows_core::GUID, ppiunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkSite_Impl::QueryService(this, core::mem::transmute_copy(&dwsitedata), core::mem::transmute_copy(&guidservice), core::mem::transmute_copy(&riid)) {
                    Ok(ok__) => {
                        ppiunk.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetMoniker<Identity: IHlinkSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsitedata: u32, dwassign: u32, dwwhich: u32, ppimk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkSite_Impl::GetMoniker(this, core::mem::transmute_copy(&dwsitedata), core::mem::transmute_copy(&dwassign), core::mem::transmute_copy(&dwwhich)) {
                    Ok(ok__) => {
                        ppimk.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ReadyToNavigate<Identity: IHlinkSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsitedata: u32, dwreserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkSite_Impl::ReadyToNavigate(this, core::mem::transmute_copy(&dwsitedata), core::mem::transmute_copy(&dwreserved)).into()
            }
        }
        unsafe extern "system" fn OnNavigationComplete<Identity: IHlinkSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsitedata: u32, dwreserved: u32, hrerror: windows_core::HRESULT, pwzerror: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkSite_Impl::OnNavigationComplete(this, core::mem::transmute_copy(&dwsitedata), core::mem::transmute_copy(&dwreserved), core::mem::transmute_copy(&hrerror), core::mem::transmute(&pwzerror)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryService: QueryService::<Identity, OFFSET>,
            GetMoniker: GetMoniker::<Identity, OFFSET>,
            ReadyToNavigate: ReadyToNavigate::<Identity, OFFSET>,
            OnNavigationComplete: OnNavigationComplete::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHlinkSite as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHlinkSite {}
windows_core::imp::define_interface!(IHlinkTarget, IHlinkTarget_Vtbl, 0x79eac9c4_baf9_11ce_8c82_00aa004ba90b);
windows_core::imp::interface_hierarchy!(IHlinkTarget, windows_core::IUnknown);
impl IHlinkTarget {
    pub unsafe fn SetBrowseContext<P0>(&self, pihlbc: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IHlinkBrowseContext>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetBrowseContext)(windows_core::Interface::as_raw(self), pihlbc.param().abi()).ok() }
    }
    pub unsafe fn GetBrowseContext(&self) -> windows_core::Result<IHlinkBrowseContext> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBrowseContext)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Navigate<P1>(&self, grfhlnf: u32, pwzjumplocation: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Navigate)(windows_core::Interface::as_raw(self), grfhlnf, pwzjumplocation.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetMoniker<P0>(&self, pwzlocation: P0, dwassign: u32) -> windows_core::Result<super::super::System::Com::IMoniker>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMoniker)(windows_core::Interface::as_raw(self), pwzlocation.param().abi(), dwassign, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetFriendlyName<P0>(&self, pwzlocation: P0) -> windows_core::Result<windows_core::PWSTR>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFriendlyName)(windows_core::Interface::as_raw(self), pwzlocation.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHlinkTarget_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetBrowseContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetBrowseContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Navigate: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub GetMoniker: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetMoniker: usize,
    pub GetFriendlyName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IHlinkTarget_Impl: windows_core::IUnknownImpl {
    fn SetBrowseContext(&self, pihlbc: windows_core::Ref<IHlinkBrowseContext>) -> windows_core::Result<()>;
    fn GetBrowseContext(&self) -> windows_core::Result<IHlinkBrowseContext>;
    fn Navigate(&self, grfhlnf: u32, pwzjumplocation: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetMoniker(&self, pwzlocation: &windows_core::PCWSTR, dwassign: u32) -> windows_core::Result<super::super::System::Com::IMoniker>;
    fn GetFriendlyName(&self, pwzlocation: &windows_core::PCWSTR) -> windows_core::Result<windows_core::PWSTR>;
}
#[cfg(feature = "Win32_System_Com")]
impl IHlinkTarget_Vtbl {
    pub const fn new<Identity: IHlinkTarget_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetBrowseContext<Identity: IHlinkTarget_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pihlbc: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkTarget_Impl::SetBrowseContext(this, core::mem::transmute_copy(&pihlbc)).into()
            }
        }
        unsafe extern "system" fn GetBrowseContext<Identity: IHlinkTarget_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppihlbc: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkTarget_Impl::GetBrowseContext(this) {
                    Ok(ok__) => {
                        ppihlbc.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Navigate<Identity: IHlinkTarget_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfhlnf: u32, pwzjumplocation: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IHlinkTarget_Impl::Navigate(this, core::mem::transmute_copy(&grfhlnf), core::mem::transmute(&pwzjumplocation)).into()
            }
        }
        unsafe extern "system" fn GetMoniker<Identity: IHlinkTarget_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, dwassign: u32, ppimklocation: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkTarget_Impl::GetMoniker(this, core::mem::transmute(&pwzlocation), core::mem::transmute_copy(&dwassign)) {
                    Ok(ok__) => {
                        ppimklocation.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFriendlyName<Identity: IHlinkTarget_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzlocation: windows_core::PCWSTR, ppwzfriendlyname: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHlinkTarget_Impl::GetFriendlyName(this, core::mem::transmute(&pwzlocation)) {
                    Ok(ok__) => {
                        ppwzfriendlyname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBrowseContext: SetBrowseContext::<Identity, OFFSET>,
            GetBrowseContext: GetBrowseContext::<Identity, OFFSET>,
            Navigate: Navigate::<Identity, OFFSET>,
            GetMoniker: GetMoniker::<Identity, OFFSET>,
            GetFriendlyName: GetFriendlyName::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHlinkTarget as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IHlinkTarget {}
windows_core::imp::define_interface!(IHomeGroup, IHomeGroup_Vtbl, 0x7a3bd1d9_35a9_4fb3_a467_f48cac35e2d0);
windows_core::imp::interface_hierarchy!(IHomeGroup, windows_core::IUnknown);
impl IHomeGroup {
    pub unsafe fn IsMember(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsMember)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ShowSharingWizard(&self, owner: super::super::Foundation::HWND) -> windows_core::Result<HOMEGROUPSHARINGCHOICES> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ShowSharingWizard)(windows_core::Interface::as_raw(self), owner, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IHomeGroup_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub IsMember: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub ShowSharingWizard: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut HOMEGROUPSHARINGCHOICES) -> windows_core::HRESULT,
}
pub trait IHomeGroup_Impl: windows_core::IUnknownImpl {
    fn IsMember(&self) -> windows_core::Result<windows_core::BOOL>;
    fn ShowSharingWizard(&self, owner: super::super::Foundation::HWND) -> windows_core::Result<HOMEGROUPSHARINGCHOICES>;
}
impl IHomeGroup_Vtbl {
    pub const fn new<Identity: IHomeGroup_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn IsMember<Identity: IHomeGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, member: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHomeGroup_Impl::IsMember(this) {
                    Ok(ok__) => {
                        member.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ShowSharingWizard<Identity: IHomeGroup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, owner: super::super::Foundation::HWND, sharingchoices: *mut HOMEGROUPSHARINGCHOICES) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IHomeGroup_Impl::ShowSharingWizard(this, core::mem::transmute_copy(&owner)) {
                    Ok(ok__) => {
                        sharingchoices.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsMember: IsMember::<Identity, OFFSET>,
            ShowSharingWizard: ShowSharingWizard::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IHomeGroup as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IHomeGroup {}
windows_core::imp::define_interface!(IIOCancelInformation, IIOCancelInformation_Vtbl, 0xf5b0bf81_8cb5_4b1b_9449_1a159e0c733c);
windows_core::imp::interface_hierarchy!(IIOCancelInformation, windows_core::IUnknown);
impl IIOCancelInformation {
    pub unsafe fn SetCancelInformation(&self, dwthreadid: u32, umsgcancel: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCancelInformation)(windows_core::Interface::as_raw(self), dwthreadid, umsgcancel).ok() }
    }
    pub unsafe fn GetCancelInformation(&self, pdwthreadid: Option<*mut u32>, pumsgcancel: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCancelInformation)(windows_core::Interface::as_raw(self), pdwthreadid.unwrap_or(core::mem::zeroed()) as _, pumsgcancel.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IIOCancelInformation_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetCancelInformation: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetCancelInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IIOCancelInformation_Impl: windows_core::IUnknownImpl {
    fn SetCancelInformation(&self, dwthreadid: u32, umsgcancel: u32) -> windows_core::Result<()>;
    fn GetCancelInformation(&self, pdwthreadid: *mut u32, pumsgcancel: *mut u32) -> windows_core::Result<()>;
}
impl IIOCancelInformation_Vtbl {
    pub const fn new<Identity: IIOCancelInformation_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetCancelInformation<Identity: IIOCancelInformation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwthreadid: u32, umsgcancel: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IIOCancelInformation_Impl::SetCancelInformation(this, core::mem::transmute_copy(&dwthreadid), core::mem::transmute_copy(&umsgcancel)).into()
            }
        }
        unsafe extern "system" fn GetCancelInformation<Identity: IIOCancelInformation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwthreadid: *mut u32, pumsgcancel: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IIOCancelInformation_Impl::GetCancelInformation(this, core::mem::transmute_copy(&pdwthreadid), core::mem::transmute_copy(&pumsgcancel)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetCancelInformation: SetCancelInformation::<Identity, OFFSET>,
            GetCancelInformation: GetCancelInformation::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIOCancelInformation as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IIOCancelInformation {}
windows_core::imp::define_interface!(IIdentityName, IIdentityName_Vtbl, 0x7d903fca_d6f9_4810_8332_946c0177e247);
impl core::ops::Deref for IIdentityName {
    type Target = IRelatedItem;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IIdentityName, windows_core::IUnknown, IRelatedItem);
#[repr(C)]
#[doc(hidden)]
pub struct IIdentityName_Vtbl {
    pub base__: IRelatedItem_Vtbl,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IIdentityName_Impl: IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IIdentityName_Vtbl {
    pub const fn new<Identity: IIdentityName_Impl, const OFFSET: isize>() -> Self {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IIdentityName as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IIdentityName {}
windows_core::imp::define_interface!(IImageRecompress, IImageRecompress_Vtbl, 0x505f1513_6b3e_4892_a272_59f8889a4d3e);
windows_core::imp::interface_hierarchy!(IImageRecompress, windows_core::IUnknown);
impl IImageRecompress {
    #[cfg(feature = "Win32_System_Com_StructuredStorage")]
    pub unsafe fn RecompressImage<P0, P4>(&self, psi: P0, cx: i32, cy: i32, iquality: i32, pstg: P4) -> windows_core::Result<super::super::System::Com::IStream>
    where
        P0: windows_core::Param<IShellItem>,
        P4: windows_core::Param<super::super::System::Com::StructuredStorage::IStorage>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RecompressImage)(windows_core::Interface::as_raw(self), psi.param().abi(), cx, cy, iquality, pstg.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IImageRecompress_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com_StructuredStorage")]
    pub RecompressImage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32, i32, i32, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com_StructuredStorage"))]
    RecompressImage: usize,
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
pub trait IImageRecompress_Impl: windows_core::IUnknownImpl {
    fn RecompressImage(&self, psi: windows_core::Ref<IShellItem>, cx: i32, cy: i32, iquality: i32, pstg: windows_core::Ref<super::super::System::Com::StructuredStorage::IStorage>) -> windows_core::Result<super::super::System::Com::IStream>;
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl IImageRecompress_Vtbl {
    pub const fn new<Identity: IImageRecompress_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn RecompressImage<Identity: IImageRecompress_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, cx: i32, cy: i32, iquality: i32, pstg: *mut core::ffi::c_void, ppstrmout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IImageRecompress_Impl::RecompressImage(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&cx), core::mem::transmute_copy(&cy), core::mem::transmute_copy(&iquality), core::mem::transmute_copy(&pstg)) {
                    Ok(ok__) => {
                        ppstrmout.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RecompressImage: RecompressImage::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IImageRecompress as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl windows_core::RuntimeName for IImageRecompress {}
windows_core::imp::define_interface!(IInitializeCommand, IInitializeCommand_Vtbl, 0x85075acf_231f_40ea_9610_d26b7b58f638);
windows_core::imp::interface_hierarchy!(IInitializeCommand, windows_core::IUnknown);
impl IInitializeCommand {
    #[cfg(feature = "Win32_System_Com_StructuredStorage")]
    pub unsafe fn Initialize<P0, P1>(&self, pszcommandname: P0, ppb: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<super::super::System::Com::StructuredStorage::IPropertyBag>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pszcommandname.param().abi(), ppb.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInitializeCommand_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com_StructuredStorage")]
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com_StructuredStorage"))]
    Initialize: usize,
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
pub trait IInitializeCommand_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, pszcommandname: &windows_core::PCWSTR, ppb: windows_core::Ref<super::super::System::Com::StructuredStorage::IPropertyBag>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl IInitializeCommand_Vtbl {
    pub const fn new<Identity: IInitializeCommand_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IInitializeCommand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcommandname: windows_core::PCWSTR, ppb: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInitializeCommand_Impl::Initialize(this, core::mem::transmute(&pszcommandname), core::mem::transmute_copy(&ppb)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeCommand as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com_StructuredStorage")]
impl windows_core::RuntimeName for IInitializeCommand {}
windows_core::imp::define_interface!(IInitializeNetworkFolder, IInitializeNetworkFolder_Vtbl, 0x6e0f9881_42a8_4f2a_97f8_8af4e026d92d);
windows_core::imp::interface_hierarchy!(IInitializeNetworkFolder, windows_core::IUnknown);
impl IInitializeNetworkFolder {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn Initialize<P3, P4>(&self, pidl: *const Common::ITEMIDLIST, pidltarget: *const Common::ITEMIDLIST, udisplaytype: u32, pszresname: P3, pszprovider: P4) -> windows_core::Result<()>
    where
        P3: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pidl, pidltarget, udisplaytype, pszresname.param().abi(), pszprovider.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInitializeNetworkFolder_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *const Common::ITEMIDLIST, u32, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    Initialize: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IInitializeNetworkFolder_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, pidl: *const Common::ITEMIDLIST, pidltarget: *const Common::ITEMIDLIST, udisplaytype: u32, pszresname: &windows_core::PCWSTR, pszprovider: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IInitializeNetworkFolder_Vtbl {
    pub const fn new<Identity: IInitializeNetworkFolder_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IInitializeNetworkFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pidltarget: *const Common::ITEMIDLIST, udisplaytype: u32, pszresname: windows_core::PCWSTR, pszprovider: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInitializeNetworkFolder_Impl::Initialize(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&pidltarget), core::mem::transmute_copy(&udisplaytype), core::mem::transmute(&pszresname), core::mem::transmute(&pszprovider)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeNetworkFolder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IInitializeNetworkFolder {}
windows_core::imp::define_interface!(IInitializeObject, IInitializeObject_Vtbl, 0x4622ad16_ff23_11d0_8d34_00a0c90f2719);
windows_core::imp::interface_hierarchy!(IInitializeObject, windows_core::IUnknown);
impl IInitializeObject {
    pub unsafe fn Initialize(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInitializeObject_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IInitializeObject_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self) -> windows_core::Result<()>;
}
impl IInitializeObject_Vtbl {
    pub const fn new<Identity: IInitializeObject_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IInitializeObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInitializeObject_Impl::Initialize(this).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeObject as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IInitializeObject {}
windows_core::imp::define_interface!(IInitializeWithBindCtx, IInitializeWithBindCtx_Vtbl, 0x71c0d2bc_726d_45cc_a6c0_2e31c1db2159);
windows_core::imp::interface_hierarchy!(IInitializeWithBindCtx, windows_core::IUnknown);
impl IInitializeWithBindCtx {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0>(&self, pbc: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IBindCtx>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pbc.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInitializeWithBindCtx_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IInitializeWithBindCtx_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IInitializeWithBindCtx_Vtbl {
    pub const fn new<Identity: IInitializeWithBindCtx_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IInitializeWithBindCtx_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInitializeWithBindCtx_Impl::Initialize(this, core::mem::transmute_copy(&pbc)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeWithBindCtx as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IInitializeWithBindCtx {}
windows_core::imp::define_interface!(IInitializeWithItem, IInitializeWithItem_Vtbl, 0x7f73be3f_fb79_493c_a6c7_7ee14e245841);
windows_core::imp::interface_hierarchy!(IInitializeWithItem, windows_core::IUnknown);
impl IInitializeWithItem {
    pub unsafe fn Initialize<P0>(&self, psi: P0, grfmode: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psi.param().abi(), grfmode).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInitializeWithItem_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
pub trait IInitializeWithItem_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, psi: windows_core::Ref<IShellItem>, grfmode: u32) -> windows_core::Result<()>;
}
impl IInitializeWithItem_Vtbl {
    pub const fn new<Identity: IInitializeWithItem_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IInitializeWithItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, grfmode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInitializeWithItem_Impl::Initialize(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&grfmode)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeWithItem as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IInitializeWithItem {}
windows_core::imp::define_interface!(IInitializeWithPropertyStore, IInitializeWithPropertyStore_Vtbl, 0xc3e12eb5_7d8d_44f8_b6dd_0e77b34d6de4);
windows_core::imp::interface_hierarchy!(IInitializeWithPropertyStore, windows_core::IUnknown);
impl IInitializeWithPropertyStore {
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn Initialize<P0>(&self, pps: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<PropertiesSystem::IPropertyStore>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pps.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInitializeWithPropertyStore_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    Initialize: usize,
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IInitializeWithPropertyStore_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, pps: windows_core::Ref<PropertiesSystem::IPropertyStore>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IInitializeWithPropertyStore_Vtbl {
    pub const fn new<Identity: IInitializeWithPropertyStore_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IInitializeWithPropertyStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pps: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInitializeWithPropertyStore_Impl::Initialize(this, core::mem::transmute_copy(&pps)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeWithPropertyStore as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IInitializeWithPropertyStore {}
windows_core::imp::define_interface!(IInitializeWithWindow, IInitializeWithWindow_Vtbl, 0x3e68d4bd_7135_4d10_8018_9fb6d9f33fa1);
windows_core::imp::interface_hierarchy!(IInitializeWithWindow, windows_core::IUnknown);
impl IInitializeWithWindow {
    pub unsafe fn Initialize(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), hwnd).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInitializeWithWindow_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
}
pub trait IInitializeWithWindow_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
impl IInitializeWithWindow_Vtbl {
    pub const fn new<Identity: IInitializeWithWindow_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IInitializeWithWindow_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInitializeWithWindow_Impl::Initialize(this, core::mem::transmute_copy(&hwnd)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInitializeWithWindow as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IInitializeWithWindow {}
windows_core::imp::define_interface!(IInputObject, IInputObject_Vtbl, 0x68284faa_6a48_11d0_8c78_00c04fd918b4);
windows_core::imp::interface_hierarchy!(IInputObject, windows_core::IUnknown);
impl IInputObject {
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn UIActivateIO(&self, factivate: bool, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UIActivateIO)(windows_core::Interface::as_raw(self), factivate.into(), pmsg).ok() }
    }
    pub unsafe fn HasFocusIO(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).HasFocusIO)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn TranslateAcceleratorIO(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TranslateAcceleratorIO)(windows_core::Interface::as_raw(self), pmsg).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInputObject_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub UIActivateIO: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL, *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    UIActivateIO: usize,
    pub HasFocusIO: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub TranslateAcceleratorIO: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    TranslateAcceleratorIO: usize,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IInputObject_Impl: windows_core::IUnknownImpl {
    fn UIActivateIO(&self, factivate: windows_core::BOOL, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
    fn HasFocusIO(&self) -> windows_core::Result<()>;
    fn TranslateAcceleratorIO(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IInputObject_Vtbl {
    pub const fn new<Identity: IInputObject_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn UIActivateIO<Identity: IInputObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, factivate: windows_core::BOOL, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInputObject_Impl::UIActivateIO(this, core::mem::transmute_copy(&factivate), core::mem::transmute_copy(&pmsg)).into()
            }
        }
        unsafe extern "system" fn HasFocusIO<Identity: IInputObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInputObject_Impl::HasFocusIO(this).into()
            }
        }
        unsafe extern "system" fn TranslateAcceleratorIO<Identity: IInputObject_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInputObject_Impl::TranslateAcceleratorIO(this, core::mem::transmute_copy(&pmsg)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            UIActivateIO: UIActivateIO::<Identity, OFFSET>,
            HasFocusIO: HasFocusIO::<Identity, OFFSET>,
            TranslateAcceleratorIO: TranslateAcceleratorIO::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputObject as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IInputObject {}
windows_core::imp::define_interface!(IInputObject2, IInputObject2_Vtbl, 0x6915c085_510b_44cd_94af_28dfa56cf92b);
impl core::ops::Deref for IInputObject2 {
    type Target = IInputObject;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IInputObject2, windows_core::IUnknown, IInputObject);
impl IInputObject2 {
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn TranslateAcceleratorGlobal(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TranslateAcceleratorGlobal)(windows_core::Interface::as_raw(self), pmsg).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInputObject2_Vtbl {
    pub base__: IInputObject_Vtbl,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub TranslateAcceleratorGlobal: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    TranslateAcceleratorGlobal: usize,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IInputObject2_Impl: IInputObject_Impl {
    fn TranslateAcceleratorGlobal(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IInputObject2_Vtbl {
    pub const fn new<Identity: IInputObject2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn TranslateAcceleratorGlobal<Identity: IInputObject2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInputObject2_Impl::TranslateAcceleratorGlobal(this, core::mem::transmute_copy(&pmsg)).into()
            }
        }
        Self { base__: IInputObject_Vtbl::new::<Identity, OFFSET>(), TranslateAcceleratorGlobal: TranslateAcceleratorGlobal::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputObject2 as windows_core::Interface>::IID || iid == &<IInputObject as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IInputObject2 {}
windows_core::imp::define_interface!(IInputObjectSite, IInputObjectSite_Vtbl, 0xf1db8392_7331_11d0_8c99_00a0c92dbfe8);
windows_core::imp::interface_hierarchy!(IInputObjectSite, windows_core::IUnknown);
impl IInputObjectSite {
    pub unsafe fn OnFocusChangeIS<P0>(&self, punkobj: P0, fsetfocus: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnFocusChangeIS)(windows_core::Interface::as_raw(self), punkobj.param().abi(), fsetfocus.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInputObjectSite_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnFocusChangeIS: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait IInputObjectSite_Impl: windows_core::IUnknownImpl {
    fn OnFocusChangeIS(&self, punkobj: windows_core::Ref<windows_core::IUnknown>, fsetfocus: windows_core::BOOL) -> windows_core::Result<()>;
}
impl IInputObjectSite_Vtbl {
    pub const fn new<Identity: IInputObjectSite_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnFocusChangeIS<Identity: IInputObjectSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkobj: *mut core::ffi::c_void, fsetfocus: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInputObjectSite_Impl::OnFocusChangeIS(this, core::mem::transmute_copy(&punkobj), core::mem::transmute_copy(&fsetfocus)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnFocusChangeIS: OnFocusChangeIS::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputObjectSite as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IInputObjectSite {}
windows_core::imp::define_interface!(IInputPaneAnimationCoordinator, IInputPaneAnimationCoordinator_Vtbl, 0x2af16ba9_2de5_4b75_82d9_01372afbffb4);
windows_core::imp::interface_hierarchy!(IInputPaneAnimationCoordinator, windows_core::IUnknown);
impl IInputPaneAnimationCoordinator {
    #[cfg(feature = "Win32_Graphics_DirectComposition")]
    pub unsafe fn AddAnimation<P0, P1>(&self, device: P0, animation: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
        P1: windows_core::Param<super::super::Graphics::DirectComposition::IDCompositionAnimation>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddAnimation)(windows_core::Interface::as_raw(self), device.param().abi(), animation.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInputPaneAnimationCoordinator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_DirectComposition")]
    pub AddAnimation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_DirectComposition"))]
    AddAnimation: usize,
}
#[cfg(feature = "Win32_Graphics_DirectComposition")]
pub trait IInputPaneAnimationCoordinator_Impl: windows_core::IUnknownImpl {
    fn AddAnimation(&self, device: windows_core::Ref<windows_core::IUnknown>, animation: windows_core::Ref<super::super::Graphics::DirectComposition::IDCompositionAnimation>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_DirectComposition")]
impl IInputPaneAnimationCoordinator_Vtbl {
    pub const fn new<Identity: IInputPaneAnimationCoordinator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddAnimation<Identity: IInputPaneAnimationCoordinator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, device: *mut core::ffi::c_void, animation: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInputPaneAnimationCoordinator_Impl::AddAnimation(this, core::mem::transmute_copy(&device), core::mem::transmute_copy(&animation)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), AddAnimation: AddAnimation::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputPaneAnimationCoordinator as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_DirectComposition")]
impl windows_core::RuntimeName for IInputPaneAnimationCoordinator {}
windows_core::imp::define_interface!(IInputPanelConfiguration, IInputPanelConfiguration_Vtbl, 0x41c81592_514c_48bd_a22e_e6af638521a6);
windows_core::imp::interface_hierarchy!(IInputPanelConfiguration, windows_core::IUnknown);
impl IInputPanelConfiguration {
    pub unsafe fn EnableFocusTracking(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EnableFocusTracking)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInputPanelConfiguration_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub EnableFocusTracking: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IInputPanelConfiguration_Impl: windows_core::IUnknownImpl {
    fn EnableFocusTracking(&self) -> windows_core::Result<()>;
}
impl IInputPanelConfiguration_Vtbl {
    pub const fn new<Identity: IInputPanelConfiguration_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn EnableFocusTracking<Identity: IInputPanelConfiguration_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInputPanelConfiguration_Impl::EnableFocusTracking(this).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), EnableFocusTracking: EnableFocusTracking::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputPanelConfiguration as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IInputPanelConfiguration {}
windows_core::imp::define_interface!(IInputPanelInvocationConfiguration, IInputPanelInvocationConfiguration_Vtbl, 0xa213f136_3b45_4362_a332_efb6547cd432);
windows_core::imp::interface_hierarchy!(IInputPanelInvocationConfiguration, windows_core::IUnknown);
impl IInputPanelInvocationConfiguration {
    pub unsafe fn RequireTouchInEditControl(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RequireTouchInEditControl)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInputPanelInvocationConfiguration_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub RequireTouchInEditControl: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IInputPanelInvocationConfiguration_Impl: windows_core::IUnknownImpl {
    fn RequireTouchInEditControl(&self) -> windows_core::Result<()>;
}
impl IInputPanelInvocationConfiguration_Vtbl {
    pub const fn new<Identity: IInputPanelInvocationConfiguration_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn RequireTouchInEditControl<Identity: IInputPanelInvocationConfiguration_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInputPanelInvocationConfiguration_Impl::RequireTouchInEditControl(this).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RequireTouchInEditControl: RequireTouchInEditControl::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInputPanelInvocationConfiguration as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IInputPanelInvocationConfiguration {}
windows_core::imp::define_interface!(IInsertItem, IInsertItem_Vtbl, 0xd2b57227_3d23_4b95_93c0_492bd454c356);
windows_core::imp::interface_hierarchy!(IInsertItem, windows_core::IUnknown);
impl IInsertItem {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn InsertItem(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InsertItem)(windows_core::Interface::as_raw(self), pidl).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IInsertItem_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub InsertItem: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    InsertItem: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IInsertItem_Impl: windows_core::IUnknownImpl {
    fn InsertItem(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IInsertItem_Vtbl {
    pub const fn new<Identity: IInsertItem_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn InsertItem<Identity: IInsertItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IInsertItem_Impl::InsertItem(this, core::mem::transmute_copy(&pidl)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), InsertItem: InsertItem::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IInsertItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IInsertItem {}
windows_core::imp::define_interface!(IItemNameLimits, IItemNameLimits_Vtbl, 0x1df0d7f1_b267_4d28_8b10_12e23202a5c4);
windows_core::imp::interface_hierarchy!(IItemNameLimits, windows_core::IUnknown);
impl IItemNameLimits {
    pub unsafe fn GetValidCharacters(&self, ppwszvalidchars: *mut windows_core::PWSTR, ppwszinvalidchars: *mut windows_core::PWSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetValidCharacters)(windows_core::Interface::as_raw(self), ppwszvalidchars as _, ppwszinvalidchars as _).ok() }
    }
    pub unsafe fn GetMaxLength<P0>(&self, pszname: P0) -> windows_core::Result<i32>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMaxLength)(windows_core::Interface::as_raw(self), pszname.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IItemNameLimits_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetValidCharacters: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetMaxLength: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut i32) -> windows_core::HRESULT,
}
pub trait IItemNameLimits_Impl: windows_core::IUnknownImpl {
    fn GetValidCharacters(&self, ppwszvalidchars: *mut windows_core::PWSTR, ppwszinvalidchars: *mut windows_core::PWSTR) -> windows_core::Result<()>;
    fn GetMaxLength(&self, pszname: &windows_core::PCWSTR) -> windows_core::Result<i32>;
}
impl IItemNameLimits_Vtbl {
    pub const fn new<Identity: IItemNameLimits_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetValidCharacters<Identity: IItemNameLimits_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppwszvalidchars: *mut windows_core::PWSTR, ppwszinvalidchars: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IItemNameLimits_Impl::GetValidCharacters(this, core::mem::transmute_copy(&ppwszvalidchars), core::mem::transmute_copy(&ppwszinvalidchars)).into()
            }
        }
        unsafe extern "system" fn GetMaxLength<Identity: IItemNameLimits_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR, pimaxnamelen: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IItemNameLimits_Impl::GetMaxLength(this, core::mem::transmute(&pszname)) {
                    Ok(ok__) => {
                        pimaxnamelen.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetValidCharacters: GetValidCharacters::<Identity, OFFSET>,
            GetMaxLength: GetMaxLength::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IItemNameLimits as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IItemNameLimits {}
windows_core::imp::define_interface!(IKnownFolder, IKnownFolder_Vtbl, 0x3aa7af7e_9b36_420c_a8e3_f77d4674a488);
windows_core::imp::interface_hierarchy!(IKnownFolder, windows_core::IUnknown);
impl IKnownFolder {
    pub unsafe fn GetId(&self) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCategory(&self) -> windows_core::Result<KF_CATEGORY> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCategory)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetShellItem<T>(&self, dwflags: u32) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetShellItem)(windows_core::Interface::as_raw(self), dwflags, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetPath(&self, dwflags: u32) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPath)(windows_core::Interface::as_raw(self), dwflags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetPath<P1>(&self, dwflags: u32, pszpath: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetPath)(windows_core::Interface::as_raw(self), dwflags, pszpath.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetIDList(&self, dwflags: u32) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIDList)(windows_core::Interface::as_raw(self), dwflags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFolderType(&self) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFolderType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetRedirectionCapabilities(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRedirectionCapabilities)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFolderDefinition(&self, pkfd: *mut KNOWNFOLDER_DEFINITION) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFolderDefinition)(windows_core::Interface::as_raw(self), pkfd as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IKnownFolder_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub GetCategory: unsafe extern "system" fn(*mut core::ffi::c_void, *mut KF_CATEGORY) -> windows_core::HRESULT,
    pub GetShellItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetPath: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub SetPath: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetIDList: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetIDList: usize,
    pub GetFolderType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub GetRedirectionCapabilities: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetFolderDefinition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut KNOWNFOLDER_DEFINITION) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IKnownFolder_Impl: windows_core::IUnknownImpl {
    fn GetId(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetCategory(&self) -> windows_core::Result<KF_CATEGORY>;
    fn GetShellItem(&self, dwflags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPath(&self, dwflags: u32) -> windows_core::Result<windows_core::PWSTR>;
    fn SetPath(&self, dwflags: u32, pszpath: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetIDList(&self, dwflags: u32) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn GetFolderType(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetRedirectionCapabilities(&self) -> windows_core::Result<u32>;
    fn GetFolderDefinition(&self, pkfd: *mut KNOWNFOLDER_DEFINITION) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IKnownFolder_Vtbl {
    pub const fn new<Identity: IKnownFolder_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetId<Identity: IKnownFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkfid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolder_Impl::GetId(this) {
                    Ok(ok__) => {
                        pkfid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCategory<Identity: IKnownFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcategory: *mut KF_CATEGORY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolder_Impl::GetCategory(this) {
                    Ok(ok__) => {
                        pcategory.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetShellItem<Identity: IKnownFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKnownFolder_Impl::GetShellItem(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetPath<Identity: IKnownFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppszpath: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolder_Impl::GetPath(this, core::mem::transmute_copy(&dwflags)) {
                    Ok(ok__) => {
                        ppszpath.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetPath<Identity: IKnownFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, pszpath: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKnownFolder_Impl::SetPath(this, core::mem::transmute_copy(&dwflags), core::mem::transmute(&pszpath)).into()
            }
        }
        unsafe extern "system" fn GetIDList<Identity: IKnownFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolder_Impl::GetIDList(this, core::mem::transmute_copy(&dwflags)) {
                    Ok(ok__) => {
                        ppidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFolderType<Identity: IKnownFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolder_Impl::GetFolderType(this) {
                    Ok(ok__) => {
                        pftid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetRedirectionCapabilities<Identity: IKnownFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcapabilities: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolder_Impl::GetRedirectionCapabilities(this) {
                    Ok(ok__) => {
                        pcapabilities.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFolderDefinition<Identity: IKnownFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pkfd: *mut KNOWNFOLDER_DEFINITION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKnownFolder_Impl::GetFolderDefinition(this, core::mem::transmute_copy(&pkfd)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetId: GetId::<Identity, OFFSET>,
            GetCategory: GetCategory::<Identity, OFFSET>,
            GetShellItem: GetShellItem::<Identity, OFFSET>,
            GetPath: GetPath::<Identity, OFFSET>,
            SetPath: SetPath::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
            GetFolderType: GetFolderType::<Identity, OFFSET>,
            GetRedirectionCapabilities: GetRedirectionCapabilities::<Identity, OFFSET>,
            GetFolderDefinition: GetFolderDefinition::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IKnownFolder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IKnownFolder {}
windows_core::imp::define_interface!(IKnownFolderManager, IKnownFolderManager_Vtbl, 0x8be2d872_86aa_4d47_b776_32cca40c7018);
windows_core::imp::interface_hierarchy!(IKnownFolderManager, windows_core::IUnknown);
impl IKnownFolderManager {
    pub unsafe fn FolderIdFromCsidl(&self, ncsidl: i32) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FolderIdFromCsidl)(windows_core::Interface::as_raw(self), ncsidl, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn FolderIdToCsidl(&self, rfid: *const windows_core::GUID) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FolderIdToCsidl)(windows_core::Interface::as_raw(self), rfid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFolderIds(&self, ppkfid: *mut *mut windows_core::GUID, pcount: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFolderIds)(windows_core::Interface::as_raw(self), ppkfid as _, pcount as _).ok() }
    }
    pub unsafe fn GetFolder(&self, rfid: *const windows_core::GUID) -> windows_core::Result<IKnownFolder> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFolder)(windows_core::Interface::as_raw(self), rfid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetFolderByName<P0>(&self, pszcanonicalname: P0) -> windows_core::Result<IKnownFolder>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFolderByName)(windows_core::Interface::as_raw(self), pszcanonicalname.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RegisterFolder(&self, rfid: *const windows_core::GUID, pkfd: *const KNOWNFOLDER_DEFINITION) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RegisterFolder)(windows_core::Interface::as_raw(self), rfid, pkfd).ok() }
    }
    pub unsafe fn UnregisterFolder(&self, rfid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UnregisterFolder)(windows_core::Interface::as_raw(self), rfid).ok() }
    }
    pub unsafe fn FindFolderFromPath<P0>(&self, pszpath: P0, mode: FFFP_MODE) -> windows_core::Result<IKnownFolder>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindFolderFromPath)(windows_core::Interface::as_raw(self), pszpath.param().abi(), mode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn FindFolderFromIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<IKnownFolder> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindFolderFromIDList)(windows_core::Interface::as_raw(self), pidl, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Redirect<P3>(&self, rfid: *const windows_core::GUID, hwnd: Option<super::super::Foundation::HWND>, flags: u32, psztargetpath: P3, pexclusion: Option<&[windows_core::GUID]>, ppszerror: Option<*mut windows_core::PWSTR>) -> windows_core::Result<()>
    where
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Redirect)(windows_core::Interface::as_raw(self), rfid, hwnd.unwrap_or(core::mem::zeroed()) as _, flags, psztargetpath.param().abi(), pexclusion.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), core::mem::transmute(pexclusion.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), ppszerror.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IKnownFolderManager_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub FolderIdFromCsidl: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub FolderIdToCsidl: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut i32) -> windows_core::HRESULT,
    pub GetFolderIds: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut windows_core::GUID, *mut u32) -> windows_core::HRESULT,
    pub GetFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFolderByName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RegisterFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *const KNOWNFOLDER_DEFINITION) -> windows_core::HRESULT,
    pub UnregisterFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub FindFolderFromPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, FFFP_MODE, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub FindFolderFromIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    FindFolderFromIDList: usize,
    pub Redirect: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, super::super::Foundation::HWND, u32, windows_core::PCWSTR, u32, *const windows_core::GUID, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IKnownFolderManager_Impl: windows_core::IUnknownImpl {
    fn FolderIdFromCsidl(&self, ncsidl: i32) -> windows_core::Result<windows_core::GUID>;
    fn FolderIdToCsidl(&self, rfid: *const windows_core::GUID) -> windows_core::Result<i32>;
    fn GetFolderIds(&self, ppkfid: *mut *mut windows_core::GUID, pcount: *mut u32) -> windows_core::Result<()>;
    fn GetFolder(&self, rfid: *const windows_core::GUID) -> windows_core::Result<IKnownFolder>;
    fn GetFolderByName(&self, pszcanonicalname: &windows_core::PCWSTR) -> windows_core::Result<IKnownFolder>;
    fn RegisterFolder(&self, rfid: *const windows_core::GUID, pkfd: *const KNOWNFOLDER_DEFINITION) -> windows_core::Result<()>;
    fn UnregisterFolder(&self, rfid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn FindFolderFromPath(&self, pszpath: &windows_core::PCWSTR, mode: FFFP_MODE) -> windows_core::Result<IKnownFolder>;
    fn FindFolderFromIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<IKnownFolder>;
    fn Redirect(&self, rfid: *const windows_core::GUID, hwnd: super::super::Foundation::HWND, flags: u32, psztargetpath: &windows_core::PCWSTR, cfolders: u32, pexclusion: *const windows_core::GUID, ppszerror: *mut windows_core::PWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IKnownFolderManager_Vtbl {
    pub const fn new<Identity: IKnownFolderManager_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn FolderIdFromCsidl<Identity: IKnownFolderManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ncsidl: i32, pfid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolderManager_Impl::FolderIdFromCsidl(this, core::mem::transmute_copy(&ncsidl)) {
                    Ok(ok__) => {
                        pfid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FolderIdToCsidl<Identity: IKnownFolderManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rfid: *const windows_core::GUID, pncsidl: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolderManager_Impl::FolderIdToCsidl(this, core::mem::transmute_copy(&rfid)) {
                    Ok(ok__) => {
                        pncsidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFolderIds<Identity: IKnownFolderManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppkfid: *mut *mut windows_core::GUID, pcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKnownFolderManager_Impl::GetFolderIds(this, core::mem::transmute_copy(&ppkfid), core::mem::transmute_copy(&pcount)).into()
            }
        }
        unsafe extern "system" fn GetFolder<Identity: IKnownFolderManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rfid: *const windows_core::GUID, ppkf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolderManager_Impl::GetFolder(this, core::mem::transmute_copy(&rfid)) {
                    Ok(ok__) => {
                        ppkf.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFolderByName<Identity: IKnownFolderManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszcanonicalname: windows_core::PCWSTR, ppkf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolderManager_Impl::GetFolderByName(this, core::mem::transmute(&pszcanonicalname)) {
                    Ok(ok__) => {
                        ppkf.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RegisterFolder<Identity: IKnownFolderManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rfid: *const windows_core::GUID, pkfd: *const KNOWNFOLDER_DEFINITION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKnownFolderManager_Impl::RegisterFolder(this, core::mem::transmute_copy(&rfid), core::mem::transmute_copy(&pkfd)).into()
            }
        }
        unsafe extern "system" fn UnregisterFolder<Identity: IKnownFolderManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rfid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKnownFolderManager_Impl::UnregisterFolder(this, core::mem::transmute_copy(&rfid)).into()
            }
        }
        unsafe extern "system" fn FindFolderFromPath<Identity: IKnownFolderManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR, mode: FFFP_MODE, ppkf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolderManager_Impl::FindFolderFromPath(this, core::mem::transmute(&pszpath), core::mem::transmute_copy(&mode)) {
                    Ok(ok__) => {
                        ppkf.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FindFolderFromIDList<Identity: IKnownFolderManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, ppkf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IKnownFolderManager_Impl::FindFolderFromIDList(this, core::mem::transmute_copy(&pidl)) {
                    Ok(ok__) => {
                        ppkf.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Redirect<Identity: IKnownFolderManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rfid: *const windows_core::GUID, hwnd: super::super::Foundation::HWND, flags: u32, psztargetpath: windows_core::PCWSTR, cfolders: u32, pexclusion: *const windows_core::GUID, ppszerror: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IKnownFolderManager_Impl::Redirect(this, core::mem::transmute_copy(&rfid), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&flags), core::mem::transmute(&psztargetpath), core::mem::transmute_copy(&cfolders), core::mem::transmute_copy(&pexclusion), core::mem::transmute_copy(&ppszerror)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FolderIdFromCsidl: FolderIdFromCsidl::<Identity, OFFSET>,
            FolderIdToCsidl: FolderIdToCsidl::<Identity, OFFSET>,
            GetFolderIds: GetFolderIds::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            GetFolderByName: GetFolderByName::<Identity, OFFSET>,
            RegisterFolder: RegisterFolder::<Identity, OFFSET>,
            UnregisterFolder: UnregisterFolder::<Identity, OFFSET>,
            FindFolderFromPath: FindFolderFromPath::<Identity, OFFSET>,
            FindFolderFromIDList: FindFolderFromIDList::<Identity, OFFSET>,
            Redirect: Redirect::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IKnownFolderManager as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IKnownFolderManager {}
pub const ILMM_IE4: u32 = 0u32;
windows_core::imp::define_interface!(ILaunchSourceAppUserModelId, ILaunchSourceAppUserModelId_Vtbl, 0x989191ac_28ff_4cf0_9584_e0d078bc2396);
windows_core::imp::interface_hierarchy!(ILaunchSourceAppUserModelId, windows_core::IUnknown);
impl ILaunchSourceAppUserModelId {
    pub unsafe fn GetAppUserModelId(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAppUserModelId)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ILaunchSourceAppUserModelId_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetAppUserModelId: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait ILaunchSourceAppUserModelId_Impl: windows_core::IUnknownImpl {
    fn GetAppUserModelId(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl ILaunchSourceAppUserModelId_Vtbl {
    pub const fn new<Identity: ILaunchSourceAppUserModelId_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetAppUserModelId<Identity: ILaunchSourceAppUserModelId_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, launchingapp: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ILaunchSourceAppUserModelId_Impl::GetAppUserModelId(this) {
                    Ok(ok__) => {
                        launchingapp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetAppUserModelId: GetAppUserModelId::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchSourceAppUserModelId as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ILaunchSourceAppUserModelId {}
windows_core::imp::define_interface!(ILaunchSourceViewSizePreference, ILaunchSourceViewSizePreference_Vtbl, 0xe5aa01f7_1fb8_4830_8720_4e6734cbd5f3);
windows_core::imp::interface_hierarchy!(ILaunchSourceViewSizePreference, windows_core::IUnknown);
impl ILaunchSourceViewSizePreference {
    pub unsafe fn GetSourceViewToPosition(&self) -> windows_core::Result<super::super::Foundation::HWND> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSourceViewToPosition)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSourceViewSizePreference(&self) -> windows_core::Result<APPLICATION_VIEW_SIZE_PREFERENCE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSourceViewSizePreference)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ILaunchSourceViewSizePreference_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSourceViewToPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub GetSourceViewSizePreference: unsafe extern "system" fn(*mut core::ffi::c_void, *mut APPLICATION_VIEW_SIZE_PREFERENCE) -> windows_core::HRESULT,
}
pub trait ILaunchSourceViewSizePreference_Impl: windows_core::IUnknownImpl {
    fn GetSourceViewToPosition(&self) -> windows_core::Result<super::super::Foundation::HWND>;
    fn GetSourceViewSizePreference(&self) -> windows_core::Result<APPLICATION_VIEW_SIZE_PREFERENCE>;
}
impl ILaunchSourceViewSizePreference_Vtbl {
    pub const fn new<Identity: ILaunchSourceViewSizePreference_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSourceViewToPosition<Identity: ILaunchSourceViewSizePreference_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ILaunchSourceViewSizePreference_Impl::GetSourceViewToPosition(this) {
                    Ok(ok__) => {
                        hwnd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSourceViewSizePreference<Identity: ILaunchSourceViewSizePreference_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sourcesizeafterlaunch: *mut APPLICATION_VIEW_SIZE_PREFERENCE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ILaunchSourceViewSizePreference_Impl::GetSourceViewSizePreference(this) {
                    Ok(ok__) => {
                        sourcesizeafterlaunch.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSourceViewToPosition: GetSourceViewToPosition::<Identity, OFFSET>,
            GetSourceViewSizePreference: GetSourceViewSizePreference::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchSourceViewSizePreference as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ILaunchSourceViewSizePreference {}
windows_core::imp::define_interface!(ILaunchTargetMonitor, ILaunchTargetMonitor_Vtbl, 0x266fbc7e_490d_46ed_a96b_2274db252003);
windows_core::imp::interface_hierarchy!(ILaunchTargetMonitor, windows_core::IUnknown);
impl ILaunchTargetMonitor {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetMonitor(&self) -> windows_core::Result<super::super::Graphics::Gdi::HMONITOR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMonitor)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ILaunchTargetMonitor_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetMonitor: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetMonitor: usize,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ILaunchTargetMonitor_Impl: windows_core::IUnknownImpl {
    fn GetMonitor(&self) -> windows_core::Result<super::super::Graphics::Gdi::HMONITOR>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ILaunchTargetMonitor_Vtbl {
    pub const fn new<Identity: ILaunchTargetMonitor_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetMonitor<Identity: ILaunchTargetMonitor_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, monitor: *mut super::super::Graphics::Gdi::HMONITOR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ILaunchTargetMonitor_Impl::GetMonitor(this) {
                    Ok(ok__) => {
                        monitor.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetMonitor: GetMonitor::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchTargetMonitor as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ILaunchTargetMonitor {}
windows_core::imp::define_interface!(ILaunchTargetViewSizePreference, ILaunchTargetViewSizePreference_Vtbl, 0x2f0666c6_12f7_4360_b511_a394a0553725);
windows_core::imp::interface_hierarchy!(ILaunchTargetViewSizePreference, windows_core::IUnknown);
impl ILaunchTargetViewSizePreference {
    pub unsafe fn GetTargetViewSizePreference(&self) -> windows_core::Result<APPLICATION_VIEW_SIZE_PREFERENCE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTargetViewSizePreference)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ILaunchTargetViewSizePreference_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTargetViewSizePreference: unsafe extern "system" fn(*mut core::ffi::c_void, *mut APPLICATION_VIEW_SIZE_PREFERENCE) -> windows_core::HRESULT,
}
pub trait ILaunchTargetViewSizePreference_Impl: windows_core::IUnknownImpl {
    fn GetTargetViewSizePreference(&self) -> windows_core::Result<APPLICATION_VIEW_SIZE_PREFERENCE>;
}
impl ILaunchTargetViewSizePreference_Vtbl {
    pub const fn new<Identity: ILaunchTargetViewSizePreference_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetTargetViewSizePreference<Identity: ILaunchTargetViewSizePreference_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, targetsizeonlaunch: *mut APPLICATION_VIEW_SIZE_PREFERENCE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ILaunchTargetViewSizePreference_Impl::GetTargetViewSizePreference(this) {
                    Ok(ok__) => {
                        targetsizeonlaunch.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetTargetViewSizePreference: GetTargetViewSizePreference::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchTargetViewSizePreference as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ILaunchTargetViewSizePreference {}
windows_core::imp::define_interface!(ILaunchUIContext, ILaunchUIContext_Vtbl, 0x1791e8f6_21c7_4340_882a_a6a93e3fd73b);
windows_core::imp::interface_hierarchy!(ILaunchUIContext, windows_core::IUnknown);
impl ILaunchUIContext {
    pub unsafe fn SetAssociatedWindow(&self, value: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAssociatedWindow)(windows_core::Interface::as_raw(self), value).ok() }
    }
    pub unsafe fn SetTabGroupingPreference(&self, value: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTabGroupingPreference)(windows_core::Interface::as_raw(self), value).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ILaunchUIContext_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetAssociatedWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub SetTabGroupingPreference: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
pub trait ILaunchUIContext_Impl: windows_core::IUnknownImpl {
    fn SetAssociatedWindow(&self, value: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetTabGroupingPreference(&self, value: u32) -> windows_core::Result<()>;
}
impl ILaunchUIContext_Vtbl {
    pub const fn new<Identity: ILaunchUIContext_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetAssociatedWindow<Identity: ILaunchUIContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ILaunchUIContext_Impl::SetAssociatedWindow(this, core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn SetTabGroupingPreference<Identity: ILaunchUIContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ILaunchUIContext_Impl::SetTabGroupingPreference(this, core::mem::transmute_copy(&value)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetAssociatedWindow: SetAssociatedWindow::<Identity, OFFSET>,
            SetTabGroupingPreference: SetTabGroupingPreference::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchUIContext as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ILaunchUIContext {}
windows_core::imp::define_interface!(ILaunchUIContextProvider, ILaunchUIContextProvider_Vtbl, 0x0d12c4c8_a3d9_4e24_94c1_0e20c5a956c4);
windows_core::imp::interface_hierarchy!(ILaunchUIContextProvider, windows_core::IUnknown);
impl ILaunchUIContextProvider {
    pub unsafe fn UpdateContext<P0>(&self, context: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ILaunchUIContext>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateContext)(windows_core::Interface::as_raw(self), context.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ILaunchUIContextProvider_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub UpdateContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ILaunchUIContextProvider_Impl: windows_core::IUnknownImpl {
    fn UpdateContext(&self, context: windows_core::Ref<ILaunchUIContext>) -> windows_core::Result<()>;
}
impl ILaunchUIContextProvider_Vtbl {
    pub const fn new<Identity: ILaunchUIContextProvider_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn UpdateContext<Identity: ILaunchUIContextProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, context: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ILaunchUIContextProvider_Impl::UpdateContext(this, core::mem::transmute_copy(&context)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), UpdateContext: UpdateContext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ILaunchUIContextProvider as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ILaunchUIContextProvider {}
pub const IMM_ACC_DOCKING_E_DOCKOCCUPIED: windows_core::HRESULT = windows_core::HRESULT(0x80270231_u32 as _);
pub const IMM_ACC_DOCKING_E_INSUFFICIENTHEIGHT: windows_core::HRESULT = windows_core::HRESULT(0x80270230_u32 as _);
pub const IMSC_E_SHELL_COMPONENT_STARTUP_FAILURE: windows_core::HRESULT = windows_core::HRESULT(0x80270233_u32 as _);
windows_core::imp::define_interface!(IMenuBand, IMenuBand_Vtbl, 0x568804cd_cbd7_11d0_9816_00c04fd91972);
windows_core::imp::interface_hierarchy!(IMenuBand, windows_core::IUnknown);
impl IMenuBand {
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn IsMenuMessage(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsMenuMessage)(windows_core::Interface::as_raw(self), pmsg).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn TranslateMenuMessage(&self, pmsg: *mut super::WindowsAndMessaging::MSG, plret: *mut super::super::Foundation::LRESULT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TranslateMenuMessage)(windows_core::Interface::as_raw(self), pmsg as _, plret as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IMenuBand_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub IsMenuMessage: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    IsMenuMessage: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub TranslateMenuMessage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::WindowsAndMessaging::MSG, *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    TranslateMenuMessage: usize,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IMenuBand_Impl: windows_core::IUnknownImpl {
    fn IsMenuMessage(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
    fn TranslateMenuMessage(&self, pmsg: *mut super::WindowsAndMessaging::MSG, plret: *mut super::super::Foundation::LRESULT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IMenuBand_Vtbl {
    pub const fn new<Identity: IMenuBand_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn IsMenuMessage<Identity: IMenuBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IMenuBand_Impl::IsMenuMessage(this, core::mem::transmute_copy(&pmsg)).into()
            }
        }
        unsafe extern "system" fn TranslateMenuMessage<Identity: IMenuBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *mut super::WindowsAndMessaging::MSG, plret: *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IMenuBand_Impl::TranslateMenuMessage(this, core::mem::transmute_copy(&pmsg), core::mem::transmute_copy(&plret)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsMenuMessage: IsMenuMessage::<Identity, OFFSET>,
            TranslateMenuMessage: TranslateMenuMessage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMenuBand as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IMenuBand {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IMenuPopup, IMenuPopup_Vtbl, 0xd1e7afeb_6a2e_11d0_8c78_00c04fd918b4);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IMenuPopup {
    type Target = IDeskBar;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IMenuPopup, windows_core::IUnknown, super::super::System::Ole::IOleWindow, IDeskBar);
#[cfg(feature = "Win32_System_Ole")]
impl IMenuPopup {
    pub unsafe fn Popup(&self, ppt: *const super::super::Foundation::POINTL, prcexclude: Option<*const super::super::Foundation::RECTL>, dwflags: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Popup)(windows_core::Interface::as_raw(self), ppt, prcexclude.unwrap_or(core::mem::zeroed()) as _, dwflags).ok() }
    }
    pub unsafe fn OnSelect(&self, dwselecttype: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnSelect)(windows_core::Interface::as_raw(self), dwselecttype).ok() }
    }
    pub unsafe fn SetSubMenu<P0>(&self, pmp: P0, fset: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IMenuPopup>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSubMenu)(windows_core::Interface::as_raw(self), pmp.param().abi(), fset.into()).ok() }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IMenuPopup_Vtbl {
    pub base__: IDeskBar_Vtbl,
    pub Popup: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::POINTL, *const super::super::Foundation::RECTL, i32) -> windows_core::HRESULT,
    pub OnSelect: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetSubMenu: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Ole")]
pub trait IMenuPopup_Impl: IDeskBar_Impl {
    fn Popup(&self, ppt: *const super::super::Foundation::POINTL, prcexclude: *const super::super::Foundation::RECTL, dwflags: i32) -> windows_core::Result<()>;
    fn OnSelect(&self, dwselecttype: u32) -> windows_core::Result<()>;
    fn SetSubMenu(&self, pmp: windows_core::Ref<IMenuPopup>, fset: windows_core::BOOL) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Ole")]
impl IMenuPopup_Vtbl {
    pub const fn new<Identity: IMenuPopup_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Popup<Identity: IMenuPopup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *const super::super::Foundation::POINTL, prcexclude: *const super::super::Foundation::RECTL, dwflags: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IMenuPopup_Impl::Popup(this, core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&prcexclude), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn OnSelect<Identity: IMenuPopup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwselecttype: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IMenuPopup_Impl::OnSelect(this, core::mem::transmute_copy(&dwselecttype)).into()
            }
        }
        unsafe extern "system" fn SetSubMenu<Identity: IMenuPopup_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmp: *mut core::ffi::c_void, fset: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IMenuPopup_Impl::SetSubMenu(this, core::mem::transmute_copy(&pmp), core::mem::transmute_copy(&fset)).into()
            }
        }
        Self {
            base__: IDeskBar_Vtbl::new::<Identity, OFFSET>(),
            Popup: Popup::<Identity, OFFSET>,
            OnSelect: OnSelect::<Identity, OFFSET>,
            SetSubMenu: SetSubMenu::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IMenuPopup as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID || iid == &<IDeskBar as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Ole")]
impl windows_core::RuntimeName for IMenuPopup {}
windows_core::imp::define_interface!(IModalWindow, IModalWindow_Vtbl, 0xb4db1657_70d7_485e_8e3e_6fcb5a5c1802);
windows_core::imp::interface_hierarchy!(IModalWindow, windows_core::IUnknown);
impl IModalWindow {
    pub unsafe fn Show(&self, hwndowner: Option<super::super::Foundation::HWND>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Show)(windows_core::Interface::as_raw(self), hwndowner.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IModalWindow_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Show: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
}
pub trait IModalWindow_Impl: windows_core::IUnknownImpl {
    fn Show(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
impl IModalWindow_Vtbl {
    pub const fn new<Identity: IModalWindow_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Show<Identity: IModalWindow_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IModalWindow_Impl::Show(this, core::mem::transmute_copy(&hwndowner)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Show: Show::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IModalWindow as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IModalWindow {}
pub const INTERNET_MAX_PATH_LENGTH: u32 = 2048u32;
pub const INTERNET_MAX_SCHEME_LENGTH: u32 = 32u32;
windows_core::imp::define_interface!(INameSpaceTreeAccessible, INameSpaceTreeAccessible_Vtbl, 0x71f312de_43ed_4190_8477_e9536b82350b);
windows_core::imp::interface_hierarchy!(INameSpaceTreeAccessible, windows_core::IUnknown);
impl INameSpaceTreeAccessible {
    pub unsafe fn OnGetDefaultAccessibilityAction<P0>(&self, psi: P0) -> windows_core::Result<windows_core::BSTR>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OnGetDefaultAccessibilityAction)(windows_core::Interface::as_raw(self), psi.param().abi(), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn OnDoDefaultAccessibilityAction<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnDoDefaultAccessibilityAction)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn OnGetAccessibilityRole<P0>(&self, psi: P0) -> windows_core::Result<super::super::System::Variant::VARIANT>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).OnGetAccessibilityRole)(windows_core::Interface::as_raw(self), psi.param().abi(), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INameSpaceTreeAccessible_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnGetDefaultAccessibilityAction: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnDoDefaultAccessibilityAction: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub OnGetAccessibilityRole: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    OnGetAccessibilityRole: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait INameSpaceTreeAccessible_Impl: windows_core::IUnknownImpl {
    fn OnGetDefaultAccessibilityAction(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<windows_core::BSTR>;
    fn OnDoDefaultAccessibilityAction(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn OnGetAccessibilityRole(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<super::super::System::Variant::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl INameSpaceTreeAccessible_Vtbl {
    pub const fn new<Identity: INameSpaceTreeAccessible_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnGetDefaultAccessibilityAction<Identity: INameSpaceTreeAccessible_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pbstrdefaultaction: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeAccessible_Impl::OnGetDefaultAccessibilityAction(this, core::mem::transmute_copy(&psi)) {
                    Ok(ok__) => {
                        pbstrdefaultaction.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OnDoDefaultAccessibilityAction<Identity: INameSpaceTreeAccessible_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeAccessible_Impl::OnDoDefaultAccessibilityAction(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn OnGetAccessibilityRole<Identity: INameSpaceTreeAccessible_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pvarrole: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeAccessible_Impl::OnGetAccessibilityRole(this, core::mem::transmute_copy(&psi)) {
                    Ok(ok__) => {
                        pvarrole.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnGetDefaultAccessibilityAction: OnGetDefaultAccessibilityAction::<Identity, OFFSET>,
            OnDoDefaultAccessibilityAction: OnDoDefaultAccessibilityAction::<Identity, OFFSET>,
            OnGetAccessibilityRole: OnGetAccessibilityRole::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeAccessible as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for INameSpaceTreeAccessible {}
windows_core::imp::define_interface!(INameSpaceTreeControl, INameSpaceTreeControl_Vtbl, 0x028212a3_b627_47e9_8856_c14265554e4f);
windows_core::imp::interface_hierarchy!(INameSpaceTreeControl, windows_core::IUnknown);
impl INameSpaceTreeControl {
    pub unsafe fn Initialize(&self, hwndparent: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT, nsctsflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), hwndparent, prc, nsctsflags).ok() }
    }
    pub unsafe fn TreeAdvise<P0>(&self, punk: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).TreeAdvise)(windows_core::Interface::as_raw(self), punk.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn TreeUnadvise(&self, dwcookie: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TreeUnadvise)(windows_core::Interface::as_raw(self), dwcookie).ok() }
    }
    pub unsafe fn AppendRoot<P0, P3>(&self, psiroot: P0, grfenumflags: u32, grfrootstyle: u32, pif: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P3: windows_core::Param<IShellItemFilter>,
    {
        unsafe { (windows_core::Interface::vtable(self).AppendRoot)(windows_core::Interface::as_raw(self), psiroot.param().abi(), grfenumflags, grfrootstyle, pif.param().abi()).ok() }
    }
    pub unsafe fn InsertRoot<P1, P4>(&self, iindex: i32, psiroot: P1, grfenumflags: u32, grfrootstyle: u32, pif: P4) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
        P4: windows_core::Param<IShellItemFilter>,
    {
        unsafe { (windows_core::Interface::vtable(self).InsertRoot)(windows_core::Interface::as_raw(self), iindex, psiroot.param().abi(), grfenumflags, grfrootstyle, pif.param().abi()).ok() }
    }
    pub unsafe fn RemoveRoot<P0>(&self, psiroot: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveRoot)(windows_core::Interface::as_raw(self), psiroot.param().abi()).ok() }
    }
    pub unsafe fn RemoveAllRoots(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveAllRoots)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetRootItems(&self) -> windows_core::Result<IShellItemArray> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRootItems)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetItemState<P0>(&self, psi: P0, nstcismask: u32, nstcisflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetItemState)(windows_core::Interface::as_raw(self), psi.param().abi(), nstcismask, nstcisflags).ok() }
    }
    pub unsafe fn GetItemState<P0>(&self, psi: P0, nstcismask: u32) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemState)(windows_core::Interface::as_raw(self), psi.param().abi(), nstcismask, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSelectedItems(&self) -> windows_core::Result<IShellItemArray> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSelectedItems)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetItemCustomState<P0>(&self, psi: P0) -> windows_core::Result<i32>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemCustomState)(windows_core::Interface::as_raw(self), psi.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetItemCustomState<P0>(&self, psi: P0, istatenumber: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetItemCustomState)(windows_core::Interface::as_raw(self), psi.param().abi(), istatenumber).ok() }
    }
    pub unsafe fn EnsureItemVisible<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).EnsureItemVisible)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn SetTheme<P0>(&self, psztheme: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTheme)(windows_core::Interface::as_raw(self), psztheme.param().abi()).ok() }
    }
    pub unsafe fn GetNextItem<P0>(&self, psi: P0, nstcgi: NSTCGNI) -> windows_core::Result<IShellItem>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNextItem)(windows_core::Interface::as_raw(self), psi.param().abi(), nstcgi, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn HitTest(&self, ppt: *const super::super::Foundation::POINT) -> windows_core::Result<IShellItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).HitTest)(windows_core::Interface::as_raw(self), ppt, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetItemRect<P0>(&self, psi: P0) -> windows_core::Result<super::super::Foundation::RECT>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemRect)(windows_core::Interface::as_raw(self), psi.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CollapseAll(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CollapseAll)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INameSpaceTreeControl_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const super::super::Foundation::RECT, u32) -> windows_core::HRESULT,
    pub TreeAdvise: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub TreeUnadvise: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub AppendRoot: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub InsertRoot: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut core::ffi::c_void, u32, u32, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveRoot: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveAllRoots: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRootItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetItemState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetItemState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub GetSelectedItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetItemCustomState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetItemCustomState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub EnsureItemVisible: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetTheme: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetNextItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, NSTCGNI, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub HitTest: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::POINT, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetItemRect: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub CollapseAll: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait INameSpaceTreeControl_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, hwndparent: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT, nsctsflags: u32) -> windows_core::Result<()>;
    fn TreeAdvise(&self, punk: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<u32>;
    fn TreeUnadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn AppendRoot(&self, psiroot: windows_core::Ref<IShellItem>, grfenumflags: u32, grfrootstyle: u32, pif: windows_core::Ref<IShellItemFilter>) -> windows_core::Result<()>;
    fn InsertRoot(&self, iindex: i32, psiroot: windows_core::Ref<IShellItem>, grfenumflags: u32, grfrootstyle: u32, pif: windows_core::Ref<IShellItemFilter>) -> windows_core::Result<()>;
    fn RemoveRoot(&self, psiroot: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn RemoveAllRoots(&self) -> windows_core::Result<()>;
    fn GetRootItems(&self) -> windows_core::Result<IShellItemArray>;
    fn SetItemState(&self, psi: windows_core::Ref<IShellItem>, nstcismask: u32, nstcisflags: u32) -> windows_core::Result<()>;
    fn GetItemState(&self, psi: windows_core::Ref<IShellItem>, nstcismask: u32) -> windows_core::Result<u32>;
    fn GetSelectedItems(&self) -> windows_core::Result<IShellItemArray>;
    fn GetItemCustomState(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<i32>;
    fn SetItemCustomState(&self, psi: windows_core::Ref<IShellItem>, istatenumber: i32) -> windows_core::Result<()>;
    fn EnsureItemVisible(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn SetTheme(&self, psztheme: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetNextItem(&self, psi: windows_core::Ref<IShellItem>, nstcgi: NSTCGNI) -> windows_core::Result<IShellItem>;
    fn HitTest(&self, ppt: *const super::super::Foundation::POINT) -> windows_core::Result<IShellItem>;
    fn GetItemRect(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<super::super::Foundation::RECT>;
    fn CollapseAll(&self) -> windows_core::Result<()>;
}
impl INameSpaceTreeControl_Vtbl {
    pub const fn new<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT, nsctsflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::Initialize(this, core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&prc), core::mem::transmute_copy(&nsctsflags)).into()
            }
        }
        unsafe extern "system" fn TreeAdvise<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControl_Impl::TreeAdvise(this, core::mem::transmute_copy(&punk)) {
                    Ok(ok__) => {
                        pdwcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn TreeUnadvise<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::TreeUnadvise(this, core::mem::transmute_copy(&dwcookie)).into()
            }
        }
        unsafe extern "system" fn AppendRoot<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiroot: *mut core::ffi::c_void, grfenumflags: u32, grfrootstyle: u32, pif: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::AppendRoot(this, core::mem::transmute_copy(&psiroot), core::mem::transmute_copy(&grfenumflags), core::mem::transmute_copy(&grfrootstyle), core::mem::transmute_copy(&pif)).into()
            }
        }
        unsafe extern "system" fn InsertRoot<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iindex: i32, psiroot: *mut core::ffi::c_void, grfenumflags: u32, grfrootstyle: u32, pif: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::InsertRoot(this, core::mem::transmute_copy(&iindex), core::mem::transmute_copy(&psiroot), core::mem::transmute_copy(&grfenumflags), core::mem::transmute_copy(&grfrootstyle), core::mem::transmute_copy(&pif)).into()
            }
        }
        unsafe extern "system" fn RemoveRoot<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiroot: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::RemoveRoot(this, core::mem::transmute_copy(&psiroot)).into()
            }
        }
        unsafe extern "system" fn RemoveAllRoots<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::RemoveAllRoots(this).into()
            }
        }
        unsafe extern "system" fn GetRootItems<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsiarootitems: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControl_Impl::GetRootItems(this) {
                    Ok(ok__) => {
                        ppsiarootitems.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetItemState<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcismask: u32, nstcisflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::SetItemState(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&nstcismask), core::mem::transmute_copy(&nstcisflags)).into()
            }
        }
        unsafe extern "system" fn GetItemState<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcismask: u32, pnstcisflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControl_Impl::GetItemState(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&nstcismask)) {
                    Ok(ok__) => {
                        pnstcisflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSelectedItems<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiaitems: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControl_Impl::GetSelectedItems(this) {
                    Ok(ok__) => {
                        psiaitems.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItemCustomState<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pistatenumber: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControl_Impl::GetItemCustomState(this, core::mem::transmute_copy(&psi)) {
                    Ok(ok__) => {
                        pistatenumber.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetItemCustomState<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, istatenumber: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::SetItemCustomState(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&istatenumber)).into()
            }
        }
        unsafe extern "system" fn EnsureItemVisible<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::EnsureItemVisible(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn SetTheme<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztheme: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::SetTheme(this, core::mem::transmute(&psztheme)).into()
            }
        }
        unsafe extern "system" fn GetNextItem<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcgi: NSTCGNI, ppsinext: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControl_Impl::GetNextItem(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&nstcgi)) {
                    Ok(ok__) => {
                        ppsinext.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn HitTest<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *const super::super::Foundation::POINT, ppsiout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControl_Impl::HitTest(this, core::mem::transmute_copy(&ppt)) {
                    Ok(ok__) => {
                        ppsiout.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItemRect<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, prect: *mut super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControl_Impl::GetItemRect(this, core::mem::transmute_copy(&psi)) {
                    Ok(ok__) => {
                        prect.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CollapseAll<Identity: INameSpaceTreeControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl_Impl::CollapseAll(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            TreeAdvise: TreeAdvise::<Identity, OFFSET>,
            TreeUnadvise: TreeUnadvise::<Identity, OFFSET>,
            AppendRoot: AppendRoot::<Identity, OFFSET>,
            InsertRoot: InsertRoot::<Identity, OFFSET>,
            RemoveRoot: RemoveRoot::<Identity, OFFSET>,
            RemoveAllRoots: RemoveAllRoots::<Identity, OFFSET>,
            GetRootItems: GetRootItems::<Identity, OFFSET>,
            SetItemState: SetItemState::<Identity, OFFSET>,
            GetItemState: GetItemState::<Identity, OFFSET>,
            GetSelectedItems: GetSelectedItems::<Identity, OFFSET>,
            GetItemCustomState: GetItemCustomState::<Identity, OFFSET>,
            SetItemCustomState: SetItemCustomState::<Identity, OFFSET>,
            EnsureItemVisible: EnsureItemVisible::<Identity, OFFSET>,
            SetTheme: SetTheme::<Identity, OFFSET>,
            GetNextItem: GetNextItem::<Identity, OFFSET>,
            HitTest: HitTest::<Identity, OFFSET>,
            GetItemRect: GetItemRect::<Identity, OFFSET>,
            CollapseAll: CollapseAll::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControl as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for INameSpaceTreeControl {}
windows_core::imp::define_interface!(INameSpaceTreeControl2, INameSpaceTreeControl2_Vtbl, 0x7cc7aed8_290e_49bc_8945_c1401cc9306c);
impl core::ops::Deref for INameSpaceTreeControl2 {
    type Target = INameSpaceTreeControl;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(INameSpaceTreeControl2, windows_core::IUnknown, INameSpaceTreeControl);
impl INameSpaceTreeControl2 {
    pub unsafe fn SetControlStyle(&self, nstcsmask: u32, nstcsstyle: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetControlStyle)(windows_core::Interface::as_raw(self), nstcsmask, nstcsstyle).ok() }
    }
    pub unsafe fn GetControlStyle(&self, nstcsmask: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetControlStyle)(windows_core::Interface::as_raw(self), nstcsmask, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetControlStyle2(&self, nstcsmask: NSTCSTYLE2, nstcsstyle: NSTCSTYLE2) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetControlStyle2)(windows_core::Interface::as_raw(self), nstcsmask, nstcsstyle).ok() }
    }
    pub unsafe fn GetControlStyle2(&self, nstcsmask: NSTCSTYLE2) -> windows_core::Result<NSTCSTYLE2> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetControlStyle2)(windows_core::Interface::as_raw(self), nstcsmask, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INameSpaceTreeControl2_Vtbl {
    pub base__: INameSpaceTreeControl_Vtbl,
    pub SetControlStyle: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub GetControlStyle: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub SetControlStyle2: unsafe extern "system" fn(*mut core::ffi::c_void, NSTCSTYLE2, NSTCSTYLE2) -> windows_core::HRESULT,
    pub GetControlStyle2: unsafe extern "system" fn(*mut core::ffi::c_void, NSTCSTYLE2, *mut NSTCSTYLE2) -> windows_core::HRESULT,
}
pub trait INameSpaceTreeControl2_Impl: INameSpaceTreeControl_Impl {
    fn SetControlStyle(&self, nstcsmask: u32, nstcsstyle: u32) -> windows_core::Result<()>;
    fn GetControlStyle(&self, nstcsmask: u32) -> windows_core::Result<u32>;
    fn SetControlStyle2(&self, nstcsmask: NSTCSTYLE2, nstcsstyle: NSTCSTYLE2) -> windows_core::Result<()>;
    fn GetControlStyle2(&self, nstcsmask: NSTCSTYLE2) -> windows_core::Result<NSTCSTYLE2>;
}
impl INameSpaceTreeControl2_Vtbl {
    pub const fn new<Identity: INameSpaceTreeControl2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetControlStyle<Identity: INameSpaceTreeControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nstcsmask: u32, nstcsstyle: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl2_Impl::SetControlStyle(this, core::mem::transmute_copy(&nstcsmask), core::mem::transmute_copy(&nstcsstyle)).into()
            }
        }
        unsafe extern "system" fn GetControlStyle<Identity: INameSpaceTreeControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nstcsmask: u32, pnstcsstyle: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControl2_Impl::GetControlStyle(this, core::mem::transmute_copy(&nstcsmask)) {
                    Ok(ok__) => {
                        pnstcsstyle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetControlStyle2<Identity: INameSpaceTreeControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nstcsmask: NSTCSTYLE2, nstcsstyle: NSTCSTYLE2) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControl2_Impl::SetControlStyle2(this, core::mem::transmute_copy(&nstcsmask), core::mem::transmute_copy(&nstcsstyle)).into()
            }
        }
        unsafe extern "system" fn GetControlStyle2<Identity: INameSpaceTreeControl2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nstcsmask: NSTCSTYLE2, pnstcsstyle: *mut NSTCSTYLE2) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControl2_Impl::GetControlStyle2(this, core::mem::transmute_copy(&nstcsmask)) {
                    Ok(ok__) => {
                        pnstcsstyle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: INameSpaceTreeControl_Vtbl::new::<Identity, OFFSET>(),
            SetControlStyle: SetControlStyle::<Identity, OFFSET>,
            GetControlStyle: GetControlStyle::<Identity, OFFSET>,
            SetControlStyle2: SetControlStyle2::<Identity, OFFSET>,
            GetControlStyle2: GetControlStyle2::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControl2 as windows_core::Interface>::IID || iid == &<INameSpaceTreeControl as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for INameSpaceTreeControl2 {}
windows_core::imp::define_interface!(INameSpaceTreeControlCustomDraw, INameSpaceTreeControlCustomDraw_Vtbl, 0x2d3ba758_33ee_42d5_bb7b_5f3431d86c78);
windows_core::imp::interface_hierarchy!(INameSpaceTreeControlCustomDraw, windows_core::IUnknown);
impl INameSpaceTreeControlCustomDraw {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn PrePaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::LRESULT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PrePaint)(windows_core::Interface::as_raw(self), hdc, prc, &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn PostPaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PostPaint)(windows_core::Interface::as_raw(self), hdc, prc).ok() }
    }
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls"))]
    pub unsafe fn ItemPrePaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, pnstccditem: *const NSTCCUSTOMDRAW, pclrtext: *mut super::super::Foundation::COLORREF, pclrtextbk: *mut super::super::Foundation::COLORREF, plres: *mut super::super::Foundation::LRESULT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ItemPrePaint)(windows_core::Interface::as_raw(self), hdc, prc, core::mem::transmute(pnstccditem), pclrtext as _, pclrtextbk as _, plres as _).ok() }
    }
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls"))]
    pub unsafe fn ItemPostPaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, pnstccditem: *const NSTCCUSTOMDRAW) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ItemPostPaint)(windows_core::Interface::as_raw(self), hdc, prc, core::mem::transmute(pnstccditem)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INameSpaceTreeControlCustomDraw_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub PrePaint: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HDC, *const super::super::Foundation::RECT, *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    PrePaint: usize,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub PostPaint: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HDC, *const super::super::Foundation::RECT) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    PostPaint: usize,
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls"))]
    pub ItemPrePaint: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HDC, *const super::super::Foundation::RECT, *const NSTCCUSTOMDRAW, *mut super::super::Foundation::COLORREF, *mut super::super::Foundation::COLORREF, *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls")))]
    ItemPrePaint: usize,
    #[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls"))]
    pub ItemPostPaint: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HDC, *const super::super::Foundation::RECT, *const NSTCCUSTOMDRAW) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls")))]
    ItemPostPaint: usize,
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls"))]
pub trait INameSpaceTreeControlCustomDraw_Impl: windows_core::IUnknownImpl {
    fn PrePaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::LRESULT>;
    fn PostPaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn ItemPrePaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, pnstccditem: *const NSTCCUSTOMDRAW, pclrtext: *mut super::super::Foundation::COLORREF, pclrtextbk: *mut super::super::Foundation::COLORREF, plres: *mut super::super::Foundation::LRESULT) -> windows_core::Result<()>;
    fn ItemPostPaint(&self, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, pnstccditem: *const NSTCCUSTOMDRAW) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls"))]
impl INameSpaceTreeControlCustomDraw_Vtbl {
    pub const fn new<Identity: INameSpaceTreeControlCustomDraw_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn PrePaint<Identity: INameSpaceTreeControlCustomDraw_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, plres: *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControlCustomDraw_Impl::PrePaint(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&prc)) {
                    Ok(ok__) => {
                        plres.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PostPaint<Identity: INameSpaceTreeControlCustomDraw_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlCustomDraw_Impl::PostPaint(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&prc)).into()
            }
        }
        unsafe extern "system" fn ItemPrePaint<Identity: INameSpaceTreeControlCustomDraw_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, pnstccditem: *const NSTCCUSTOMDRAW, pclrtext: *mut super::super::Foundation::COLORREF, pclrtextbk: *mut super::super::Foundation::COLORREF, plres: *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlCustomDraw_Impl::ItemPrePaint(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&prc), core::mem::transmute_copy(&pnstccditem), core::mem::transmute_copy(&pclrtext), core::mem::transmute_copy(&pclrtextbk), core::mem::transmute_copy(&plres)).into()
            }
        }
        unsafe extern "system" fn ItemPostPaint<Identity: INameSpaceTreeControlCustomDraw_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, prc: *const super::super::Foundation::RECT, pnstccditem: *const NSTCCUSTOMDRAW) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlCustomDraw_Impl::ItemPostPaint(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&prc), core::mem::transmute_copy(&pnstccditem)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            PrePaint: PrePaint::<Identity, OFFSET>,
            PostPaint: PostPaint::<Identity, OFFSET>,
            ItemPrePaint: ItemPrePaint::<Identity, OFFSET>,
            ItemPostPaint: ItemPostPaint::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControlCustomDraw as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_UI_Controls"))]
impl windows_core::RuntimeName for INameSpaceTreeControlCustomDraw {}
windows_core::imp::define_interface!(INameSpaceTreeControlDropHandler, INameSpaceTreeControlDropHandler_Vtbl, 0xf9c665d6_c2f2_4c19_bf33_8322d7352f51);
windows_core::imp::interface_hierarchy!(INameSpaceTreeControlDropHandler, windows_core::IUnknown);
impl INameSpaceTreeControlDropHandler {
    pub unsafe fn OnDragEnter<P0, P1>(&self, psiover: P0, psiadata: P1, foutsidesource: bool, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItemArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnDragEnter)(windows_core::Interface::as_raw(self), psiover.param().abi(), psiadata.param().abi(), foutsidesource.into(), grfkeystate, pdweffect as _).ok() }
    }
    pub unsafe fn OnDragOver<P0, P1>(&self, psiover: P0, psiadata: P1, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItemArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnDragOver)(windows_core::Interface::as_raw(self), psiover.param().abi(), psiadata.param().abi(), grfkeystate, pdweffect as _).ok() }
    }
    pub unsafe fn OnDragPosition<P0, P1>(&self, psiover: P0, psiadata: P1, inewposition: i32, ioldposition: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItemArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnDragPosition)(windows_core::Interface::as_raw(self), psiover.param().abi(), psiadata.param().abi(), inewposition, ioldposition).ok() }
    }
    pub unsafe fn OnDrop<P0, P1>(&self, psiover: P0, psiadata: P1, iposition: i32, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItemArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnDrop)(windows_core::Interface::as_raw(self), psiover.param().abi(), psiadata.param().abi(), iposition, grfkeystate, pdweffect as _).ok() }
    }
    pub unsafe fn OnDropPosition<P0, P1>(&self, psiover: P0, psiadata: P1, inewposition: i32, ioldposition: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItemArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnDropPosition)(windows_core::Interface::as_raw(self), psiover.param().abi(), psiadata.param().abi(), inewposition, ioldposition).ok() }
    }
    pub unsafe fn OnDragLeave<P0>(&self, psiover: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnDragLeave)(windows_core::Interface::as_raw(self), psiover.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INameSpaceTreeControlDropHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnDragEnter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL, u32, *mut u32) -> windows_core::HRESULT,
    pub OnDragOver: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub OnDragPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, i32, i32) -> windows_core::HRESULT,
    pub OnDrop: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, i32, u32, *mut u32) -> windows_core::HRESULT,
    pub OnDropPosition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, i32, i32) -> windows_core::HRESULT,
    pub OnDragLeave: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait INameSpaceTreeControlDropHandler_Impl: windows_core::IUnknownImpl {
    fn OnDragEnter(&self, psiover: windows_core::Ref<IShellItem>, psiadata: windows_core::Ref<IShellItemArray>, foutsidesource: windows_core::BOOL, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::Result<()>;
    fn OnDragOver(&self, psiover: windows_core::Ref<IShellItem>, psiadata: windows_core::Ref<IShellItemArray>, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::Result<()>;
    fn OnDragPosition(&self, psiover: windows_core::Ref<IShellItem>, psiadata: windows_core::Ref<IShellItemArray>, inewposition: i32, ioldposition: i32) -> windows_core::Result<()>;
    fn OnDrop(&self, psiover: windows_core::Ref<IShellItem>, psiadata: windows_core::Ref<IShellItemArray>, iposition: i32, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::Result<()>;
    fn OnDropPosition(&self, psiover: windows_core::Ref<IShellItem>, psiadata: windows_core::Ref<IShellItemArray>, inewposition: i32, ioldposition: i32) -> windows_core::Result<()>;
    fn OnDragLeave(&self, psiover: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
}
impl INameSpaceTreeControlDropHandler_Vtbl {
    pub const fn new<Identity: INameSpaceTreeControlDropHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnDragEnter<Identity: INameSpaceTreeControlDropHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void, psiadata: *mut core::ffi::c_void, foutsidesource: windows_core::BOOL, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlDropHandler_Impl::OnDragEnter(this, core::mem::transmute_copy(&psiover), core::mem::transmute_copy(&psiadata), core::mem::transmute_copy(&foutsidesource), core::mem::transmute_copy(&grfkeystate), core::mem::transmute_copy(&pdweffect)).into()
            }
        }
        unsafe extern "system" fn OnDragOver<Identity: INameSpaceTreeControlDropHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void, psiadata: *mut core::ffi::c_void, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlDropHandler_Impl::OnDragOver(this, core::mem::transmute_copy(&psiover), core::mem::transmute_copy(&psiadata), core::mem::transmute_copy(&grfkeystate), core::mem::transmute_copy(&pdweffect)).into()
            }
        }
        unsafe extern "system" fn OnDragPosition<Identity: INameSpaceTreeControlDropHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void, psiadata: *mut core::ffi::c_void, inewposition: i32, ioldposition: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlDropHandler_Impl::OnDragPosition(this, core::mem::transmute_copy(&psiover), core::mem::transmute_copy(&psiadata), core::mem::transmute_copy(&inewposition), core::mem::transmute_copy(&ioldposition)).into()
            }
        }
        unsafe extern "system" fn OnDrop<Identity: INameSpaceTreeControlDropHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void, psiadata: *mut core::ffi::c_void, iposition: i32, grfkeystate: u32, pdweffect: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlDropHandler_Impl::OnDrop(this, core::mem::transmute_copy(&psiover), core::mem::transmute_copy(&psiadata), core::mem::transmute_copy(&iposition), core::mem::transmute_copy(&grfkeystate), core::mem::transmute_copy(&pdweffect)).into()
            }
        }
        unsafe extern "system" fn OnDropPosition<Identity: INameSpaceTreeControlDropHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void, psiadata: *mut core::ffi::c_void, inewposition: i32, ioldposition: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlDropHandler_Impl::OnDropPosition(this, core::mem::transmute_copy(&psiover), core::mem::transmute_copy(&psiadata), core::mem::transmute_copy(&inewposition), core::mem::transmute_copy(&ioldposition)).into()
            }
        }
        unsafe extern "system" fn OnDragLeave<Identity: INameSpaceTreeControlDropHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiover: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlDropHandler_Impl::OnDragLeave(this, core::mem::transmute_copy(&psiover)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnDragEnter: OnDragEnter::<Identity, OFFSET>,
            OnDragOver: OnDragOver::<Identity, OFFSET>,
            OnDragPosition: OnDragPosition::<Identity, OFFSET>,
            OnDrop: OnDrop::<Identity, OFFSET>,
            OnDropPosition: OnDropPosition::<Identity, OFFSET>,
            OnDragLeave: OnDragLeave::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControlDropHandler as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for INameSpaceTreeControlDropHandler {}
windows_core::imp::define_interface!(INameSpaceTreeControlEvents, INameSpaceTreeControlEvents_Vtbl, 0x93d77985_b3d8_4484_8318_672cdda002ce);
windows_core::imp::interface_hierarchy!(INameSpaceTreeControlEvents, windows_core::IUnknown);
impl INameSpaceTreeControlEvents {
    pub unsafe fn OnItemClick<P0>(&self, psi: P0, nstcehittest: u32, nstceclicktype: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnItemClick)(windows_core::Interface::as_raw(self), psi.param().abi(), nstcehittest, nstceclicktype).ok() }
    }
    pub unsafe fn OnPropertyItemCommit<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnPropertyItemCommit)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn OnItemStateChanging<P0>(&self, psi: P0, nstcismask: u32, nstcisstate: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnItemStateChanging)(windows_core::Interface::as_raw(self), psi.param().abi(), nstcismask, nstcisstate).ok() }
    }
    pub unsafe fn OnItemStateChanged<P0>(&self, psi: P0, nstcismask: u32, nstcisstate: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnItemStateChanged)(windows_core::Interface::as_raw(self), psi.param().abi(), nstcismask, nstcisstate).ok() }
    }
    pub unsafe fn OnSelectionChanged<P0>(&self, psiaselection: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItemArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnSelectionChanged)(windows_core::Interface::as_raw(self), psiaselection.param().abi()).ok() }
    }
    pub unsafe fn OnKeyboardInput(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnKeyboardInput)(windows_core::Interface::as_raw(self), umsg, wparam, lparam).ok() }
    }
    pub unsafe fn OnBeforeExpand<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnBeforeExpand)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn OnAfterExpand<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnAfterExpand)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn OnBeginLabelEdit<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnBeginLabelEdit)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn OnEndLabelEdit<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnEndLabelEdit)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn OnGetToolTip<P0>(&self, psi: P0, psztip: &mut [u16]) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnGetToolTip)(windows_core::Interface::as_raw(self), psi.param().abi(), core::mem::transmute(psztip.as_ptr()), psztip.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn OnBeforeItemDelete<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnBeforeItemDelete)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn OnItemAdded<P0>(&self, psi: P0, fisroot: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnItemAdded)(windows_core::Interface::as_raw(self), psi.param().abi(), fisroot.into()).ok() }
    }
    pub unsafe fn OnItemDeleted<P0>(&self, psi: P0, fisroot: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnItemDeleted)(windows_core::Interface::as_raw(self), psi.param().abi(), fisroot.into()).ok() }
    }
    pub unsafe fn OnBeforeContextMenu<P0>(&self, psi: P0, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnBeforeContextMenu)(windows_core::Interface::as_raw(self), psi.param().abi(), riid, ppv as _).ok() }
    }
    pub unsafe fn OnAfterContextMenu<P0, P1>(&self, psi: P0, pcmin: P1, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IContextMenu>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnAfterContextMenu)(windows_core::Interface::as_raw(self), psi.param().abi(), pcmin.param().abi(), riid, ppv as _).ok() }
    }
    pub unsafe fn OnBeforeStateImageChange<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnBeforeStateImageChange)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn OnGetDefaultIconIndex<P0>(&self, psi: P0, pidefaulticon: *mut i32, piopenicon: *mut i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnGetDefaultIconIndex)(windows_core::Interface::as_raw(self), psi.param().abi(), pidefaulticon as _, piopenicon as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INameSpaceTreeControlEvents_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnItemClick: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OnPropertyItemCommit: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnItemStateChanging: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OnItemStateChanged: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub OnSelectionChanged: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnKeyboardInput: unsafe extern "system" fn(*mut core::ffi::c_void, u32, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM) -> windows_core::HRESULT,
    pub OnBeforeExpand: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnAfterExpand: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnBeginLabelEdit: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnEndLabelEdit: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnGetToolTip: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PWSTR, i32) -> windows_core::HRESULT,
    pub OnBeforeItemDelete: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnItemAdded: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub OnItemDeleted: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub OnBeforeContextMenu: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnAfterContextMenu: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnBeforeStateImageChange: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnGetDefaultIconIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut i32, *mut i32) -> windows_core::HRESULT,
}
pub trait INameSpaceTreeControlEvents_Impl: windows_core::IUnknownImpl {
    fn OnItemClick(&self, psi: windows_core::Ref<IShellItem>, nstcehittest: u32, nstceclicktype: u32) -> windows_core::Result<()>;
    fn OnPropertyItemCommit(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn OnItemStateChanging(&self, psi: windows_core::Ref<IShellItem>, nstcismask: u32, nstcisstate: u32) -> windows_core::Result<()>;
    fn OnItemStateChanged(&self, psi: windows_core::Ref<IShellItem>, nstcismask: u32, nstcisstate: u32) -> windows_core::Result<()>;
    fn OnSelectionChanged(&self, psiaselection: windows_core::Ref<IShellItemArray>) -> windows_core::Result<()>;
    fn OnKeyboardInput(&self, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
    fn OnBeforeExpand(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn OnAfterExpand(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn OnBeginLabelEdit(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn OnEndLabelEdit(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn OnGetToolTip(&self, psi: windows_core::Ref<IShellItem>, psztip: windows_core::PWSTR, cchtip: i32) -> windows_core::Result<()>;
    fn OnBeforeItemDelete(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn OnItemAdded(&self, psi: windows_core::Ref<IShellItem>, fisroot: windows_core::BOOL) -> windows_core::Result<()>;
    fn OnItemDeleted(&self, psi: windows_core::Ref<IShellItem>, fisroot: windows_core::BOOL) -> windows_core::Result<()>;
    fn OnBeforeContextMenu(&self, psi: windows_core::Ref<IShellItem>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn OnAfterContextMenu(&self, psi: windows_core::Ref<IShellItem>, pcmin: windows_core::Ref<IContextMenu>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn OnBeforeStateImageChange(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn OnGetDefaultIconIndex(&self, psi: windows_core::Ref<IShellItem>, pidefaulticon: *mut i32, piopenicon: *mut i32) -> windows_core::Result<()>;
}
impl INameSpaceTreeControlEvents_Vtbl {
    pub const fn new<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnItemClick<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcehittest: u32, nstceclicktype: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnItemClick(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&nstcehittest), core::mem::transmute_copy(&nstceclicktype)).into()
            }
        }
        unsafe extern "system" fn OnPropertyItemCommit<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnPropertyItemCommit(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn OnItemStateChanging<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcismask: u32, nstcisstate: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnItemStateChanging(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&nstcismask), core::mem::transmute_copy(&nstcisstate)).into()
            }
        }
        unsafe extern "system" fn OnItemStateChanged<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, nstcismask: u32, nstcisstate: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnItemStateChanged(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&nstcismask), core::mem::transmute_copy(&nstcisstate)).into()
            }
        }
        unsafe extern "system" fn OnSelectionChanged<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiaselection: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnSelectionChanged(this, core::mem::transmute_copy(&psiaselection)).into()
            }
        }
        unsafe extern "system" fn OnKeyboardInput<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnKeyboardInput(this, core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
            }
        }
        unsafe extern "system" fn OnBeforeExpand<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnBeforeExpand(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn OnAfterExpand<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnAfterExpand(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn OnBeginLabelEdit<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnBeginLabelEdit(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn OnEndLabelEdit<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnEndLabelEdit(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn OnGetToolTip<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, psztip: windows_core::PWSTR, cchtip: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnGetToolTip(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&psztip), core::mem::transmute_copy(&cchtip)).into()
            }
        }
        unsafe extern "system" fn OnBeforeItemDelete<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnBeforeItemDelete(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn OnItemAdded<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, fisroot: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnItemAdded(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&fisroot)).into()
            }
        }
        unsafe extern "system" fn OnItemDeleted<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, fisroot: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnItemDeleted(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&fisroot)).into()
            }
        }
        unsafe extern "system" fn OnBeforeContextMenu<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnBeforeContextMenu(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn OnAfterContextMenu<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pcmin: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnAfterContextMenu(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&pcmin), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn OnBeforeStateImageChange<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnBeforeStateImageChange(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn OnGetDefaultIconIndex<Identity: INameSpaceTreeControlEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pidefaulticon: *mut i32, piopenicon: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INameSpaceTreeControlEvents_Impl::OnGetDefaultIconIndex(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&pidefaulticon), core::mem::transmute_copy(&piopenicon)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnItemClick: OnItemClick::<Identity, OFFSET>,
            OnPropertyItemCommit: OnPropertyItemCommit::<Identity, OFFSET>,
            OnItemStateChanging: OnItemStateChanging::<Identity, OFFSET>,
            OnItemStateChanged: OnItemStateChanged::<Identity, OFFSET>,
            OnSelectionChanged: OnSelectionChanged::<Identity, OFFSET>,
            OnKeyboardInput: OnKeyboardInput::<Identity, OFFSET>,
            OnBeforeExpand: OnBeforeExpand::<Identity, OFFSET>,
            OnAfterExpand: OnAfterExpand::<Identity, OFFSET>,
            OnBeginLabelEdit: OnBeginLabelEdit::<Identity, OFFSET>,
            OnEndLabelEdit: OnEndLabelEdit::<Identity, OFFSET>,
            OnGetToolTip: OnGetToolTip::<Identity, OFFSET>,
            OnBeforeItemDelete: OnBeforeItemDelete::<Identity, OFFSET>,
            OnItemAdded: OnItemAdded::<Identity, OFFSET>,
            OnItemDeleted: OnItemDeleted::<Identity, OFFSET>,
            OnBeforeContextMenu: OnBeforeContextMenu::<Identity, OFFSET>,
            OnAfterContextMenu: OnAfterContextMenu::<Identity, OFFSET>,
            OnBeforeStateImageChange: OnBeforeStateImageChange::<Identity, OFFSET>,
            OnGetDefaultIconIndex: OnGetDefaultIconIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControlEvents as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for INameSpaceTreeControlEvents {}
windows_core::imp::define_interface!(INameSpaceTreeControlFolderCapabilities, INameSpaceTreeControlFolderCapabilities_Vtbl, 0xe9701183_e6b3_4ff2_8568_813615fec7be);
windows_core::imp::interface_hierarchy!(INameSpaceTreeControlFolderCapabilities, windows_core::IUnknown);
impl INameSpaceTreeControlFolderCapabilities {
    pub unsafe fn GetFolderCapabilities(&self, nfcmask: NSTCFOLDERCAPABILITIES) -> windows_core::Result<NSTCFOLDERCAPABILITIES> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFolderCapabilities)(windows_core::Interface::as_raw(self), nfcmask, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INameSpaceTreeControlFolderCapabilities_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetFolderCapabilities: unsafe extern "system" fn(*mut core::ffi::c_void, NSTCFOLDERCAPABILITIES, *mut NSTCFOLDERCAPABILITIES) -> windows_core::HRESULT,
}
pub trait INameSpaceTreeControlFolderCapabilities_Impl: windows_core::IUnknownImpl {
    fn GetFolderCapabilities(&self, nfcmask: NSTCFOLDERCAPABILITIES) -> windows_core::Result<NSTCFOLDERCAPABILITIES>;
}
impl INameSpaceTreeControlFolderCapabilities_Vtbl {
    pub const fn new<Identity: INameSpaceTreeControlFolderCapabilities_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetFolderCapabilities<Identity: INameSpaceTreeControlFolderCapabilities_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nfcmask: NSTCFOLDERCAPABILITIES, pnfcvalue: *mut NSTCFOLDERCAPABILITIES) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INameSpaceTreeControlFolderCapabilities_Impl::GetFolderCapabilities(this, core::mem::transmute_copy(&nfcmask)) {
                    Ok(ok__) => {
                        pnfcvalue.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetFolderCapabilities: GetFolderCapabilities::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INameSpaceTreeControlFolderCapabilities as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for INameSpaceTreeControlFolderCapabilities {}
windows_core::imp::define_interface!(INamedPropertyBag, INamedPropertyBag_Vtbl, 0xfb700430_952c_11d1_946f_000000000000);
windows_core::imp::interface_hierarchy!(INamedPropertyBag, windows_core::IUnknown);
impl INamedPropertyBag {
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
    pub unsafe fn ReadPropertyNPB<P0, P1>(&self, pszbagname: P0, pszpropname: P1, pvar: *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReadPropertyNPB)(windows_core::Interface::as_raw(self), pszbagname.param().abi(), pszpropname.param().abi(), core::mem::transmute(pvar)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
    pub unsafe fn WritePropertyNPB<P0, P1>(&self, pszbagname: P0, pszpropname: P1, pvar: *const super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).WritePropertyNPB)(windows_core::Interface::as_raw(self), pszbagname.param().abi(), pszpropname.param().abi(), core::mem::transmute(pvar)).ok() }
    }
    pub unsafe fn RemovePropertyNPB<P0, P1>(&self, pszbagname: P0, pszpropname: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemovePropertyNPB)(windows_core::Interface::as_raw(self), pszbagname.param().abi(), pszpropname.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INamedPropertyBag_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
    pub ReadPropertyNPB: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant")))]
    ReadPropertyNPB: usize,
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
    pub WritePropertyNPB: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *const super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant")))]
    WritePropertyNPB: usize,
    pub RemovePropertyNPB: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
pub trait INamedPropertyBag_Impl: windows_core::IUnknownImpl {
    fn ReadPropertyNPB(&self, pszbagname: &windows_core::PCWSTR, pszpropname: &windows_core::PCWSTR, pvar: *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::Result<()>;
    fn WritePropertyNPB(&self, pszbagname: &windows_core::PCWSTR, pszpropname: &windows_core::PCWSTR, pvar: *const super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::Result<()>;
    fn RemovePropertyNPB(&self, pszbagname: &windows_core::PCWSTR, pszpropname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
impl INamedPropertyBag_Vtbl {
    pub const fn new<Identity: INamedPropertyBag_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ReadPropertyNPB<Identity: INamedPropertyBag_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszbagname: windows_core::PCWSTR, pszpropname: windows_core::PCWSTR, pvar: *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INamedPropertyBag_Impl::ReadPropertyNPB(this, core::mem::transmute(&pszbagname), core::mem::transmute(&pszpropname), core::mem::transmute_copy(&pvar)).into()
            }
        }
        unsafe extern "system" fn WritePropertyNPB<Identity: INamedPropertyBag_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszbagname: windows_core::PCWSTR, pszpropname: windows_core::PCWSTR, pvar: *const super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INamedPropertyBag_Impl::WritePropertyNPB(this, core::mem::transmute(&pszbagname), core::mem::transmute(&pszpropname), core::mem::transmute_copy(&pvar)).into()
            }
        }
        unsafe extern "system" fn RemovePropertyNPB<Identity: INamedPropertyBag_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszbagname: windows_core::PCWSTR, pszpropname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INamedPropertyBag_Impl::RemovePropertyNPB(this, core::mem::transmute(&pszbagname), core::mem::transmute(&pszpropname)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ReadPropertyNPB: ReadPropertyNPB::<Identity, OFFSET>,
            WritePropertyNPB: WritePropertyNPB::<Identity, OFFSET>,
            RemovePropertyNPB: RemovePropertyNPB::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INamedPropertyBag as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for INamedPropertyBag {}
windows_core::imp::define_interface!(INamespaceWalk, INamespaceWalk_Vtbl, 0x57ced8a7_3f4a_432c_9350_30f24483f74f);
windows_core::imp::interface_hierarchy!(INamespaceWalk, windows_core::IUnknown);
impl INamespaceWalk {
    pub unsafe fn Walk<P0, P3>(&self, punktowalk: P0, dwflags: u32, cdepth: i32, pnswcb: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
        P3: windows_core::Param<INamespaceWalkCB>,
    {
        unsafe { (windows_core::Interface::vtable(self).Walk)(windows_core::Interface::as_raw(self), punktowalk.param().abi(), dwflags, cdepth, pnswcb.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetIDArrayResult(&self, pcitems: *mut u32, prgpidl: *mut *mut *mut Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetIDArrayResult)(windows_core::Interface::as_raw(self), pcitems as _, prgpidl as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INamespaceWalk_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Walk: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, i32, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetIDArrayResult: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetIDArrayResult: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait INamespaceWalk_Impl: windows_core::IUnknownImpl {
    fn Walk(&self, punktowalk: windows_core::Ref<windows_core::IUnknown>, dwflags: u32, cdepth: i32, pnswcb: windows_core::Ref<INamespaceWalkCB>) -> windows_core::Result<()>;
    fn GetIDArrayResult(&self, pcitems: *mut u32, prgpidl: *mut *mut *mut Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl INamespaceWalk_Vtbl {
    pub const fn new<Identity: INamespaceWalk_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Walk<Identity: INamespaceWalk_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punktowalk: *mut core::ffi::c_void, dwflags: u32, cdepth: i32, pnswcb: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INamespaceWalk_Impl::Walk(this, core::mem::transmute_copy(&punktowalk), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&cdepth), core::mem::transmute_copy(&pnswcb)).into()
            }
        }
        unsafe extern "system" fn GetIDArrayResult<Identity: INamespaceWalk_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcitems: *mut u32, prgpidl: *mut *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INamespaceWalk_Impl::GetIDArrayResult(this, core::mem::transmute_copy(&pcitems), core::mem::transmute_copy(&prgpidl)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Walk: Walk::<Identity, OFFSET>,
            GetIDArrayResult: GetIDArrayResult::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INamespaceWalk as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for INamespaceWalk {}
windows_core::imp::define_interface!(INamespaceWalkCB, INamespaceWalkCB_Vtbl, 0xd92995f8_cf5e_4a76_bf59_ead39ea2b97e);
windows_core::imp::interface_hierarchy!(INamespaceWalkCB, windows_core::IUnknown);
impl INamespaceWalkCB {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn FoundItem<P0>(&self, psf: P0, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellFolder>,
    {
        unsafe { (windows_core::Interface::vtable(self).FoundItem)(windows_core::Interface::as_raw(self), psf.param().abi(), pidl).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn EnterFolder<P0>(&self, psf: P0, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellFolder>,
    {
        unsafe { (windows_core::Interface::vtable(self).EnterFolder)(windows_core::Interface::as_raw(self), psf.param().abi(), pidl).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn LeaveFolder<P0>(&self, psf: P0, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellFolder>,
    {
        unsafe { (windows_core::Interface::vtable(self).LeaveFolder)(windows_core::Interface::as_raw(self), psf.param().abi(), pidl).ok() }
    }
    pub unsafe fn InitializeProgressDialog(&self, ppsztitle: *mut windows_core::PWSTR, ppszcancel: *mut windows_core::PWSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InitializeProgressDialog)(windows_core::Interface::as_raw(self), ppsztitle as _, ppszcancel as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INamespaceWalkCB_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub FoundItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    FoundItem: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub EnterFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    EnterFolder: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub LeaveFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    LeaveFolder: usize,
    pub InitializeProgressDialog: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait INamespaceWalkCB_Impl: windows_core::IUnknownImpl {
    fn FoundItem(&self, psf: windows_core::Ref<IShellFolder>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn EnterFolder(&self, psf: windows_core::Ref<IShellFolder>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn LeaveFolder(&self, psf: windows_core::Ref<IShellFolder>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn InitializeProgressDialog(&self, ppsztitle: *mut windows_core::PWSTR, ppszcancel: *mut windows_core::PWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl INamespaceWalkCB_Vtbl {
    pub const fn new<Identity: INamespaceWalkCB_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn FoundItem<Identity: INamespaceWalkCB_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INamespaceWalkCB_Impl::FoundItem(this, core::mem::transmute_copy(&psf), core::mem::transmute_copy(&pidl)).into()
            }
        }
        unsafe extern "system" fn EnterFolder<Identity: INamespaceWalkCB_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INamespaceWalkCB_Impl::EnterFolder(this, core::mem::transmute_copy(&psf), core::mem::transmute_copy(&pidl)).into()
            }
        }
        unsafe extern "system" fn LeaveFolder<Identity: INamespaceWalkCB_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INamespaceWalkCB_Impl::LeaveFolder(this, core::mem::transmute_copy(&psf), core::mem::transmute_copy(&pidl)).into()
            }
        }
        unsafe extern "system" fn InitializeProgressDialog<Identity: INamespaceWalkCB_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsztitle: *mut windows_core::PWSTR, ppszcancel: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INamespaceWalkCB_Impl::InitializeProgressDialog(this, core::mem::transmute_copy(&ppsztitle), core::mem::transmute_copy(&ppszcancel)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FoundItem: FoundItem::<Identity, OFFSET>,
            EnterFolder: EnterFolder::<Identity, OFFSET>,
            LeaveFolder: LeaveFolder::<Identity, OFFSET>,
            InitializeProgressDialog: InitializeProgressDialog::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INamespaceWalkCB as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for INamespaceWalkCB {}
windows_core::imp::define_interface!(INamespaceWalkCB2, INamespaceWalkCB2_Vtbl, 0x7ac7492b_c38e_438a_87db_68737844ff70);
impl core::ops::Deref for INamespaceWalkCB2 {
    type Target = INamespaceWalkCB;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(INamespaceWalkCB2, windows_core::IUnknown, INamespaceWalkCB);
impl INamespaceWalkCB2 {
    pub unsafe fn WalkComplete(&self, hr: windows_core::HRESULT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WalkComplete)(windows_core::Interface::as_raw(self), hr).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INamespaceWalkCB2_Vtbl {
    pub base__: INamespaceWalkCB_Vtbl,
    pub WalkComplete: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::HRESULT) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait INamespaceWalkCB2_Impl: INamespaceWalkCB_Impl {
    fn WalkComplete(&self, hr: windows_core::HRESULT) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl INamespaceWalkCB2_Vtbl {
    pub const fn new<Identity: INamespaceWalkCB2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn WalkComplete<Identity: INamespaceWalkCB2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INamespaceWalkCB2_Impl::WalkComplete(this, core::mem::transmute_copy(&hr)).into()
            }
        }
        Self { base__: INamespaceWalkCB_Vtbl::new::<Identity, OFFSET>(), WalkComplete: WalkComplete::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INamespaceWalkCB2 as windows_core::Interface>::IID || iid == &<INamespaceWalkCB as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for INamespaceWalkCB2 {}
windows_core::imp::define_interface!(INetworkFolderInternal, INetworkFolderInternal_Vtbl, 0xceb38218_c971_47bb_a703_f0bc99ccdb81);
windows_core::imp::interface_hierarchy!(INetworkFolderInternal, windows_core::IUnknown);
impl INetworkFolderInternal {
    pub unsafe fn GetResourceDisplayType(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetResourceDisplayType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIDList)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetProvider(&self, itemids: &[*const Common::ITEMIDLIST], provider: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetProvider)(windows_core::Interface::as_raw(self), itemids.len().try_into().unwrap(), core::mem::transmute(itemids.as_ptr()), provider.len().try_into().unwrap(), core::mem::transmute(provider.as_ptr())).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INetworkFolderInternal_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetResourceDisplayType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetIDList: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetProvider: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const *const Common::ITEMIDLIST, u32, windows_core::PWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetProvider: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait INetworkFolderInternal_Impl: windows_core::IUnknownImpl {
    fn GetResourceDisplayType(&self) -> windows_core::Result<u32>;
    fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn GetProvider(&self, itemidcount: u32, itemids: *const *const Common::ITEMIDLIST, providermaxlength: u32, provider: windows_core::PWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl INetworkFolderInternal_Vtbl {
    pub const fn new<Identity: INetworkFolderInternal_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetResourceDisplayType<Identity: INetworkFolderInternal_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, displaytype: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INetworkFolderInternal_Impl::GetResourceDisplayType(this) {
                    Ok(ok__) => {
                        displaytype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetIDList<Identity: INetworkFolderInternal_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, idlist: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INetworkFolderInternal_Impl::GetIDList(this) {
                    Ok(ok__) => {
                        idlist.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetProvider<Identity: INetworkFolderInternal_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, itemidcount: u32, itemids: *const *const Common::ITEMIDLIST, providermaxlength: u32, provider: windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INetworkFolderInternal_Impl::GetProvider(this, core::mem::transmute_copy(&itemidcount), core::mem::transmute_copy(&itemids), core::mem::transmute_copy(&providermaxlength), core::mem::transmute_copy(&provider)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetResourceDisplayType: GetResourceDisplayType::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
            GetProvider: GetProvider::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INetworkFolderInternal as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for INetworkFolderInternal {}
windows_core::imp::define_interface!(INewMenuClient, INewMenuClient_Vtbl, 0xdcb07fdc_3bb5_451c_90be_966644fed7b0);
windows_core::imp::interface_hierarchy!(INewMenuClient, windows_core::IUnknown);
impl INewMenuClient {
    pub unsafe fn IncludeItems(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IncludeItems)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SelectAndEditItem(&self, pidlitem: *const Common::ITEMIDLIST, flags: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SelectAndEditItem)(windows_core::Interface::as_raw(self), pidlitem, flags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INewMenuClient_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub IncludeItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SelectAndEditItem: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SelectAndEditItem: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait INewMenuClient_Impl: windows_core::IUnknownImpl {
    fn IncludeItems(&self) -> windows_core::Result<i32>;
    fn SelectAndEditItem(&self, pidlitem: *const Common::ITEMIDLIST, flags: i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl INewMenuClient_Vtbl {
    pub const fn new<Identity: INewMenuClient_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn IncludeItems<Identity: INewMenuClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pflags: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INewMenuClient_Impl::IncludeItems(this) {
                    Ok(ok__) => {
                        pflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SelectAndEditItem<Identity: INewMenuClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlitem: *const Common::ITEMIDLIST, flags: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewMenuClient_Impl::SelectAndEditItem(this, core::mem::transmute_copy(&pidlitem), core::mem::transmute_copy(&flags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IncludeItems: IncludeItems::<Identity, OFFSET>,
            SelectAndEditItem: SelectAndEditItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INewMenuClient as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for INewMenuClient {}
windows_core::imp::define_interface!(INewShortcutHookA, INewShortcutHookA_Vtbl, 0x000214e1_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(INewShortcutHookA, windows_core::IUnknown);
impl INewShortcutHookA {
    pub unsafe fn SetReferent<P0>(&self, pcszreferent: P0, hwnd: Option<super::super::Foundation::HWND>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetReferent)(windows_core::Interface::as_raw(self), pcszreferent.param().abi(), hwnd.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetReferent(&self, pszreferent: &mut [u8]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetReferent)(windows_core::Interface::as_raw(self), core::mem::transmute(pszreferent.as_ptr()), pszreferent.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SetFolder<P0>(&self, pcszfolder: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFolder)(windows_core::Interface::as_raw(self), pcszfolder.param().abi()).ok() }
    }
    pub unsafe fn GetFolder(&self, pszfolder: &mut [u8]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFolder)(windows_core::Interface::as_raw(self), core::mem::transmute(pszfolder.as_ptr()), pszfolder.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn GetName(&self, pszname: &mut [u8]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), core::mem::transmute(pszname.as_ptr()), pszname.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn GetExtension(&self, pszextension: &mut [u8]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetExtension)(windows_core::Interface::as_raw(self), core::mem::transmute(pszextension.as_ptr()), pszextension.len().try_into().unwrap()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INewShortcutHookA_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetReferent: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub GetReferent: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, i32) -> windows_core::HRESULT,
    pub SetFolder: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetFolder: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, i32) -> windows_core::HRESULT,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, i32) -> windows_core::HRESULT,
    pub GetExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, i32) -> windows_core::HRESULT,
}
pub trait INewShortcutHookA_Impl: windows_core::IUnknownImpl {
    fn SetReferent(&self, pcszreferent: &windows_core::PCSTR, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn GetReferent(&self, pszreferent: windows_core::PSTR, cchreferent: i32) -> windows_core::Result<()>;
    fn SetFolder(&self, pcszfolder: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetFolder(&self, pszfolder: windows_core::PSTR, cchfolder: i32) -> windows_core::Result<()>;
    fn GetName(&self, pszname: windows_core::PSTR, cchname: i32) -> windows_core::Result<()>;
    fn GetExtension(&self, pszextension: windows_core::PSTR, cchextension: i32) -> windows_core::Result<()>;
}
impl INewShortcutHookA_Vtbl {
    pub const fn new<Identity: INewShortcutHookA_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetReferent<Identity: INewShortcutHookA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszreferent: windows_core::PCSTR, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookA_Impl::SetReferent(this, core::mem::transmute(&pcszreferent), core::mem::transmute_copy(&hwnd)).into()
            }
        }
        unsafe extern "system" fn GetReferent<Identity: INewShortcutHookA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszreferent: windows_core::PSTR, cchreferent: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookA_Impl::GetReferent(this, core::mem::transmute_copy(&pszreferent), core::mem::transmute_copy(&cchreferent)).into()
            }
        }
        unsafe extern "system" fn SetFolder<Identity: INewShortcutHookA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszfolder: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookA_Impl::SetFolder(this, core::mem::transmute(&pcszfolder)).into()
            }
        }
        unsafe extern "system" fn GetFolder<Identity: INewShortcutHookA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfolder: windows_core::PSTR, cchfolder: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookA_Impl::GetFolder(this, core::mem::transmute_copy(&pszfolder), core::mem::transmute_copy(&cchfolder)).into()
            }
        }
        unsafe extern "system" fn GetName<Identity: INewShortcutHookA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PSTR, cchname: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookA_Impl::GetName(this, core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cchname)).into()
            }
        }
        unsafe extern "system" fn GetExtension<Identity: INewShortcutHookA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszextension: windows_core::PSTR, cchextension: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookA_Impl::GetExtension(this, core::mem::transmute_copy(&pszextension), core::mem::transmute_copy(&cchextension)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetReferent: SetReferent::<Identity, OFFSET>,
            GetReferent: GetReferent::<Identity, OFFSET>,
            SetFolder: SetFolder::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            GetName: GetName::<Identity, OFFSET>,
            GetExtension: GetExtension::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INewShortcutHookA as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for INewShortcutHookA {}
windows_core::imp::define_interface!(INewShortcutHookW, INewShortcutHookW_Vtbl, 0x000214f7_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(INewShortcutHookW, windows_core::IUnknown);
impl INewShortcutHookW {
    pub unsafe fn SetReferent<P0>(&self, pcszreferent: P0, hwnd: Option<super::super::Foundation::HWND>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetReferent)(windows_core::Interface::as_raw(self), pcszreferent.param().abi(), hwnd.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetReferent(&self, pszreferent: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetReferent)(windows_core::Interface::as_raw(self), core::mem::transmute(pszreferent.as_ptr()), pszreferent.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SetFolder<P0>(&self, pcszfolder: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetFolder)(windows_core::Interface::as_raw(self), pcszfolder.param().abi()).ok() }
    }
    pub unsafe fn GetFolder(&self, pszfolder: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFolder)(windows_core::Interface::as_raw(self), core::mem::transmute(pszfolder.as_ptr()), pszfolder.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn GetName(&self, pszname: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), core::mem::transmute(pszname.as_ptr()), pszname.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn GetExtension(&self, pszextension: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetExtension)(windows_core::Interface::as_raw(self), core::mem::transmute(pszextension.as_ptr()), pszextension.len().try_into().unwrap()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INewShortcutHookW_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetReferent: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub GetReferent: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32) -> windows_core::HRESULT,
    pub SetFolder: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetFolder: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32) -> windows_core::HRESULT,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32) -> windows_core::HRESULT,
    pub GetExtension: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32) -> windows_core::HRESULT,
}
pub trait INewShortcutHookW_Impl: windows_core::IUnknownImpl {
    fn SetReferent(&self, pcszreferent: &windows_core::PCWSTR, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn GetReferent(&self, pszreferent: windows_core::PWSTR, cchreferent: i32) -> windows_core::Result<()>;
    fn SetFolder(&self, pcszfolder: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetFolder(&self, pszfolder: windows_core::PWSTR, cchfolder: i32) -> windows_core::Result<()>;
    fn GetName(&self, pszname: windows_core::PWSTR, cchname: i32) -> windows_core::Result<()>;
    fn GetExtension(&self, pszextension: windows_core::PWSTR, cchextension: i32) -> windows_core::Result<()>;
}
impl INewShortcutHookW_Vtbl {
    pub const fn new<Identity: INewShortcutHookW_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetReferent<Identity: INewShortcutHookW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszreferent: windows_core::PCWSTR, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookW_Impl::SetReferent(this, core::mem::transmute(&pcszreferent), core::mem::transmute_copy(&hwnd)).into()
            }
        }
        unsafe extern "system" fn GetReferent<Identity: INewShortcutHookW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszreferent: windows_core::PWSTR, cchreferent: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookW_Impl::GetReferent(this, core::mem::transmute_copy(&pszreferent), core::mem::transmute_copy(&cchreferent)).into()
            }
        }
        unsafe extern "system" fn SetFolder<Identity: INewShortcutHookW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszfolder: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookW_Impl::SetFolder(this, core::mem::transmute(&pcszfolder)).into()
            }
        }
        unsafe extern "system" fn GetFolder<Identity: INewShortcutHookW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfolder: windows_core::PWSTR, cchfolder: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookW_Impl::GetFolder(this, core::mem::transmute_copy(&pszfolder), core::mem::transmute_copy(&cchfolder)).into()
            }
        }
        unsafe extern "system" fn GetName<Identity: INewShortcutHookW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PWSTR, cchname: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookW_Impl::GetName(this, core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cchname)).into()
            }
        }
        unsafe extern "system" fn GetExtension<Identity: INewShortcutHookW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszextension: windows_core::PWSTR, cchextension: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewShortcutHookW_Impl::GetExtension(this, core::mem::transmute_copy(&pszextension), core::mem::transmute_copy(&cchextension)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetReferent: SetReferent::<Identity, OFFSET>,
            GetReferent: GetReferent::<Identity, OFFSET>,
            SetFolder: SetFolder::<Identity, OFFSET>,
            GetFolder: GetFolder::<Identity, OFFSET>,
            GetName: GetName::<Identity, OFFSET>,
            GetExtension: GetExtension::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INewShortcutHookW as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for INewShortcutHookW {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(INewWDEvents, INewWDEvents_Vtbl, 0x0751c551_7568_41c9_8e5b_e22e38919236);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for INewWDEvents {
    type Target = IWebWizardHost;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(INewWDEvents, windows_core::IUnknown, super::super::System::Com::IDispatch, IWebWizardHost);
#[cfg(feature = "Win32_System_Com")]
impl INewWDEvents {
    pub unsafe fn PassportAuthenticate(&self, bstrsigninurl: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PassportAuthenticate)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrsigninurl), &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct INewWDEvents_Vtbl {
    pub base__: IWebWizardHost_Vtbl,
    pub PassportAuthenticate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait INewWDEvents_Impl: IWebWizardHost_Impl {
    fn PassportAuthenticate(&self, bstrsigninurl: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl INewWDEvents_Vtbl {
    pub const fn new<Identity: INewWDEvents_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn PassportAuthenticate<Identity: INewWDEvents_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrsigninurl: *mut core::ffi::c_void, pvfauthenitcated: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match INewWDEvents_Impl::PassportAuthenticate(this, core::mem::transmute(&bstrsigninurl)) {
                    Ok(ok__) => {
                        pvfauthenitcated.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IWebWizardHost_Vtbl::new::<Identity, OFFSET>(), PassportAuthenticate: PassportAuthenticate::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INewWDEvents as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IWebWizardHost as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for INewWDEvents {}
windows_core::imp::define_interface!(INewWindowManager, INewWindowManager_Vtbl, 0xd2bc4c84_3f72_4a52_a604_7bcbf3982cbb);
windows_core::imp::interface_hierarchy!(INewWindowManager, windows_core::IUnknown);
impl INewWindowManager {
    pub unsafe fn EvaluateNewWindow<P0, P1, P2, P3>(&self, pszurl: P0, pszname: P1, pszurlcontext: P2, pszfeatures: P3, freplace: bool, dwflags: u32, dwuseractiontime: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EvaluateNewWindow)(windows_core::Interface::as_raw(self), pszurl.param().abi(), pszname.param().abi(), pszurlcontext.param().abi(), pszfeatures.param().abi(), freplace.into(), dwflags, dwuseractiontime).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INewWindowManager_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub EvaluateNewWindow: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::BOOL, u32, u32) -> windows_core::HRESULT,
}
pub trait INewWindowManager_Impl: windows_core::IUnknownImpl {
    fn EvaluateNewWindow(&self, pszurl: &windows_core::PCWSTR, pszname: &windows_core::PCWSTR, pszurlcontext: &windows_core::PCWSTR, pszfeatures: &windows_core::PCWSTR, freplace: windows_core::BOOL, dwflags: u32, dwuseractiontime: u32) -> windows_core::Result<()>;
}
impl INewWindowManager_Vtbl {
    pub const fn new<Identity: INewWindowManager_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn EvaluateNewWindow<Identity: INewWindowManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszurl: windows_core::PCWSTR, pszname: windows_core::PCWSTR, pszurlcontext: windows_core::PCWSTR, pszfeatures: windows_core::PCWSTR, freplace: windows_core::BOOL, dwflags: u32, dwuseractiontime: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INewWindowManager_Impl::EvaluateNewWindow(this, core::mem::transmute(&pszurl), core::mem::transmute(&pszname), core::mem::transmute(&pszurlcontext), core::mem::transmute(&pszfeatures), core::mem::transmute_copy(&freplace), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&dwuseractiontime)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), EvaluateNewWindow: EvaluateNewWindow::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INewWindowManager as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for INewWindowManager {}
windows_core::imp::define_interface!(INotifyReplica, INotifyReplica_Vtbl, 0x99180163_da16_101a_935c_444553540000);
windows_core::imp::interface_hierarchy!(INotifyReplica, windows_core::IUnknown);
impl INotifyReplica {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn YouAreAReplica(&self, rgpmkotherreplicas: &mut [Option<super::super::System::Com::IMoniker>]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).YouAreAReplica)(windows_core::Interface::as_raw(self), rgpmkotherreplicas.len().try_into().unwrap(), core::mem::transmute(rgpmkotherreplicas.as_ptr())).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct INotifyReplica_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub YouAreAReplica: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    YouAreAReplica: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait INotifyReplica_Impl: windows_core::IUnknownImpl {
    fn YouAreAReplica(&self, ulcotherreplicas: u32, rgpmkotherreplicas: *mut Option<super::super::System::Com::IMoniker>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl INotifyReplica_Vtbl {
    pub const fn new<Identity: INotifyReplica_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn YouAreAReplica<Identity: INotifyReplica_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ulcotherreplicas: u32, rgpmkotherreplicas: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                INotifyReplica_Impl::YouAreAReplica(this, core::mem::transmute_copy(&ulcotherreplicas), core::mem::transmute_copy(&rgpmkotherreplicas)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), YouAreAReplica: YouAreAReplica::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<INotifyReplica as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for INotifyReplica {}
windows_core::imp::define_interface!(IObjMgr, IObjMgr_Vtbl, 0x00bb2761_6a77_11d0_a535_00c04fd7d062);
windows_core::imp::interface_hierarchy!(IObjMgr, windows_core::IUnknown);
impl IObjMgr {
    pub unsafe fn Append<P0>(&self, punk: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).Append)(windows_core::Interface::as_raw(self), punk.param().abi()).ok() }
    }
    pub unsafe fn Remove<P0>(&self, punk: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).Remove)(windows_core::Interface::as_raw(self), punk.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IObjMgr_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Append: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Remove: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IObjMgr_Impl: windows_core::IUnknownImpl {
    fn Append(&self, punk: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn Remove(&self, punk: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl IObjMgr_Vtbl {
    pub const fn new<Identity: IObjMgr_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Append<Identity: IObjMgr_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IObjMgr_Impl::Append(this, core::mem::transmute_copy(&punk)).into()
            }
        }
        unsafe extern "system" fn Remove<Identity: IObjMgr_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IObjMgr_Impl::Remove(this, core::mem::transmute_copy(&punk)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Append: Append::<Identity, OFFSET>, Remove: Remove::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjMgr as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IObjMgr {}
windows_core::imp::define_interface!(IObjectProvider, IObjectProvider_Vtbl, 0xa6087428_3be3_4d73_b308_7c04a540bf1a);
windows_core::imp::interface_hierarchy!(IObjectProvider, windows_core::IUnknown);
impl IObjectProvider {
    pub unsafe fn QueryObject<T>(&self, guidobject: *const windows_core::GUID) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).QueryObject)(windows_core::Interface::as_raw(self), guidobject, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IObjectProvider_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub QueryObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IObjectProvider_Impl: windows_core::IUnknownImpl {
    fn QueryObject(&self, guidobject: *const windows_core::GUID, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl IObjectProvider_Vtbl {
    pub const fn new<Identity: IObjectProvider_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn QueryObject<Identity: IObjectProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, guidobject: *const windows_core::GUID, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IObjectProvider_Impl::QueryObject(this, core::mem::transmute_copy(&guidobject), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppvout)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), QueryObject: QueryObject::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectProvider as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IObjectProvider {}
windows_core::imp::define_interface!(IObjectWithAppUserModelID, IObjectWithAppUserModelID_Vtbl, 0x36db0196_9665_46d1_9ba7_d3709eecf9ed);
windows_core::imp::interface_hierarchy!(IObjectWithAppUserModelID, windows_core::IUnknown);
impl IObjectWithAppUserModelID {
    pub unsafe fn SetAppID<P0>(&self, pszappid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAppID)(windows_core::Interface::as_raw(self), pszappid.param().abi()).ok() }
    }
    pub unsafe fn GetAppID(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAppID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IObjectWithAppUserModelID_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetAppID: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetAppID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait IObjectWithAppUserModelID_Impl: windows_core::IUnknownImpl {
    fn SetAppID(&self, pszappid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetAppID(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl IObjectWithAppUserModelID_Vtbl {
    pub const fn new<Identity: IObjectWithAppUserModelID_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetAppID<Identity: IObjectWithAppUserModelID_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszappid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IObjectWithAppUserModelID_Impl::SetAppID(this, core::mem::transmute(&pszappid)).into()
            }
        }
        unsafe extern "system" fn GetAppID<Identity: IObjectWithAppUserModelID_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszappid: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IObjectWithAppUserModelID_Impl::GetAppID(this) {
                    Ok(ok__) => {
                        ppszappid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetAppID: SetAppID::<Identity, OFFSET>, GetAppID: GetAppID::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithAppUserModelID as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IObjectWithAppUserModelID {}
windows_core::imp::define_interface!(IObjectWithBackReferences, IObjectWithBackReferences_Vtbl, 0x321a6a6a_d61f_4bf3_97ae_14be2986bb36);
windows_core::imp::interface_hierarchy!(IObjectWithBackReferences, windows_core::IUnknown);
impl IObjectWithBackReferences {
    pub unsafe fn RemoveBackReferences(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveBackReferences)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IObjectWithBackReferences_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub RemoveBackReferences: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IObjectWithBackReferences_Impl: windows_core::IUnknownImpl {
    fn RemoveBackReferences(&self) -> windows_core::Result<()>;
}
impl IObjectWithBackReferences_Vtbl {
    pub const fn new<Identity: IObjectWithBackReferences_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn RemoveBackReferences<Identity: IObjectWithBackReferences_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IObjectWithBackReferences_Impl::RemoveBackReferences(this).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RemoveBackReferences: RemoveBackReferences::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithBackReferences as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IObjectWithBackReferences {}
windows_core::imp::define_interface!(IObjectWithCancelEvent, IObjectWithCancelEvent_Vtbl, 0xf279b885_0ae9_4b85_ac06_ddecf9408941);
windows_core::imp::interface_hierarchy!(IObjectWithCancelEvent, windows_core::IUnknown);
impl IObjectWithCancelEvent {
    pub unsafe fn GetCancelEvent(&self) -> windows_core::Result<super::super::Foundation::HANDLE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCancelEvent)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IObjectWithCancelEvent_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCancelEvent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::HANDLE) -> windows_core::HRESULT,
}
pub trait IObjectWithCancelEvent_Impl: windows_core::IUnknownImpl {
    fn GetCancelEvent(&self) -> windows_core::Result<super::super::Foundation::HANDLE>;
}
impl IObjectWithCancelEvent_Vtbl {
    pub const fn new<Identity: IObjectWithCancelEvent_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCancelEvent<Identity: IObjectWithCancelEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phevent: *mut super::super::Foundation::HANDLE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IObjectWithCancelEvent_Impl::GetCancelEvent(this) {
                    Ok(ok__) => {
                        phevent.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetCancelEvent: GetCancelEvent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithCancelEvent as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IObjectWithCancelEvent {}
windows_core::imp::define_interface!(IObjectWithFolderEnumMode, IObjectWithFolderEnumMode_Vtbl, 0x6a9d9026_0e6e_464c_b000_42ecc07de673);
windows_core::imp::interface_hierarchy!(IObjectWithFolderEnumMode, windows_core::IUnknown);
impl IObjectWithFolderEnumMode {
    pub unsafe fn SetMode(&self, femode: FOLDER_ENUM_MODE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetMode)(windows_core::Interface::as_raw(self), femode).ok() }
    }
    pub unsafe fn GetMode(&self) -> windows_core::Result<FOLDER_ENUM_MODE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IObjectWithFolderEnumMode_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetMode: unsafe extern "system" fn(*mut core::ffi::c_void, FOLDER_ENUM_MODE) -> windows_core::HRESULT,
    pub GetMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut FOLDER_ENUM_MODE) -> windows_core::HRESULT,
}
pub trait IObjectWithFolderEnumMode_Impl: windows_core::IUnknownImpl {
    fn SetMode(&self, femode: FOLDER_ENUM_MODE) -> windows_core::Result<()>;
    fn GetMode(&self) -> windows_core::Result<FOLDER_ENUM_MODE>;
}
impl IObjectWithFolderEnumMode_Vtbl {
    pub const fn new<Identity: IObjectWithFolderEnumMode_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetMode<Identity: IObjectWithFolderEnumMode_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, femode: FOLDER_ENUM_MODE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IObjectWithFolderEnumMode_Impl::SetMode(this, core::mem::transmute_copy(&femode)).into()
            }
        }
        unsafe extern "system" fn GetMode<Identity: IObjectWithFolderEnumMode_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfemode: *mut FOLDER_ENUM_MODE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IObjectWithFolderEnumMode_Impl::GetMode(this) {
                    Ok(ok__) => {
                        pfemode.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetMode: SetMode::<Identity, OFFSET>, GetMode: GetMode::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithFolderEnumMode as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IObjectWithFolderEnumMode {}
windows_core::imp::define_interface!(IObjectWithProgID, IObjectWithProgID_Vtbl, 0x71e806fb_8dee_46fc_bf8c_7748a8a1ae13);
windows_core::imp::interface_hierarchy!(IObjectWithProgID, windows_core::IUnknown);
impl IObjectWithProgID {
    pub unsafe fn SetProgID<P0>(&self, pszprogid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetProgID)(windows_core::Interface::as_raw(self), pszprogid.param().abi()).ok() }
    }
    pub unsafe fn GetProgID(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProgID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IObjectWithProgID_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetProgID: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetProgID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait IObjectWithProgID_Impl: windows_core::IUnknownImpl {
    fn SetProgID(&self, pszprogid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetProgID(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl IObjectWithProgID_Vtbl {
    pub const fn new<Identity: IObjectWithProgID_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetProgID<Identity: IObjectWithProgID_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszprogid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IObjectWithProgID_Impl::SetProgID(this, core::mem::transmute(&pszprogid)).into()
            }
        }
        unsafe extern "system" fn GetProgID<Identity: IObjectWithProgID_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszprogid: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IObjectWithProgID_Impl::GetProgID(this) {
                    Ok(ok__) => {
                        ppszprogid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetProgID: SetProgID::<Identity, OFFSET>,
            GetProgID: GetProgID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithProgID as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IObjectWithProgID {}
windows_core::imp::define_interface!(IObjectWithSelection, IObjectWithSelection_Vtbl, 0x1c9cd5bb_98e9_4491_a60f_31aacc72b83c);
windows_core::imp::interface_hierarchy!(IObjectWithSelection, windows_core::IUnknown);
impl IObjectWithSelection {
    pub unsafe fn SetSelection<P0>(&self, psia: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItemArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSelection)(windows_core::Interface::as_raw(self), psia.param().abi()).ok() }
    }
    pub unsafe fn GetSelection<T>(&self) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetSelection)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IObjectWithSelection_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetSelection: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSelection: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IObjectWithSelection_Impl: windows_core::IUnknownImpl {
    fn SetSelection(&self, psia: windows_core::Ref<IShellItemArray>) -> windows_core::Result<()>;
    fn GetSelection(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl IObjectWithSelection_Vtbl {
    pub const fn new<Identity: IObjectWithSelection_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetSelection<Identity: IObjectWithSelection_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psia: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IObjectWithSelection_Impl::SetSelection(this, core::mem::transmute_copy(&psia)).into()
            }
        }
        unsafe extern "system" fn GetSelection<Identity: IObjectWithSelection_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IObjectWithSelection_Impl::GetSelection(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetSelection: SetSelection::<Identity, OFFSET>,
            GetSelection: GetSelection::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IObjectWithSelection as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IObjectWithSelection {}
windows_core::imp::define_interface!(IOpenControlPanel, IOpenControlPanel_Vtbl, 0xd11ad862_66de_4df4_bf6c_1f5621996af1);
windows_core::imp::interface_hierarchy!(IOpenControlPanel, windows_core::IUnknown);
impl IOpenControlPanel {
    pub unsafe fn Open<P0, P1, P2>(&self, pszname: P0, pszpage: P1, punksite: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).Open)(windows_core::Interface::as_raw(self), pszname.param().abi(), pszpage.param().abi(), punksite.param().abi()).ok() }
    }
    pub unsafe fn GetPath<P0>(&self, pszname: P0, pszpath: &mut [u16]) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetPath)(windows_core::Interface::as_raw(self), pszname.param().abi(), core::mem::transmute(pszpath.as_ptr()), pszpath.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn GetCurrentView(&self) -> windows_core::Result<CPVIEW> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentView)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IOpenControlPanel_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Open: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PWSTR, u32) -> windows_core::HRESULT,
    pub GetCurrentView: unsafe extern "system" fn(*mut core::ffi::c_void, *mut CPVIEW) -> windows_core::HRESULT,
}
pub trait IOpenControlPanel_Impl: windows_core::IUnknownImpl {
    fn Open(&self, pszname: &windows_core::PCWSTR, pszpage: &windows_core::PCWSTR, punksite: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn GetPath(&self, pszname: &windows_core::PCWSTR, pszpath: windows_core::PWSTR, cchpath: u32) -> windows_core::Result<()>;
    fn GetCurrentView(&self) -> windows_core::Result<CPVIEW>;
}
impl IOpenControlPanel_Vtbl {
    pub const fn new<Identity: IOpenControlPanel_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Open<Identity: IOpenControlPanel_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR, pszpage: windows_core::PCWSTR, punksite: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOpenControlPanel_Impl::Open(this, core::mem::transmute(&pszname), core::mem::transmute(&pszpage), core::mem::transmute_copy(&punksite)).into()
            }
        }
        unsafe extern "system" fn GetPath<Identity: IOpenControlPanel_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR, pszpath: windows_core::PWSTR, cchpath: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOpenControlPanel_Impl::GetPath(this, core::mem::transmute(&pszname), core::mem::transmute_copy(&pszpath), core::mem::transmute_copy(&cchpath)).into()
            }
        }
        unsafe extern "system" fn GetCurrentView<Identity: IOpenControlPanel_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pview: *mut CPVIEW) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IOpenControlPanel_Impl::GetCurrentView(this) {
                    Ok(ok__) => {
                        pview.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Open: Open::<Identity, OFFSET>,
            GetPath: GetPath::<Identity, OFFSET>,
            GetCurrentView: GetCurrentView::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IOpenControlPanel as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IOpenControlPanel {}
windows_core::imp::define_interface!(IOpenSearchSource, IOpenSearchSource_Vtbl, 0xf0ee7333_e6fc_479b_9f25_a860c234a38e);
windows_core::imp::interface_hierarchy!(IOpenSearchSource, windows_core::IUnknown);
impl IOpenSearchSource {
    pub unsafe fn GetResults<P1, T>(&self, hwnd: super::super::Foundation::HWND, pszquery: P1, dwstartindex: u32, dwcount: u32) -> windows_core::Result<T>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetResults)(windows_core::Interface::as_raw(self), hwnd, pszquery.param().abi(), dwstartindex, dwcount, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IOpenSearchSource_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetResults: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, windows_core::PCWSTR, u32, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IOpenSearchSource_Impl: windows_core::IUnknownImpl {
    fn GetResults(&self, hwnd: super::super::Foundation::HWND, pszquery: &windows_core::PCWSTR, dwstartindex: u32, dwcount: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl IOpenSearchSource_Vtbl {
    pub const fn new<Identity: IOpenSearchSource_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetResults<Identity: IOpenSearchSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pszquery: windows_core::PCWSTR, dwstartindex: u32, dwcount: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOpenSearchSource_Impl::GetResults(this, core::mem::transmute_copy(&hwnd), core::mem::transmute(&pszquery), core::mem::transmute_copy(&dwstartindex), core::mem::transmute_copy(&dwcount), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetResults: GetResults::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IOpenSearchSource as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IOpenSearchSource {}
windows_core::imp::define_interface!(IOperationsProgressDialog, IOperationsProgressDialog_Vtbl, 0x0c9fb851_e5c9_43eb_a370_f0677b13874c);
windows_core::imp::interface_hierarchy!(IOperationsProgressDialog, windows_core::IUnknown);
impl IOperationsProgressDialog {
    pub unsafe fn StartProgressDialog(&self, hwndowner: super::super::Foundation::HWND, flags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).StartProgressDialog)(windows_core::Interface::as_raw(self), hwndowner, flags).ok() }
    }
    pub unsafe fn StopProgressDialog(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).StopProgressDialog)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetOperation(&self, action: SPACTION) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOperation)(windows_core::Interface::as_raw(self), action).ok() }
    }
    pub unsafe fn SetMode(&self, mode: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetMode)(windows_core::Interface::as_raw(self), mode).ok() }
    }
    pub unsafe fn UpdateProgress(&self, ullpointscurrent: u64, ullpointstotal: u64, ullsizecurrent: u64, ullsizetotal: u64, ullitemscurrent: u64, ullitemstotal: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateProgress)(windows_core::Interface::as_raw(self), ullpointscurrent, ullpointstotal, ullsizecurrent, ullsizetotal, ullitemscurrent, ullitemstotal).ok() }
    }
    pub unsafe fn UpdateLocations<P0, P1, P2>(&self, psisource: P0, psitarget: P1, psiitem: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateLocations)(windows_core::Interface::as_raw(self), psisource.param().abi(), psitarget.param().abi(), psiitem.param().abi()).ok() }
    }
    pub unsafe fn ResetTimer(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetTimer)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn PauseTimer(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PauseTimer)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ResumeTimer(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResumeTimer)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetMilliseconds(&self, pullelapsed: *mut u64, pullremaining: *mut u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetMilliseconds)(windows_core::Interface::as_raw(self), pullelapsed as _, pullremaining as _).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn GetOperationStatus(&self) -> windows_core::Result<PropertiesSystem::PDOPSTATUS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOperationStatus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IOperationsProgressDialog_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub StartProgressDialog: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32) -> windows_core::HRESULT,
    pub StopProgressDialog: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetOperation: unsafe extern "system" fn(*mut core::ffi::c_void, SPACTION) -> windows_core::HRESULT,
    pub SetMode: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub UpdateProgress: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, u64, u64, u64, u64) -> windows_core::HRESULT,
    pub UpdateLocations: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ResetTimer: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PauseTimer: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ResumeTimer: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetMilliseconds: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64, *mut u64) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub GetOperationStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut PropertiesSystem::PDOPSTATUS) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    GetOperationStatus: usize,
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IOperationsProgressDialog_Impl: windows_core::IUnknownImpl {
    fn StartProgressDialog(&self, hwndowner: super::super::Foundation::HWND, flags: u32) -> windows_core::Result<()>;
    fn StopProgressDialog(&self) -> windows_core::Result<()>;
    fn SetOperation(&self, action: SPACTION) -> windows_core::Result<()>;
    fn SetMode(&self, mode: u32) -> windows_core::Result<()>;
    fn UpdateProgress(&self, ullpointscurrent: u64, ullpointstotal: u64, ullsizecurrent: u64, ullsizetotal: u64, ullitemscurrent: u64, ullitemstotal: u64) -> windows_core::Result<()>;
    fn UpdateLocations(&self, psisource: windows_core::Ref<IShellItem>, psitarget: windows_core::Ref<IShellItem>, psiitem: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn ResetTimer(&self) -> windows_core::Result<()>;
    fn PauseTimer(&self) -> windows_core::Result<()>;
    fn ResumeTimer(&self) -> windows_core::Result<()>;
    fn GetMilliseconds(&self, pullelapsed: *mut u64, pullremaining: *mut u64) -> windows_core::Result<()>;
    fn GetOperationStatus(&self) -> windows_core::Result<PropertiesSystem::PDOPSTATUS>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IOperationsProgressDialog_Vtbl {
    pub const fn new<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn StartProgressDialog<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOperationsProgressDialog_Impl::StartProgressDialog(this, core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn StopProgressDialog<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOperationsProgressDialog_Impl::StopProgressDialog(this).into()
            }
        }
        unsafe extern "system" fn SetOperation<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, action: SPACTION) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOperationsProgressDialog_Impl::SetOperation(this, core::mem::transmute_copy(&action)).into()
            }
        }
        unsafe extern "system" fn SetMode<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, mode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOperationsProgressDialog_Impl::SetMode(this, core::mem::transmute_copy(&mode)).into()
            }
        }
        unsafe extern "system" fn UpdateProgress<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullpointscurrent: u64, ullpointstotal: u64, ullsizecurrent: u64, ullsizetotal: u64, ullitemscurrent: u64, ullitemstotal: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOperationsProgressDialog_Impl::UpdateProgress(this, core::mem::transmute_copy(&ullpointscurrent), core::mem::transmute_copy(&ullpointstotal), core::mem::transmute_copy(&ullsizecurrent), core::mem::transmute_copy(&ullsizetotal), core::mem::transmute_copy(&ullitemscurrent), core::mem::transmute_copy(&ullitemstotal)).into()
            }
        }
        unsafe extern "system" fn UpdateLocations<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psitarget: *mut core::ffi::c_void, psiitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOperationsProgressDialog_Impl::UpdateLocations(this, core::mem::transmute_copy(&psisource), core::mem::transmute_copy(&psitarget), core::mem::transmute_copy(&psiitem)).into()
            }
        }
        unsafe extern "system" fn ResetTimer<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOperationsProgressDialog_Impl::ResetTimer(this).into()
            }
        }
        unsafe extern "system" fn PauseTimer<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOperationsProgressDialog_Impl::PauseTimer(this).into()
            }
        }
        unsafe extern "system" fn ResumeTimer<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOperationsProgressDialog_Impl::ResumeTimer(this).into()
            }
        }
        unsafe extern "system" fn GetMilliseconds<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pullelapsed: *mut u64, pullremaining: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IOperationsProgressDialog_Impl::GetMilliseconds(this, core::mem::transmute_copy(&pullelapsed), core::mem::transmute_copy(&pullremaining)).into()
            }
        }
        unsafe extern "system" fn GetOperationStatus<Identity: IOperationsProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, popstatus: *mut PropertiesSystem::PDOPSTATUS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IOperationsProgressDialog_Impl::GetOperationStatus(this) {
                    Ok(ok__) => {
                        popstatus.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartProgressDialog: StartProgressDialog::<Identity, OFFSET>,
            StopProgressDialog: StopProgressDialog::<Identity, OFFSET>,
            SetOperation: SetOperation::<Identity, OFFSET>,
            SetMode: SetMode::<Identity, OFFSET>,
            UpdateProgress: UpdateProgress::<Identity, OFFSET>,
            UpdateLocations: UpdateLocations::<Identity, OFFSET>,
            ResetTimer: ResetTimer::<Identity, OFFSET>,
            PauseTimer: PauseTimer::<Identity, OFFSET>,
            ResumeTimer: ResumeTimer::<Identity, OFFSET>,
            GetMilliseconds: GetMilliseconds::<Identity, OFFSET>,
            GetOperationStatus: GetOperationStatus::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IOperationsProgressDialog as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IOperationsProgressDialog {}
windows_core::imp::define_interface!(IPackageDebugSettings, IPackageDebugSettings_Vtbl, 0xf27c3930_8029_4ad1_94e3_3dba417810c1);
windows_core::imp::interface_hierarchy!(IPackageDebugSettings, windows_core::IUnknown);
impl IPackageDebugSettings {
    pub unsafe fn EnableDebugging<P0, P1, P2>(&self, packagefullname: P0, debuggercommandline: P1, environment: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EnableDebugging)(windows_core::Interface::as_raw(self), packagefullname.param().abi(), debuggercommandline.param().abi(), environment.param().abi()).ok() }
    }
    pub unsafe fn DisableDebugging<P0>(&self, packagefullname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).DisableDebugging)(windows_core::Interface::as_raw(self), packagefullname.param().abi()).ok() }
    }
    pub unsafe fn Suspend<P0>(&self, packagefullname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Suspend)(windows_core::Interface::as_raw(self), packagefullname.param().abi()).ok() }
    }
    pub unsafe fn Resume<P0>(&self, packagefullname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Resume)(windows_core::Interface::as_raw(self), packagefullname.param().abi()).ok() }
    }
    pub unsafe fn TerminateAllProcesses<P0>(&self, packagefullname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).TerminateAllProcesses)(windows_core::Interface::as_raw(self), packagefullname.param().abi()).ok() }
    }
    pub unsafe fn SetTargetSessionId(&self, sessionid: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTargetSessionId)(windows_core::Interface::as_raw(self), sessionid).ok() }
    }
    pub unsafe fn EnumerateBackgroundTasks<P0>(&self, packagefullname: P0, taskcount: *mut u32, taskids: *mut *mut windows_core::GUID, tasknames: *mut *mut windows_core::PCWSTR) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EnumerateBackgroundTasks)(windows_core::Interface::as_raw(self), packagefullname.param().abi(), taskcount as _, taskids as _, tasknames as _).ok() }
    }
    pub unsafe fn ActivateBackgroundTask(&self, taskid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ActivateBackgroundTask)(windows_core::Interface::as_raw(self), taskid).ok() }
    }
    pub unsafe fn StartServicing<P0>(&self, packagefullname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartServicing)(windows_core::Interface::as_raw(self), packagefullname.param().abi()).ok() }
    }
    pub unsafe fn StopServicing<P0>(&self, packagefullname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StopServicing)(windows_core::Interface::as_raw(self), packagefullname.param().abi()).ok() }
    }
    pub unsafe fn StartSessionRedirection<P0>(&self, packagefullname: P0, sessionid: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartSessionRedirection)(windows_core::Interface::as_raw(self), packagefullname.param().abi(), sessionid).ok() }
    }
    pub unsafe fn StopSessionRedirection<P0>(&self, packagefullname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StopSessionRedirection)(windows_core::Interface::as_raw(self), packagefullname.param().abi()).ok() }
    }
    pub unsafe fn GetPackageExecutionState<P0>(&self, packagefullname: P0) -> windows_core::Result<PACKAGE_EXECUTION_STATE>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPackageExecutionState)(windows_core::Interface::as_raw(self), packagefullname.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RegisterForPackageStateChanges<P0, P1>(&self, packagefullname: P0, ppackageexecutionstatechangenotification: P1) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<IPackageExecutionStateChangeNotification>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RegisterForPackageStateChanges)(windows_core::Interface::as_raw(self), packagefullname.param().abi(), ppackageexecutionstatechangenotification.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn UnregisterForPackageStateChanges(&self, dwcookie: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UnregisterForPackageStateChanges)(windows_core::Interface::as_raw(self), dwcookie).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPackageDebugSettings_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub EnableDebugging: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub DisableDebugging: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub Suspend: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub Resume: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub TerminateAllProcesses: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetTargetSessionId: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub EnumerateBackgroundTasks: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u32, *mut *mut windows_core::GUID, *mut *mut windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ActivateBackgroundTask: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub StartServicing: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub StopServicing: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub StartSessionRedirection: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub StopSessionRedirection: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetPackageExecutionState: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut PACKAGE_EXECUTION_STATE) -> windows_core::HRESULT,
    pub RegisterForPackageStateChanges: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub UnregisterForPackageStateChanges: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
pub trait IPackageDebugSettings_Impl: windows_core::IUnknownImpl {
    fn EnableDebugging(&self, packagefullname: &windows_core::PCWSTR, debuggercommandline: &windows_core::PCWSTR, environment: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn DisableDebugging(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Suspend(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Resume(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn TerminateAllProcesses(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetTargetSessionId(&self, sessionid: u32) -> windows_core::Result<()>;
    fn EnumerateBackgroundTasks(&self, packagefullname: &windows_core::PCWSTR, taskcount: *mut u32, taskids: *mut *mut windows_core::GUID, tasknames: *mut *mut windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ActivateBackgroundTask(&self, taskid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn StartServicing(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn StopServicing(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn StartSessionRedirection(&self, packagefullname: &windows_core::PCWSTR, sessionid: u32) -> windows_core::Result<()>;
    fn StopSessionRedirection(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetPackageExecutionState(&self, packagefullname: &windows_core::PCWSTR) -> windows_core::Result<PACKAGE_EXECUTION_STATE>;
    fn RegisterForPackageStateChanges(&self, packagefullname: &windows_core::PCWSTR, ppackageexecutionstatechangenotification: windows_core::Ref<IPackageExecutionStateChangeNotification>) -> windows_core::Result<u32>;
    fn UnregisterForPackageStateChanges(&self, dwcookie: u32) -> windows_core::Result<()>;
}
impl IPackageDebugSettings_Vtbl {
    pub const fn new<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn EnableDebugging<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, debuggercommandline: windows_core::PCWSTR, environment: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::EnableDebugging(this, core::mem::transmute(&packagefullname), core::mem::transmute(&debuggercommandline), core::mem::transmute(&environment)).into()
            }
        }
        unsafe extern "system" fn DisableDebugging<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::DisableDebugging(this, core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn Suspend<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::Suspend(this, core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn Resume<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::Resume(this, core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn TerminateAllProcesses<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::TerminateAllProcesses(this, core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn SetTargetSessionId<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sessionid: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::SetTargetSessionId(this, core::mem::transmute_copy(&sessionid)).into()
            }
        }
        unsafe extern "system" fn EnumerateBackgroundTasks<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, taskcount: *mut u32, taskids: *mut *mut windows_core::GUID, tasknames: *mut *mut windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::EnumerateBackgroundTasks(this, core::mem::transmute(&packagefullname), core::mem::transmute_copy(&taskcount), core::mem::transmute_copy(&taskids), core::mem::transmute_copy(&tasknames)).into()
            }
        }
        unsafe extern "system" fn ActivateBackgroundTask<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, taskid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::ActivateBackgroundTask(this, core::mem::transmute_copy(&taskid)).into()
            }
        }
        unsafe extern "system" fn StartServicing<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::StartServicing(this, core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn StopServicing<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::StopServicing(this, core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn StartSessionRedirection<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, sessionid: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::StartSessionRedirection(this, core::mem::transmute(&packagefullname), core::mem::transmute_copy(&sessionid)).into()
            }
        }
        unsafe extern "system" fn StopSessionRedirection<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::StopSessionRedirection(this, core::mem::transmute(&packagefullname)).into()
            }
        }
        unsafe extern "system" fn GetPackageExecutionState<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, packageexecutionstate: *mut PACKAGE_EXECUTION_STATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IPackageDebugSettings_Impl::GetPackageExecutionState(this, core::mem::transmute(&packagefullname)) {
                    Ok(ok__) => {
                        packageexecutionstate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RegisterForPackageStateChanges<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, ppackageexecutionstatechangenotification: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IPackageDebugSettings_Impl::RegisterForPackageStateChanges(this, core::mem::transmute(&packagefullname), core::mem::transmute_copy(&ppackageexecutionstatechangenotification)) {
                    Ok(ok__) => {
                        pdwcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn UnregisterForPackageStateChanges<Identity: IPackageDebugSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings_Impl::UnregisterForPackageStateChanges(this, core::mem::transmute_copy(&dwcookie)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EnableDebugging: EnableDebugging::<Identity, OFFSET>,
            DisableDebugging: DisableDebugging::<Identity, OFFSET>,
            Suspend: Suspend::<Identity, OFFSET>,
            Resume: Resume::<Identity, OFFSET>,
            TerminateAllProcesses: TerminateAllProcesses::<Identity, OFFSET>,
            SetTargetSessionId: SetTargetSessionId::<Identity, OFFSET>,
            EnumerateBackgroundTasks: EnumerateBackgroundTasks::<Identity, OFFSET>,
            ActivateBackgroundTask: ActivateBackgroundTask::<Identity, OFFSET>,
            StartServicing: StartServicing::<Identity, OFFSET>,
            StopServicing: StopServicing::<Identity, OFFSET>,
            StartSessionRedirection: StartSessionRedirection::<Identity, OFFSET>,
            StopSessionRedirection: StopSessionRedirection::<Identity, OFFSET>,
            GetPackageExecutionState: GetPackageExecutionState::<Identity, OFFSET>,
            RegisterForPackageStateChanges: RegisterForPackageStateChanges::<Identity, OFFSET>,
            UnregisterForPackageStateChanges: UnregisterForPackageStateChanges::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPackageDebugSettings as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IPackageDebugSettings {}
windows_core::imp::define_interface!(IPackageDebugSettings2, IPackageDebugSettings2_Vtbl, 0x6e3194bb_ab82_4d22_93f5_fabda40e7b16);
impl core::ops::Deref for IPackageDebugSettings2 {
    type Target = IPackageDebugSettings;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPackageDebugSettings2, windows_core::IUnknown, IPackageDebugSettings);
impl IPackageDebugSettings2 {
    pub unsafe fn EnumerateApps<P0>(&self, packagefullname: P0, appcount: *mut u32, appusermodelids: *mut *mut windows_core::PWSTR, appdisplaynames: *mut *mut windows_core::PWSTR) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EnumerateApps)(windows_core::Interface::as_raw(self), packagefullname.param().abi(), appcount as _, appusermodelids as _, appdisplaynames as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPackageDebugSettings2_Vtbl {
    pub base__: IPackageDebugSettings_Vtbl,
    pub EnumerateApps: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut u32, *mut *mut windows_core::PWSTR, *mut *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait IPackageDebugSettings2_Impl: IPackageDebugSettings_Impl {
    fn EnumerateApps(&self, packagefullname: &windows_core::PCWSTR, appcount: *mut u32, appusermodelids: *mut *mut windows_core::PWSTR, appdisplaynames: *mut *mut windows_core::PWSTR) -> windows_core::Result<()>;
}
impl IPackageDebugSettings2_Vtbl {
    pub const fn new<Identity: IPackageDebugSettings2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn EnumerateApps<Identity: IPackageDebugSettings2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, packagefullname: windows_core::PCWSTR, appcount: *mut u32, appusermodelids: *mut *mut windows_core::PWSTR, appdisplaynames: *mut *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageDebugSettings2_Impl::EnumerateApps(this, core::mem::transmute(&packagefullname), core::mem::transmute_copy(&appcount), core::mem::transmute_copy(&appusermodelids), core::mem::transmute_copy(&appdisplaynames)).into()
            }
        }
        Self { base__: IPackageDebugSettings_Vtbl::new::<Identity, OFFSET>(), EnumerateApps: EnumerateApps::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPackageDebugSettings2 as windows_core::Interface>::IID || iid == &<IPackageDebugSettings as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IPackageDebugSettings2 {}
windows_core::imp::define_interface!(IPackageExecutionStateChangeNotification, IPackageExecutionStateChangeNotification_Vtbl, 0x1bb12a62_2ad8_432b_8ccf_0c2c52afcd5b);
windows_core::imp::interface_hierarchy!(IPackageExecutionStateChangeNotification, windows_core::IUnknown);
impl IPackageExecutionStateChangeNotification {
    pub unsafe fn OnStateChanged<P0>(&self, pszpackagefullname: P0, pesnewstate: PACKAGE_EXECUTION_STATE) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnStateChanged)(windows_core::Interface::as_raw(self), pszpackagefullname.param().abi(), pesnewstate).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPackageExecutionStateChangeNotification_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnStateChanged: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, PACKAGE_EXECUTION_STATE) -> windows_core::HRESULT,
}
pub trait IPackageExecutionStateChangeNotification_Impl: windows_core::IUnknownImpl {
    fn OnStateChanged(&self, pszpackagefullname: &windows_core::PCWSTR, pesnewstate: PACKAGE_EXECUTION_STATE) -> windows_core::Result<()>;
}
impl IPackageExecutionStateChangeNotification_Vtbl {
    pub const fn new<Identity: IPackageExecutionStateChangeNotification_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnStateChanged<Identity: IPackageExecutionStateChangeNotification_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpackagefullname: windows_core::PCWSTR, pesnewstate: PACKAGE_EXECUTION_STATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPackageExecutionStateChangeNotification_Impl::OnStateChanged(this, core::mem::transmute(&pszpackagefullname), core::mem::transmute_copy(&pesnewstate)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnStateChanged: OnStateChanged::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPackageExecutionStateChangeNotification as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IPackageExecutionStateChangeNotification {}
windows_core::imp::define_interface!(IParentAndItem, IParentAndItem_Vtbl, 0xb3a4b685_b685_4805_99d9_5dead2873236);
windows_core::imp::interface_hierarchy!(IParentAndItem, windows_core::IUnknown);
impl IParentAndItem {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetParentAndItem<P1>(&self, pidlparent: *const Common::ITEMIDLIST, psf: P1, pidlchild: *const Common::ITEMIDLIST) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellFolder>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetParentAndItem)(windows_core::Interface::as_raw(self), pidlparent, psf.param().abi(), pidlchild).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetParentAndItem(&self, ppidlparent: Option<*mut *mut Common::ITEMIDLIST>, ppsf: Option<*mut Option<IShellFolder>>, ppidlchild: Option<*mut *mut Common::ITEMIDLIST>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetParentAndItem)(windows_core::Interface::as_raw(self), ppidlparent.unwrap_or(core::mem::zeroed()) as _, ppsf.unwrap_or(core::mem::zeroed()) as _, ppidlchild.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IParentAndItem_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetParentAndItem: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetParentAndItem: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetParentAndItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST, *mut *mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetParentAndItem: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IParentAndItem_Impl: windows_core::IUnknownImpl {
    fn SetParentAndItem(&self, pidlparent: *const Common::ITEMIDLIST, psf: windows_core::Ref<IShellFolder>, pidlchild: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetParentAndItem(&self, ppidlparent: *mut *mut Common::ITEMIDLIST, ppsf: windows_core::OutRef<IShellFolder>, ppidlchild: *mut *mut Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IParentAndItem_Vtbl {
    pub const fn new<Identity: IParentAndItem_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetParentAndItem<Identity: IParentAndItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlparent: *const Common::ITEMIDLIST, psf: *mut core::ffi::c_void, pidlchild: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IParentAndItem_Impl::SetParentAndItem(this, core::mem::transmute_copy(&pidlparent), core::mem::transmute_copy(&psf), core::mem::transmute_copy(&pidlchild)).into()
            }
        }
        unsafe extern "system" fn GetParentAndItem<Identity: IParentAndItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidlparent: *mut *mut Common::ITEMIDLIST, ppsf: *mut *mut core::ffi::c_void, ppidlchild: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IParentAndItem_Impl::GetParentAndItem(this, core::mem::transmute_copy(&ppidlparent), core::mem::transmute_copy(&ppsf), core::mem::transmute_copy(&ppidlchild)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetParentAndItem: SetParentAndItem::<Identity, OFFSET>,
            GetParentAndItem: GetParentAndItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IParentAndItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IParentAndItem {}
windows_core::imp::define_interface!(IParseAndCreateItem, IParseAndCreateItem_Vtbl, 0x67efed0e_e827_4408_b493_78f3982b685c);
windows_core::imp::interface_hierarchy!(IParseAndCreateItem, windows_core::IUnknown);
impl IParseAndCreateItem {
    pub unsafe fn SetItem<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetItem)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn GetItem<T>(&self) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetItem)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IParseAndCreateItem_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetItem: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IParseAndCreateItem_Impl: windows_core::IUnknownImpl {
    fn SetItem(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn GetItem(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl IParseAndCreateItem_Vtbl {
    pub const fn new<Identity: IParseAndCreateItem_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetItem<Identity: IParseAndCreateItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IParseAndCreateItem_Impl::SetItem(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn GetItem<Identity: IParseAndCreateItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IParseAndCreateItem_Impl::GetItem(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetItem: SetItem::<Identity, OFFSET>, GetItem: GetItem::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IParseAndCreateItem as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IParseAndCreateItem {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IPersistFolder, IPersistFolder_Vtbl, 0x000214ea_0000_0000_c000_000000000046);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IPersistFolder {
    type Target = super::super::System::Com::IPersist;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IPersistFolder, windows_core::IUnknown, super::super::System::Com::IPersist);
#[cfg(feature = "Win32_System_Com")]
impl IPersistFolder {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn Initialize(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pidl).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IPersistFolder_Vtbl {
    pub base__: super::super::System::Com::IPersist_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    Initialize: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IPersistFolder_Impl: super::super::System::Com::IPersist_Impl {
    fn Initialize(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IPersistFolder_Vtbl {
    pub const fn new<Identity: IPersistFolder_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IPersistFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPersistFolder_Impl::Initialize(this, core::mem::transmute_copy(&pidl)).into()
            }
        }
        Self { base__: super::super::System::Com::IPersist_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistFolder as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IPersistFolder {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IPersistFolder2, IPersistFolder2_Vtbl, 0x1ac3d9f0_175c_11d1_95be_00609797ea4f);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IPersistFolder2 {
    type Target = IPersistFolder;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IPersistFolder2, windows_core::IUnknown, super::super::System::Com::IPersist, IPersistFolder);
#[cfg(feature = "Win32_System_Com")]
impl IPersistFolder2 {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetCurFolder(&self) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurFolder)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IPersistFolder2_Vtbl {
    pub base__: IPersistFolder_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetCurFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetCurFolder: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IPersistFolder2_Impl: IPersistFolder_Impl {
    fn GetCurFolder(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IPersistFolder2_Vtbl {
    pub const fn new<Identity: IPersistFolder2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCurFolder<Identity: IPersistFolder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IPersistFolder2_Impl::GetCurFolder(this) {
                    Ok(ok__) => {
                        ppidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IPersistFolder_Vtbl::new::<Identity, OFFSET>(), GetCurFolder: GetCurFolder::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistFolder2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID || iid == &<IPersistFolder as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IPersistFolder2 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IPersistFolder3, IPersistFolder3_Vtbl, 0xcef04fdf_fe72_11d2_87a5_00c04f6837cf);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IPersistFolder3 {
    type Target = IPersistFolder2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IPersistFolder3, windows_core::IUnknown, super::super::System::Com::IPersist, IPersistFolder, IPersistFolder2);
#[cfg(feature = "Win32_System_Com")]
impl IPersistFolder3 {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn InitializeEx<P0>(&self, pbc: P0, pidlroot: *const Common::ITEMIDLIST, ppfti: *const PERSIST_FOLDER_TARGET_INFO) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IBindCtx>,
    {
        unsafe { (windows_core::Interface::vtable(self).InitializeEx)(windows_core::Interface::as_raw(self), pbc.param().abi(), pidlroot, ppfti).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetFolderTargetInfo(&self, ppfti: *mut PERSIST_FOLDER_TARGET_INFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFolderTargetInfo)(windows_core::Interface::as_raw(self), ppfti as _).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IPersistFolder3_Vtbl {
    pub base__: IPersistFolder2_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub InitializeEx: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST, *const PERSIST_FOLDER_TARGET_INFO) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    InitializeEx: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetFolderTargetInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut PERSIST_FOLDER_TARGET_INFO) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetFolderTargetInfo: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IPersistFolder3_Impl: IPersistFolder2_Impl {
    fn InitializeEx(&self, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>, pidlroot: *const Common::ITEMIDLIST, ppfti: *const PERSIST_FOLDER_TARGET_INFO) -> windows_core::Result<()>;
    fn GetFolderTargetInfo(&self, ppfti: *mut PERSIST_FOLDER_TARGET_INFO) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IPersistFolder3_Vtbl {
    pub const fn new<Identity: IPersistFolder3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn InitializeEx<Identity: IPersistFolder3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void, pidlroot: *const Common::ITEMIDLIST, ppfti: *const PERSIST_FOLDER_TARGET_INFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPersistFolder3_Impl::InitializeEx(this, core::mem::transmute_copy(&pbc), core::mem::transmute_copy(&pidlroot), core::mem::transmute_copy(&ppfti)).into()
            }
        }
        unsafe extern "system" fn GetFolderTargetInfo<Identity: IPersistFolder3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfti: *mut PERSIST_FOLDER_TARGET_INFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPersistFolder3_Impl::GetFolderTargetInfo(this, core::mem::transmute_copy(&ppfti)).into()
            }
        }
        Self {
            base__: IPersistFolder2_Vtbl::new::<Identity, OFFSET>(),
            InitializeEx: InitializeEx::<Identity, OFFSET>,
            GetFolderTargetInfo: GetFolderTargetInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistFolder3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID || iid == &<IPersistFolder as windows_core::Interface>::IID || iid == &<IPersistFolder2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IPersistFolder3 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IPersistIDList, IPersistIDList_Vtbl, 0x1079acfc_29bd_11d3_8e0d_00c04f6837d5);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IPersistIDList {
    type Target = super::super::System::Com::IPersist;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IPersistIDList, windows_core::IUnknown, super::super::System::Com::IPersist);
#[cfg(feature = "Win32_System_Com")]
impl IPersistIDList {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetIDList)(windows_core::Interface::as_raw(self), pidl).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIDList)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IPersistIDList_Vtbl {
    pub base__: super::super::System::Com::IPersist_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetIDList: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetIDList: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IPersistIDList_Impl: super::super::System::Com::IPersist_Impl {
    fn SetIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IPersistIDList_Vtbl {
    pub const fn new<Identity: IPersistIDList_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetIDList<Identity: IPersistIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPersistIDList_Impl::SetIDList(this, core::mem::transmute_copy(&pidl)).into()
            }
        }
        unsafe extern "system" fn GetIDList<Identity: IPersistIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IPersistIDList_Impl::GetIDList(this) {
                    Ok(ok__) => {
                        ppidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: super::super::System::Com::IPersist_Vtbl::new::<Identity, OFFSET>(),
            SetIDList: SetIDList::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPersistIDList as windows_core::Interface>::IID || iid == &<super::super::System::Com::IPersist as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IPersistIDList {}
windows_core::imp::define_interface!(IPreviewHandler, IPreviewHandler_Vtbl, 0x8895b1c6_b41f_4c1c_a562_0d564250836f);
windows_core::imp::interface_hierarchy!(IPreviewHandler, windows_core::IUnknown);
impl IPreviewHandler {
    pub unsafe fn SetWindow(&self, hwnd: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetWindow)(windows_core::Interface::as_raw(self), hwnd, prc).ok() }
    }
    pub unsafe fn SetRect(&self, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRect)(windows_core::Interface::as_raw(self), prc).ok() }
    }
    pub unsafe fn DoPreview(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DoPreview)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Unload(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Unload)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetFocus(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFocus)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn QueryFocus(&self) -> windows_core::Result<super::super::Foundation::HWND> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).QueryFocus)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn TranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TranslateAccelerator)(windows_core::Interface::as_raw(self), pmsg).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPreviewHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub SetRect: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::RECT) -> windows_core::HRESULT,
    pub DoPreview: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Unload: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetFocus: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub QueryFocus: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::HWND) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub TranslateAccelerator: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    TranslateAccelerator: usize,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IPreviewHandler_Impl: windows_core::IUnknownImpl {
    fn SetWindow(&self, hwnd: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn SetRect(&self, prc: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn DoPreview(&self) -> windows_core::Result<()>;
    fn Unload(&self) -> windows_core::Result<()>;
    fn SetFocus(&self) -> windows_core::Result<()>;
    fn QueryFocus(&self) -> windows_core::Result<super::super::Foundation::HWND>;
    fn TranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IPreviewHandler_Vtbl {
    pub const fn new<Identity: IPreviewHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetWindow<Identity: IPreviewHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPreviewHandler_Impl::SetWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&prc)).into()
            }
        }
        unsafe extern "system" fn SetRect<Identity: IPreviewHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prc: *const super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPreviewHandler_Impl::SetRect(this, core::mem::transmute_copy(&prc)).into()
            }
        }
        unsafe extern "system" fn DoPreview<Identity: IPreviewHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPreviewHandler_Impl::DoPreview(this).into()
            }
        }
        unsafe extern "system" fn Unload<Identity: IPreviewHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPreviewHandler_Impl::Unload(this).into()
            }
        }
        unsafe extern "system" fn SetFocus<Identity: IPreviewHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPreviewHandler_Impl::SetFocus(this).into()
            }
        }
        unsafe extern "system" fn QueryFocus<Identity: IPreviewHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IPreviewHandler_Impl::QueryFocus(this) {
                    Ok(ok__) => {
                        phwnd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn TranslateAccelerator<Identity: IPreviewHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPreviewHandler_Impl::TranslateAccelerator(this, core::mem::transmute_copy(&pmsg)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetWindow: SetWindow::<Identity, OFFSET>,
            SetRect: SetRect::<Identity, OFFSET>,
            DoPreview: DoPreview::<Identity, OFFSET>,
            Unload: Unload::<Identity, OFFSET>,
            SetFocus: SetFocus::<Identity, OFFSET>,
            QueryFocus: QueryFocus::<Identity, OFFSET>,
            TranslateAccelerator: TranslateAccelerator::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreviewHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IPreviewHandler {}
windows_core::imp::define_interface!(IPreviewHandlerFrame, IPreviewHandlerFrame_Vtbl, 0xfec87aaf_35f9_447a_adb7_20234491401a);
windows_core::imp::interface_hierarchy!(IPreviewHandlerFrame, windows_core::IUnknown);
impl IPreviewHandlerFrame {
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn GetWindowContext(&self) -> windows_core::Result<PREVIEWHANDLERFRAMEINFO> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetWindowContext)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn TranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TranslateAccelerator)(windows_core::Interface::as_raw(self), pmsg).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPreviewHandlerFrame_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub GetWindowContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut PREVIEWHANDLERFRAMEINFO) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    GetWindowContext: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub TranslateAccelerator: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    TranslateAccelerator: usize,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IPreviewHandlerFrame_Impl: windows_core::IUnknownImpl {
    fn GetWindowContext(&self) -> windows_core::Result<PREVIEWHANDLERFRAMEINFO>;
    fn TranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IPreviewHandlerFrame_Vtbl {
    pub const fn new<Identity: IPreviewHandlerFrame_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetWindowContext<Identity: IPreviewHandlerFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pinfo: *mut PREVIEWHANDLERFRAMEINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IPreviewHandlerFrame_Impl::GetWindowContext(this) {
                    Ok(ok__) => {
                        pinfo.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn TranslateAccelerator<Identity: IPreviewHandlerFrame_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPreviewHandlerFrame_Impl::TranslateAccelerator(this, core::mem::transmute_copy(&pmsg)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetWindowContext: GetWindowContext::<Identity, OFFSET>,
            TranslateAccelerator: TranslateAccelerator::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreviewHandlerFrame as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IPreviewHandlerFrame {}
windows_core::imp::define_interface!(IPreviewHandlerVisuals, IPreviewHandlerVisuals_Vtbl, 0x196bf9a5_b346_4ef0_aa1e_5dcdb76768b1);
windows_core::imp::interface_hierarchy!(IPreviewHandlerVisuals, windows_core::IUnknown);
impl IPreviewHandlerVisuals {
    pub unsafe fn SetBackgroundColor(&self, color: super::super::Foundation::COLORREF) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetBackgroundColor)(windows_core::Interface::as_raw(self), color).ok() }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn SetFont(&self, plf: *const super::super::Graphics::Gdi::LOGFONTW) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFont)(windows_core::Interface::as_raw(self), plf).ok() }
    }
    pub unsafe fn SetTextColor(&self, color: super::super::Foundation::COLORREF) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTextColor)(windows_core::Interface::as_raw(self), color).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPreviewHandlerVisuals_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetBackgroundColor: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::COLORREF) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub SetFont: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Graphics::Gdi::LOGFONTW) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    SetFont: usize,
    pub SetTextColor: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::COLORREF) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IPreviewHandlerVisuals_Impl: windows_core::IUnknownImpl {
    fn SetBackgroundColor(&self, color: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn SetFont(&self, plf: *const super::super::Graphics::Gdi::LOGFONTW) -> windows_core::Result<()>;
    fn SetTextColor(&self, color: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IPreviewHandlerVisuals_Vtbl {
    pub const fn new<Identity: IPreviewHandlerVisuals_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetBackgroundColor<Identity: IPreviewHandlerVisuals_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: super::super::Foundation::COLORREF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPreviewHandlerVisuals_Impl::SetBackgroundColor(this, core::mem::transmute_copy(&color)).into()
            }
        }
        unsafe extern "system" fn SetFont<Identity: IPreviewHandlerVisuals_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plf: *const super::super::Graphics::Gdi::LOGFONTW) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPreviewHandlerVisuals_Impl::SetFont(this, core::mem::transmute_copy(&plf)).into()
            }
        }
        unsafe extern "system" fn SetTextColor<Identity: IPreviewHandlerVisuals_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, color: super::super::Foundation::COLORREF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPreviewHandlerVisuals_Impl::SetTextColor(this, core::mem::transmute_copy(&color)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBackgroundColor: SetBackgroundColor::<Identity, OFFSET>,
            SetFont: SetFont::<Identity, OFFSET>,
            SetTextColor: SetTextColor::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreviewHandlerVisuals as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IPreviewHandlerVisuals {}
windows_core::imp::define_interface!(IPreviewItem, IPreviewItem_Vtbl, 0x36149969_0a8f_49c8_8b00_4aecb20222fb);
impl core::ops::Deref for IPreviewItem {
    type Target = IRelatedItem;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPreviewItem, windows_core::IUnknown, IRelatedItem);
#[repr(C)]
#[doc(hidden)]
pub struct IPreviewItem_Vtbl {
    pub base__: IRelatedItem_Vtbl,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IPreviewItem_Impl: IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IPreviewItem_Vtbl {
    pub const fn new<Identity: IPreviewItem_Impl, const OFFSET: isize>() -> Self {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreviewItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IPreviewItem {}
windows_core::imp::define_interface!(IPreviousVersionsInfo, IPreviousVersionsInfo_Vtbl, 0x76e54780_ad74_48e3_a695_3ba9a0aff10d);
windows_core::imp::interface_hierarchy!(IPreviousVersionsInfo, windows_core::IUnknown);
impl IPreviousVersionsInfo {
    pub unsafe fn AreSnapshotsAvailable<P0>(&self, pszpath: P0, foktobeslow: bool) -> windows_core::Result<windows_core::BOOL>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AreSnapshotsAvailable)(windows_core::Interface::as_raw(self), pszpath.param().abi(), foktobeslow.into(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPreviousVersionsInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AreSnapshotsAvailable: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::BOOL, *mut windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait IPreviousVersionsInfo_Impl: windows_core::IUnknownImpl {
    fn AreSnapshotsAvailable(&self, pszpath: &windows_core::PCWSTR, foktobeslow: windows_core::BOOL) -> windows_core::Result<windows_core::BOOL>;
}
impl IPreviousVersionsInfo_Vtbl {
    pub const fn new<Identity: IPreviousVersionsInfo_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AreSnapshotsAvailable<Identity: IPreviousVersionsInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR, foktobeslow: windows_core::BOOL, pfavailable: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IPreviousVersionsInfo_Impl::AreSnapshotsAvailable(this, core::mem::transmute(&pszpath), core::mem::transmute_copy(&foktobeslow)) {
                    Ok(ok__) => {
                        pfavailable.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), AreSnapshotsAvailable: AreSnapshotsAvailable::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPreviousVersionsInfo as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IPreviousVersionsInfo {}
windows_core::imp::define_interface!(IProfferService, IProfferService_Vtbl, 0xcb728b20_f786_11ce_92ad_00aa00a74cd0);
windows_core::imp::interface_hierarchy!(IProfferService, windows_core::IUnknown);
impl IProfferService {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn ProfferService<P1>(&self, serviceid: *const windows_core::GUID, serviceprovider: P1) -> windows_core::Result<u32>
    where
        P1: windows_core::Param<super::super::System::Com::IServiceProvider>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ProfferService)(windows_core::Interface::as_raw(self), serviceid, serviceprovider.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RevokeService(&self, cookie: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RevokeService)(windows_core::Interface::as_raw(self), cookie).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IProfferService_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub ProfferService: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    ProfferService: usize,
    pub RevokeService: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IProfferService_Impl: windows_core::IUnknownImpl {
    fn ProfferService(&self, serviceid: *const windows_core::GUID, serviceprovider: windows_core::Ref<super::super::System::Com::IServiceProvider>) -> windows_core::Result<u32>;
    fn RevokeService(&self, cookie: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IProfferService_Vtbl {
    pub const fn new<Identity: IProfferService_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ProfferService<Identity: IProfferService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, serviceid: *const windows_core::GUID, serviceprovider: *mut core::ffi::c_void, cookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IProfferService_Impl::ProfferService(this, core::mem::transmute_copy(&serviceid), core::mem::transmute_copy(&serviceprovider)) {
                    Ok(ok__) => {
                        cookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RevokeService<Identity: IProfferService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cookie: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProfferService_Impl::RevokeService(this, core::mem::transmute_copy(&cookie)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ProfferService: ProfferService::<Identity, OFFSET>,
            RevokeService: RevokeService::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IProfferService as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IProfferService {}
windows_core::imp::define_interface!(IProgressDialog, IProgressDialog_Vtbl, 0xebbc7c04_315e_11d2_b62f_006097df5bd4);
windows_core::imp::interface_hierarchy!(IProgressDialog, windows_core::IUnknown);
impl IProgressDialog {
    pub unsafe fn StartProgressDialog<P1>(&self, hwndparent: Option<super::super::Foundation::HWND>, punkenablemodless: P1, dwflags: u32, pvresevered: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartProgressDialog)(windows_core::Interface::as_raw(self), hwndparent.unwrap_or(core::mem::zeroed()) as _, punkenablemodless.param().abi(), dwflags, pvresevered.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn StopProgressDialog(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).StopProgressDialog)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetTitle<P0>(&self, pwztitle: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTitle)(windows_core::Interface::as_raw(self), pwztitle.param().abi()).ok() }
    }
    pub unsafe fn SetAnimation(&self, hinstanimation: Option<super::super::Foundation::HINSTANCE>, idanimation: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAnimation)(windows_core::Interface::as_raw(self), hinstanimation.unwrap_or(core::mem::zeroed()) as _, idanimation).ok() }
    }
    pub unsafe fn HasUserCancelled(&self) -> windows_core::BOOL {
        unsafe { (windows_core::Interface::vtable(self).HasUserCancelled)(windows_core::Interface::as_raw(self)) }
    }
    pub unsafe fn SetProgress(&self, dwcompleted: u32, dwtotal: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetProgress)(windows_core::Interface::as_raw(self), dwcompleted, dwtotal).ok() }
    }
    pub unsafe fn SetProgress64(&self, ullcompleted: u64, ulltotal: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetProgress64)(windows_core::Interface::as_raw(self), ullcompleted, ulltotal).ok() }
    }
    pub unsafe fn SetLine<P1>(&self, dwlinenum: u32, pwzstring: P1, fcompactpath: bool, pvresevered: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetLine)(windows_core::Interface::as_raw(self), dwlinenum, pwzstring.param().abi(), fcompactpath.into(), pvresevered.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn SetCancelMsg<P0>(&self, pwzcancelmsg: P0, pvresevered: Option<*const core::ffi::c_void>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetCancelMsg)(windows_core::Interface::as_raw(self), pwzcancelmsg.param().abi(), pvresevered.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn Timer(&self, dwtimeraction: u32, pvresevered: Option<*const core::ffi::c_void>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Timer)(windows_core::Interface::as_raw(self), dwtimeraction, pvresevered.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IProgressDialog_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub StartProgressDialog: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void, u32, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub StopProgressDialog: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetTitle: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetAnimation: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HINSTANCE, u32) -> windows_core::HRESULT,
    pub HasUserCancelled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::BOOL,
    pub SetProgress: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    pub SetProgress64: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64) -> windows_core::HRESULT,
    pub SetLine: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, windows_core::BOOL, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub SetCancelMsg: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub Timer: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IProgressDialog_Impl: windows_core::IUnknownImpl {
    fn StartProgressDialog(&self, hwndparent: super::super::Foundation::HWND, punkenablemodless: windows_core::Ref<windows_core::IUnknown>, dwflags: u32, pvresevered: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn StopProgressDialog(&self) -> windows_core::Result<()>;
    fn SetTitle(&self, pwztitle: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetAnimation(&self, hinstanimation: super::super::Foundation::HINSTANCE, idanimation: u32) -> windows_core::Result<()>;
    fn HasUserCancelled(&self) -> windows_core::BOOL;
    fn SetProgress(&self, dwcompleted: u32, dwtotal: u32) -> windows_core::Result<()>;
    fn SetProgress64(&self, ullcompleted: u64, ulltotal: u64) -> windows_core::Result<()>;
    fn SetLine(&self, dwlinenum: u32, pwzstring: &windows_core::PCWSTR, fcompactpath: windows_core::BOOL, pvresevered: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn SetCancelMsg(&self, pwzcancelmsg: &windows_core::PCWSTR, pvresevered: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn Timer(&self, dwtimeraction: u32, pvresevered: *const core::ffi::c_void) -> windows_core::Result<()>;
}
impl IProgressDialog_Vtbl {
    pub const fn new<Identity: IProgressDialog_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn StartProgressDialog<Identity: IProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, punkenablemodless: *mut core::ffi::c_void, dwflags: u32, pvresevered: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProgressDialog_Impl::StartProgressDialog(this, core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&punkenablemodless), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&pvresevered)).into()
            }
        }
        unsafe extern "system" fn StopProgressDialog<Identity: IProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProgressDialog_Impl::StopProgressDialog(this).into()
            }
        }
        unsafe extern "system" fn SetTitle<Identity: IProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwztitle: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProgressDialog_Impl::SetTitle(this, core::mem::transmute(&pwztitle)).into()
            }
        }
        unsafe extern "system" fn SetAnimation<Identity: IProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hinstanimation: super::super::Foundation::HINSTANCE, idanimation: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProgressDialog_Impl::SetAnimation(this, core::mem::transmute_copy(&hinstanimation), core::mem::transmute_copy(&idanimation)).into()
            }
        }
        unsafe extern "system" fn HasUserCancelled<Identity: IProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::BOOL {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProgressDialog_Impl::HasUserCancelled(this)
            }
        }
        unsafe extern "system" fn SetProgress<Identity: IProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcompleted: u32, dwtotal: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProgressDialog_Impl::SetProgress(this, core::mem::transmute_copy(&dwcompleted), core::mem::transmute_copy(&dwtotal)).into()
            }
        }
        unsafe extern "system" fn SetProgress64<Identity: IProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullcompleted: u64, ulltotal: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProgressDialog_Impl::SetProgress64(this, core::mem::transmute_copy(&ullcompleted), core::mem::transmute_copy(&ulltotal)).into()
            }
        }
        unsafe extern "system" fn SetLine<Identity: IProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwlinenum: u32, pwzstring: windows_core::PCWSTR, fcompactpath: windows_core::BOOL, pvresevered: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProgressDialog_Impl::SetLine(this, core::mem::transmute_copy(&dwlinenum), core::mem::transmute(&pwzstring), core::mem::transmute_copy(&fcompactpath), core::mem::transmute_copy(&pvresevered)).into()
            }
        }
        unsafe extern "system" fn SetCancelMsg<Identity: IProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwzcancelmsg: windows_core::PCWSTR, pvresevered: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProgressDialog_Impl::SetCancelMsg(this, core::mem::transmute(&pwzcancelmsg), core::mem::transmute_copy(&pvresevered)).into()
            }
        }
        unsafe extern "system" fn Timer<Identity: IProgressDialog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwtimeraction: u32, pvresevered: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IProgressDialog_Impl::Timer(this, core::mem::transmute_copy(&dwtimeraction), core::mem::transmute_copy(&pvresevered)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartProgressDialog: StartProgressDialog::<Identity, OFFSET>,
            StopProgressDialog: StopProgressDialog::<Identity, OFFSET>,
            SetTitle: SetTitle::<Identity, OFFSET>,
            SetAnimation: SetAnimation::<Identity, OFFSET>,
            HasUserCancelled: HasUserCancelled::<Identity, OFFSET>,
            SetProgress: SetProgress::<Identity, OFFSET>,
            SetProgress64: SetProgress64::<Identity, OFFSET>,
            SetLine: SetLine::<Identity, OFFSET>,
            SetCancelMsg: SetCancelMsg::<Identity, OFFSET>,
            Timer: Timer::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IProgressDialog as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IProgressDialog {}
windows_core::imp::define_interface!(IPropertyKeyStore, IPropertyKeyStore_Vtbl, 0x75bd59aa_f23b_4963_aba4_0b355752a91b);
windows_core::imp::interface_hierarchy!(IPropertyKeyStore, windows_core::IUnknown);
impl IPropertyKeyStore {
    pub unsafe fn GetKeyCount(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetKeyCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetKeyAt(&self, index: i32, pkey: *mut super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetKeyAt)(windows_core::Interface::as_raw(self), index, pkey as _).ok() }
    }
    pub unsafe fn AppendKey(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AppendKey)(windows_core::Interface::as_raw(self), key).ok() }
    }
    pub unsafe fn DeleteKey(&self, index: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DeleteKey)(windows_core::Interface::as_raw(self), index).ok() }
    }
    pub unsafe fn IsKeyInStore(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsKeyInStore)(windows_core::Interface::as_raw(self), key).ok() }
    }
    pub unsafe fn RemoveKey(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveKey)(windows_core::Interface::as_raw(self), key).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPropertyKeyStore_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetKeyCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub GetKeyAt: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT,
    pub AppendKey: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT,
    pub DeleteKey: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub IsKeyInStore: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT,
    pub RemoveKey: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT,
}
pub trait IPropertyKeyStore_Impl: windows_core::IUnknownImpl {
    fn GetKeyCount(&self) -> windows_core::Result<i32>;
    fn GetKeyAt(&self, index: i32, pkey: *mut super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()>;
    fn AppendKey(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()>;
    fn DeleteKey(&self, index: i32) -> windows_core::Result<()>;
    fn IsKeyInStore(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()>;
    fn RemoveKey(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()>;
}
impl IPropertyKeyStore_Vtbl {
    pub const fn new<Identity: IPropertyKeyStore_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetKeyCount<Identity: IPropertyKeyStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, keycount: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IPropertyKeyStore_Impl::GetKeyCount(this) {
                    Ok(ok__) => {
                        keycount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetKeyAt<Identity: IPropertyKeyStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: i32, pkey: *mut super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPropertyKeyStore_Impl::GetKeyAt(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&pkey)).into()
            }
        }
        unsafe extern "system" fn AppendKey<Identity: IPropertyKeyStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPropertyKeyStore_Impl::AppendKey(this, core::mem::transmute_copy(&key)).into()
            }
        }
        unsafe extern "system" fn DeleteKey<Identity: IPropertyKeyStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPropertyKeyStore_Impl::DeleteKey(this, core::mem::transmute_copy(&index)).into()
            }
        }
        unsafe extern "system" fn IsKeyInStore<Identity: IPropertyKeyStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPropertyKeyStore_Impl::IsKeyInStore(this, core::mem::transmute_copy(&key)).into()
            }
        }
        unsafe extern "system" fn RemoveKey<Identity: IPropertyKeyStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPropertyKeyStore_Impl::RemoveKey(this, core::mem::transmute_copy(&key)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetKeyCount: GetKeyCount::<Identity, OFFSET>,
            GetKeyAt: GetKeyAt::<Identity, OFFSET>,
            AppendKey: AppendKey::<Identity, OFFSET>,
            DeleteKey: DeleteKey::<Identity, OFFSET>,
            IsKeyInStore: IsKeyInStore::<Identity, OFFSET>,
            RemoveKey: RemoveKey::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPropertyKeyStore as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IPropertyKeyStore {}
windows_core::imp::define_interface!(IPublishedApp, IPublishedApp_Vtbl, 0x1bc752e0_9046_11d1_b8b3_006008059382);
impl core::ops::Deref for IPublishedApp {
    type Target = IShellApp;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPublishedApp, windows_core::IUnknown, IShellApp);
impl IPublishedApp {
    pub unsafe fn Install(&self, pstinstall: *const super::super::Foundation::SYSTEMTIME) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Install)(windows_core::Interface::as_raw(self), pstinstall).ok() }
    }
    pub unsafe fn GetPublishedAppInfo(&self, ppai: *mut PUBAPPINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPublishedAppInfo)(windows_core::Interface::as_raw(self), ppai as _).ok() }
    }
    pub unsafe fn Unschedule(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Unschedule)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPublishedApp_Vtbl {
    pub base__: IShellApp_Vtbl,
    pub Install: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::SYSTEMTIME) -> windows_core::HRESULT,
    pub GetPublishedAppInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut PUBAPPINFO) -> windows_core::HRESULT,
    pub Unschedule: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IPublishedApp_Impl: IShellApp_Impl {
    fn Install(&self, pstinstall: *const super::super::Foundation::SYSTEMTIME) -> windows_core::Result<()>;
    fn GetPublishedAppInfo(&self, ppai: *mut PUBAPPINFO) -> windows_core::Result<()>;
    fn Unschedule(&self) -> windows_core::Result<()>;
}
impl IPublishedApp_Vtbl {
    pub const fn new<Identity: IPublishedApp_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Install<Identity: IPublishedApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstinstall: *const super::super::Foundation::SYSTEMTIME) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPublishedApp_Impl::Install(this, core::mem::transmute_copy(&pstinstall)).into()
            }
        }
        unsafe extern "system" fn GetPublishedAppInfo<Identity: IPublishedApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppai: *mut PUBAPPINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPublishedApp_Impl::GetPublishedAppInfo(this, core::mem::transmute_copy(&ppai)).into()
            }
        }
        unsafe extern "system" fn Unschedule<Identity: IPublishedApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPublishedApp_Impl::Unschedule(this).into()
            }
        }
        Self {
            base__: IShellApp_Vtbl::new::<Identity, OFFSET>(),
            Install: Install::<Identity, OFFSET>,
            GetPublishedAppInfo: GetPublishedAppInfo::<Identity, OFFSET>,
            Unschedule: Unschedule::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPublishedApp as windows_core::Interface>::IID || iid == &<IShellApp as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IPublishedApp {}
windows_core::imp::define_interface!(IPublishedApp2, IPublishedApp2_Vtbl, 0x12b81347_1b3a_4a04_aa61_3f768b67fd7e);
impl core::ops::Deref for IPublishedApp2 {
    type Target = IPublishedApp;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPublishedApp2, windows_core::IUnknown, IShellApp, IPublishedApp);
impl IPublishedApp2 {
    pub unsafe fn Install2(&self, pstinstall: *const super::super::Foundation::SYSTEMTIME, hwndparent: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Install2)(windows_core::Interface::as_raw(self), pstinstall, hwndparent).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPublishedApp2_Vtbl {
    pub base__: IPublishedApp_Vtbl,
    pub Install2: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::SYSTEMTIME, super::super::Foundation::HWND) -> windows_core::HRESULT,
}
pub trait IPublishedApp2_Impl: IPublishedApp_Impl {
    fn Install2(&self, pstinstall: *const super::super::Foundation::SYSTEMTIME, hwndparent: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
impl IPublishedApp2_Vtbl {
    pub const fn new<Identity: IPublishedApp2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Install2<Identity: IPublishedApp2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstinstall: *const super::super::Foundation::SYSTEMTIME, hwndparent: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPublishedApp2_Impl::Install2(this, core::mem::transmute_copy(&pstinstall), core::mem::transmute_copy(&hwndparent)).into()
            }
        }
        Self { base__: IPublishedApp_Vtbl::new::<Identity, OFFSET>(), Install2: Install2::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPublishedApp2 as windows_core::Interface>::IID || iid == &<IShellApp as windows_core::Interface>::IID || iid == &<IPublishedApp as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IPublishedApp2 {}
windows_core::imp::define_interface!(IPublishingWizard, IPublishingWizard_Vtbl, 0xaa9198bb_ccec_472d_beed_19a4f6733f7a);
impl core::ops::Deref for IPublishingWizard {
    type Target = IWizardExtension;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IPublishingWizard, windows_core::IUnknown, IWizardExtension);
impl IPublishingWizard {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Initialize<P0, P2>(&self, pdo: P0, dwoptions: u32, pszservicescope: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IDataObject>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pdo.param().abi(), dwoptions, pszservicescope.param().abi()).ok() }
    }
    #[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com"))]
    pub unsafe fn GetTransferManifest(&self, phrfromtransfer: Option<*mut windows_core::HRESULT>, pdocmanifest: Option<*mut Option<super::super::Data::Xml::MsXml::IXMLDOMDocument>>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetTransferManifest)(windows_core::Interface::as_raw(self), phrfromtransfer.unwrap_or(core::mem::zeroed()) as _, pdocmanifest.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IPublishingWizard_Vtbl {
    pub base__: IWizardExtension_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Initialize: usize,
    #[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com"))]
    pub GetTransferManifest: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::HRESULT, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com")))]
    GetTransferManifest: usize,
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com", feature = "Win32_UI_Controls"))]
pub trait IPublishingWizard_Impl: IWizardExtension_Impl {
    fn Initialize(&self, pdo: windows_core::Ref<super::super::System::Com::IDataObject>, dwoptions: u32, pszservicescope: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetTransferManifest(&self, phrfromtransfer: *mut windows_core::HRESULT, pdocmanifest: windows_core::OutRef<super::super::Data::Xml::MsXml::IXMLDOMDocument>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com", feature = "Win32_UI_Controls"))]
impl IPublishingWizard_Vtbl {
    pub const fn new<Identity: IPublishingWizard_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IPublishingWizard_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdo: *mut core::ffi::c_void, dwoptions: u32, pszservicescope: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPublishingWizard_Impl::Initialize(this, core::mem::transmute_copy(&pdo), core::mem::transmute_copy(&dwoptions), core::mem::transmute(&pszservicescope)).into()
            }
        }
        unsafe extern "system" fn GetTransferManifest<Identity: IPublishingWizard_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phrfromtransfer: *mut windows_core::HRESULT, pdocmanifest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IPublishingWizard_Impl::GetTransferManifest(this, core::mem::transmute_copy(&phrfromtransfer), core::mem::transmute_copy(&pdocmanifest)).into()
            }
        }
        Self {
            base__: IWizardExtension_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetTransferManifest: GetTransferManifest::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IPublishingWizard as windows_core::Interface>::IID || iid == &<IWizardExtension as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Data_Xml_MsXml", feature = "Win32_System_Com", feature = "Win32_UI_Controls"))]
impl windows_core::RuntimeName for IPublishingWizard {}
windows_core::imp::define_interface!(IQueryAssociations, IQueryAssociations_Vtbl, 0xc46ca590_3c3f_11d2_bee6_0000f805ca57);
windows_core::imp::interface_hierarchy!(IQueryAssociations, windows_core::IUnknown);
impl IQueryAssociations {
    #[cfg(feature = "Win32_System_Registry")]
    pub unsafe fn Init<P1>(&self, flags: ASSOCF, pszassoc: P1, hkprogid: Option<super::super::System::Registry::HKEY>, hwnd: Option<super::super::Foundation::HWND>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Init)(windows_core::Interface::as_raw(self), flags, pszassoc.param().abi(), hkprogid.unwrap_or(core::mem::zeroed()) as _, hwnd.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetString<P2>(&self, flags: ASSOCF, str: ASSOCSTR, pszextra: P2, pszout: Option<windows_core::PWSTR>, pcchout: *mut u32) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetString)(windows_core::Interface::as_raw(self), flags, str, pszextra.param().abi(), pszout.unwrap_or(core::mem::zeroed()) as _, pcchout as _).ok() }
    }
    #[cfg(feature = "Win32_System_Registry")]
    pub unsafe fn GetKey<P2>(&self, flags: ASSOCF, key: ASSOCKEY, pszextra: P2) -> windows_core::Result<super::super::System::Registry::HKEY>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetKey)(windows_core::Interface::as_raw(self), flags, key, pszextra.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetData<P2>(&self, flags: ASSOCF, data: ASSOCDATA, pszextra: P2, pvout: Option<*mut core::ffi::c_void>, pcbout: Option<*mut u32>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetData)(windows_core::Interface::as_raw(self), flags, data, pszextra.param().abi(), pvout.unwrap_or(core::mem::zeroed()) as _, pcbout.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetEnum<P2>(&self, flags: ASSOCF, assocenum: ASSOCENUM, pszextra: P2, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetEnum)(windows_core::Interface::as_raw(self), flags, assocenum, pszextra.param().abi(), riid, ppvout as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IQueryAssociations_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Registry")]
    pub Init: unsafe extern "system" fn(*mut core::ffi::c_void, ASSOCF, windows_core::PCWSTR, super::super::System::Registry::HKEY, super::super::Foundation::HWND) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Registry"))]
    Init: usize,
    pub GetString: unsafe extern "system" fn(*mut core::ffi::c_void, ASSOCF, ASSOCSTR, windows_core::PCWSTR, windows_core::PWSTR, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Registry")]
    pub GetKey: unsafe extern "system" fn(*mut core::ffi::c_void, ASSOCF, ASSOCKEY, windows_core::PCWSTR, *mut super::super::System::Registry::HKEY) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Registry"))]
    GetKey: usize,
    pub GetData: unsafe extern "system" fn(*mut core::ffi::c_void, ASSOCF, ASSOCDATA, windows_core::PCWSTR, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEnum: unsafe extern "system" fn(*mut core::ffi::c_void, ASSOCF, ASSOCENUM, windows_core::PCWSTR, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Registry")]
pub trait IQueryAssociations_Impl: windows_core::IUnknownImpl {
    fn Init(&self, flags: ASSOCF, pszassoc: &windows_core::PCWSTR, hkprogid: super::super::System::Registry::HKEY, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn GetString(&self, flags: ASSOCF, str: ASSOCSTR, pszextra: &windows_core::PCWSTR, pszout: windows_core::PWSTR, pcchout: *mut u32) -> windows_core::Result<()>;
    fn GetKey(&self, flags: ASSOCF, key: ASSOCKEY, pszextra: &windows_core::PCWSTR) -> windows_core::Result<super::super::System::Registry::HKEY>;
    fn GetData(&self, flags: ASSOCF, data: ASSOCDATA, pszextra: &windows_core::PCWSTR, pvout: *mut core::ffi::c_void, pcbout: *mut u32) -> windows_core::Result<()>;
    fn GetEnum(&self, flags: ASSOCF, assocenum: ASSOCENUM, pszextra: &windows_core::PCWSTR, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Registry")]
impl IQueryAssociations_Vtbl {
    pub const fn new<Identity: IQueryAssociations_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Init<Identity: IQueryAssociations_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: ASSOCF, pszassoc: windows_core::PCWSTR, hkprogid: super::super::System::Registry::HKEY, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IQueryAssociations_Impl::Init(this, core::mem::transmute_copy(&flags), core::mem::transmute(&pszassoc), core::mem::transmute_copy(&hkprogid), core::mem::transmute_copy(&hwnd)).into()
            }
        }
        unsafe extern "system" fn GetString<Identity: IQueryAssociations_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: ASSOCF, str: ASSOCSTR, pszextra: windows_core::PCWSTR, pszout: windows_core::PWSTR, pcchout: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IQueryAssociations_Impl::GetString(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&str), core::mem::transmute(&pszextra), core::mem::transmute_copy(&pszout), core::mem::transmute_copy(&pcchout)).into()
            }
        }
        unsafe extern "system" fn GetKey<Identity: IQueryAssociations_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: ASSOCF, key: ASSOCKEY, pszextra: windows_core::PCWSTR, phkeyout: *mut super::super::System::Registry::HKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IQueryAssociations_Impl::GetKey(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&key), core::mem::transmute(&pszextra)) {
                    Ok(ok__) => {
                        phkeyout.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetData<Identity: IQueryAssociations_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: ASSOCF, data: ASSOCDATA, pszextra: windows_core::PCWSTR, pvout: *mut core::ffi::c_void, pcbout: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IQueryAssociations_Impl::GetData(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&data), core::mem::transmute(&pszextra), core::mem::transmute_copy(&pvout), core::mem::transmute_copy(&pcbout)).into()
            }
        }
        unsafe extern "system" fn GetEnum<Identity: IQueryAssociations_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: ASSOCF, assocenum: ASSOCENUM, pszextra: windows_core::PCWSTR, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IQueryAssociations_Impl::GetEnum(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&assocenum), core::mem::transmute(&pszextra), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppvout)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Init: Init::<Identity, OFFSET>,
            GetString: GetString::<Identity, OFFSET>,
            GetKey: GetKey::<Identity, OFFSET>,
            GetData: GetData::<Identity, OFFSET>,
            GetEnum: GetEnum::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryAssociations as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Registry")]
impl windows_core::RuntimeName for IQueryAssociations {}
windows_core::imp::define_interface!(IQueryCancelAutoPlay, IQueryCancelAutoPlay_Vtbl, 0xddefe873_6997_4e68_be26_39b633adbe12);
windows_core::imp::interface_hierarchy!(IQueryCancelAutoPlay, windows_core::IUnknown);
impl IQueryCancelAutoPlay {
    pub unsafe fn AllowAutoPlay<P0, P2>(&self, pszpath: P0, dwcontenttype: u32, pszlabel: P2, dwserialnumber: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AllowAutoPlay)(windows_core::Interface::as_raw(self), pszpath.param().abi(), dwcontenttype, pszlabel.param().abi(), dwserialnumber).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IQueryCancelAutoPlay_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AllowAutoPlay: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
}
pub trait IQueryCancelAutoPlay_Impl: windows_core::IUnknownImpl {
    fn AllowAutoPlay(&self, pszpath: &windows_core::PCWSTR, dwcontenttype: u32, pszlabel: &windows_core::PCWSTR, dwserialnumber: u32) -> windows_core::Result<()>;
}
impl IQueryCancelAutoPlay_Vtbl {
    pub const fn new<Identity: IQueryCancelAutoPlay_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AllowAutoPlay<Identity: IQueryCancelAutoPlay_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR, dwcontenttype: u32, pszlabel: windows_core::PCWSTR, dwserialnumber: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IQueryCancelAutoPlay_Impl::AllowAutoPlay(this, core::mem::transmute(&pszpath), core::mem::transmute_copy(&dwcontenttype), core::mem::transmute(&pszlabel), core::mem::transmute_copy(&dwserialnumber)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), AllowAutoPlay: AllowAutoPlay::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryCancelAutoPlay as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IQueryCancelAutoPlay {}
windows_core::imp::define_interface!(IQueryCodePage, IQueryCodePage_Vtbl, 0xc7b236ce_ee80_11d0_985f_006008059382);
windows_core::imp::interface_hierarchy!(IQueryCodePage, windows_core::IUnknown);
impl IQueryCodePage {
    pub unsafe fn GetCodePage(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCodePage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCodePage(&self, uicodepage: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCodePage)(windows_core::Interface::as_raw(self), uicodepage).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IQueryCodePage_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCodePage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCodePage: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
pub trait IQueryCodePage_Impl: windows_core::IUnknownImpl {
    fn GetCodePage(&self) -> windows_core::Result<u32>;
    fn SetCodePage(&self, uicodepage: u32) -> windows_core::Result<()>;
}
impl IQueryCodePage_Vtbl {
    pub const fn new<Identity: IQueryCodePage_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCodePage<Identity: IQueryCodePage_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, puicodepage: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IQueryCodePage_Impl::GetCodePage(this) {
                    Ok(ok__) => {
                        puicodepage.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCodePage<Identity: IQueryCodePage_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uicodepage: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IQueryCodePage_Impl::SetCodePage(this, core::mem::transmute_copy(&uicodepage)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCodePage: GetCodePage::<Identity, OFFSET>,
            SetCodePage: SetCodePage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryCodePage as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IQueryCodePage {}
windows_core::imp::define_interface!(IQueryContinue, IQueryContinue_Vtbl, 0x7307055c_b24a_486b_9f25_163e597a28a9);
windows_core::imp::interface_hierarchy!(IQueryContinue, windows_core::IUnknown);
impl IQueryContinue {
    pub unsafe fn QueryContinue(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).QueryContinue)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IQueryContinue_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub QueryContinue: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IQueryContinue_Impl: windows_core::IUnknownImpl {
    fn QueryContinue(&self) -> windows_core::Result<()>;
}
impl IQueryContinue_Vtbl {
    pub const fn new<Identity: IQueryContinue_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn QueryContinue<Identity: IQueryContinue_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IQueryContinue_Impl::QueryContinue(this).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), QueryContinue: QueryContinue::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryContinue as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IQueryContinue {}
windows_core::imp::define_interface!(IQueryContinueWithStatus, IQueryContinueWithStatus_Vtbl, 0x9090be5b_502b_41fb_bccc_0049a6c7254b);
impl core::ops::Deref for IQueryContinueWithStatus {
    type Target = IQueryContinue;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IQueryContinueWithStatus, windows_core::IUnknown, IQueryContinue);
impl IQueryContinueWithStatus {
    pub unsafe fn SetStatusMessage<P0>(&self, psz: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetStatusMessage)(windows_core::Interface::as_raw(self), psz.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IQueryContinueWithStatus_Vtbl {
    pub base__: IQueryContinue_Vtbl,
    pub SetStatusMessage: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IQueryContinueWithStatus_Impl: IQueryContinue_Impl {
    fn SetStatusMessage(&self, psz: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IQueryContinueWithStatus_Vtbl {
    pub const fn new<Identity: IQueryContinueWithStatus_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetStatusMessage<Identity: IQueryContinueWithStatus_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psz: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IQueryContinueWithStatus_Impl::SetStatusMessage(this, core::mem::transmute(&psz)).into()
            }
        }
        Self { base__: IQueryContinue_Vtbl::new::<Identity, OFFSET>(), SetStatusMessage: SetStatusMessage::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryContinueWithStatus as windows_core::Interface>::IID || iid == &<IQueryContinue as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IQueryContinueWithStatus {}
windows_core::imp::define_interface!(IQueryInfo, IQueryInfo_Vtbl, 0x00021500_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IQueryInfo, windows_core::IUnknown);
impl IQueryInfo {
    pub unsafe fn GetInfoTip(&self, dwflags: QITIPF_FLAGS) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInfoTip)(windows_core::Interface::as_raw(self), dwflags.0 as _, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetInfoFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInfoFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IQueryInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetInfoTip: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetInfoFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait IQueryInfo_Impl: windows_core::IUnknownImpl {
    fn GetInfoTip(&self, dwflags: &QITIPF_FLAGS) -> windows_core::Result<windows_core::PWSTR>;
    fn GetInfoFlags(&self) -> windows_core::Result<u32>;
}
impl IQueryInfo_Vtbl {
    pub const fn new<Identity: IQueryInfo_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetInfoTip<Identity: IQueryInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, ppwsztip: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IQueryInfo_Impl::GetInfoTip(this, core::mem::transmute(&dwflags)) {
                    Ok(ok__) => {
                        ppwsztip.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInfoFlags<Identity: IQueryInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IQueryInfo_Impl::GetInfoFlags(this) {
                    Ok(ok__) => {
                        pdwflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetInfoTip: GetInfoTip::<Identity, OFFSET>,
            GetInfoFlags: GetInfoFlags::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IQueryInfo as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IQueryInfo {}
pub const IRTIR_TASK_FINISHED: u32 = 4u32;
pub const IRTIR_TASK_NOT_RUNNING: u32 = 0u32;
pub const IRTIR_TASK_PENDING: u32 = 3u32;
pub const IRTIR_TASK_RUNNING: u32 = 1u32;
pub const IRTIR_TASK_SUSPENDED: u32 = 2u32;
windows_core::imp::define_interface!(IRegTreeItem, IRegTreeItem_Vtbl, 0xa9521922_0812_4d44_9ec3_7fd38c726f3d);
windows_core::imp::interface_hierarchy!(IRegTreeItem, windows_core::IUnknown);
impl IRegTreeItem {
    pub unsafe fn GetCheckState(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCheckState)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCheckState(&self, bcheck: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCheckState)(windows_core::Interface::as_raw(self), bcheck.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IRegTreeItem_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCheckState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub SetCheckState: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait IRegTreeItem_Impl: windows_core::IUnknownImpl {
    fn GetCheckState(&self) -> windows_core::Result<windows_core::BOOL>;
    fn SetCheckState(&self, bcheck: windows_core::BOOL) -> windows_core::Result<()>;
}
impl IRegTreeItem_Vtbl {
    pub const fn new<Identity: IRegTreeItem_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCheckState<Identity: IRegTreeItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbcheck: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IRegTreeItem_Impl::GetCheckState(this) {
                    Ok(ok__) => {
                        pbcheck.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCheckState<Identity: IRegTreeItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bcheck: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IRegTreeItem_Impl::SetCheckState(this, core::mem::transmute_copy(&bcheck)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCheckState: GetCheckState::<Identity, OFFSET>,
            SetCheckState: SetCheckState::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRegTreeItem as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IRegTreeItem {}
windows_core::imp::define_interface!(IRelatedItem, IRelatedItem_Vtbl, 0xa73ce67a_8ab1_44f1_8d43_d2fcbf6b1cd0);
windows_core::imp::interface_hierarchy!(IRelatedItem, windows_core::IUnknown);
impl IRelatedItem {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetItemIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemIDList)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetItem(&self) -> windows_core::Result<IShellItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItem)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IRelatedItem_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetItemIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetItemIDList: usize,
    pub GetItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IRelatedItem_Impl: windows_core::IUnknownImpl {
    fn GetItemIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn GetItem(&self) -> windows_core::Result<IShellItem>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IRelatedItem_Vtbl {
    pub const fn new<Identity: IRelatedItem_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetItemIDList<Identity: IRelatedItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IRelatedItem_Impl::GetItemIDList(this) {
                    Ok(ok__) => {
                        ppidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItem<Identity: IRelatedItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IRelatedItem_Impl::GetItem(this) {
                    Ok(ok__) => {
                        ppsi.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetItemIDList: GetItemIDList::<Identity, OFFSET>,
            GetItem: GetItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IRelatedItem {}
windows_core::imp::define_interface!(IRemoteComputer, IRemoteComputer_Vtbl, 0x000214fe_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IRemoteComputer, windows_core::IUnknown);
impl IRemoteComputer {
    pub unsafe fn Initialize<P0>(&self, pszmachine: P0, benumerating: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pszmachine.param().abi(), benumerating.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IRemoteComputer_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait IRemoteComputer_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, pszmachine: &windows_core::PCWSTR, benumerating: windows_core::BOOL) -> windows_core::Result<()>;
}
impl IRemoteComputer_Vtbl {
    pub const fn new<Identity: IRemoteComputer_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IRemoteComputer_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszmachine: windows_core::PCWSTR, benumerating: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IRemoteComputer_Impl::Initialize(this, core::mem::transmute(&pszmachine), core::mem::transmute_copy(&benumerating)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRemoteComputer as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IRemoteComputer {}
windows_core::imp::define_interface!(IResolveShellLink, IResolveShellLink_Vtbl, 0x5cd52983_9449_11d2_963a_00c04f79adf0);
windows_core::imp::interface_hierarchy!(IResolveShellLink, windows_core::IUnknown);
impl IResolveShellLink {
    pub unsafe fn ResolveShellLink<P0>(&self, punklink: P0, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).ResolveShellLink)(windows_core::Interface::as_raw(self), punklink.param().abi(), hwnd, fflags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IResolveShellLink_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ResolveShellLink: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::Foundation::HWND, u32) -> windows_core::HRESULT,
}
pub trait IResolveShellLink_Impl: windows_core::IUnknownImpl {
    fn ResolveShellLink(&self, punklink: windows_core::Ref<windows_core::IUnknown>, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::Result<()>;
}
impl IResolveShellLink_Vtbl {
    pub const fn new<Identity: IResolveShellLink_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ResolveShellLink<Identity: IResolveShellLink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punklink: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IResolveShellLink_Impl::ResolveShellLink(this, core::mem::transmute_copy(&punklink), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&fflags)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), ResolveShellLink: ResolveShellLink::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IResolveShellLink as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IResolveShellLink {}
windows_core::imp::define_interface!(IResultsFolder, IResultsFolder_Vtbl, 0x96e5ae6d_6ae1_4b1c_900c_c6480eaa8828);
windows_core::imp::interface_hierarchy!(IResultsFolder, windows_core::IUnknown);
impl IResultsFolder {
    pub unsafe fn AddItem<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddItem)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn AddIDList(&self, pidl: *const Common::ITEMIDLIST, ppidladded: Option<*mut *mut Common::ITEMIDLIST>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddIDList)(windows_core::Interface::as_raw(self), pidl, ppidladded.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn RemoveItem<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveItem)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn RemoveIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveIDList)(windows_core::Interface::as_raw(self), pidl).ok() }
    }
    pub unsafe fn RemoveAll(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveAll)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IResultsFolder_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AddItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub AddIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    AddIDList: usize,
    pub RemoveItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub RemoveIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    RemoveIDList: usize,
    pub RemoveAll: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IResultsFolder_Impl: windows_core::IUnknownImpl {
    fn AddItem(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn AddIDList(&self, pidl: *const Common::ITEMIDLIST, ppidladded: *mut *mut Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn RemoveItem(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn RemoveIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn RemoveAll(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IResultsFolder_Vtbl {
    pub const fn new<Identity: IResultsFolder_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddItem<Identity: IResultsFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IResultsFolder_Impl::AddItem(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn AddIDList<Identity: IResultsFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, ppidladded: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IResultsFolder_Impl::AddIDList(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&ppidladded)).into()
            }
        }
        unsafe extern "system" fn RemoveItem<Identity: IResultsFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IResultsFolder_Impl::RemoveItem(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn RemoveIDList<Identity: IResultsFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IResultsFolder_Impl::RemoveIDList(this, core::mem::transmute_copy(&pidl)).into()
            }
        }
        unsafe extern "system" fn RemoveAll<Identity: IResultsFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IResultsFolder_Impl::RemoveAll(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddItem: AddItem::<Identity, OFFSET>,
            AddIDList: AddIDList::<Identity, OFFSET>,
            RemoveItem: RemoveItem::<Identity, OFFSET>,
            RemoveIDList: RemoveIDList::<Identity, OFFSET>,
            RemoveAll: RemoveAll::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IResultsFolder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IResultsFolder {}
windows_core::imp::define_interface!(IRunnableTask, IRunnableTask_Vtbl, 0x85788d00_6807_11d0_b810_00c04fd706ec);
windows_core::imp::interface_hierarchy!(IRunnableTask, windows_core::IUnknown);
impl IRunnableTask {
    pub unsafe fn Run(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Run)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Kill(&self, bwait: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Kill)(windows_core::Interface::as_raw(self), bwait.into()).ok() }
    }
    pub unsafe fn Suspend(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Suspend)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Resume(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Resume)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsRunning(&self) -> u32 {
        unsafe { (windows_core::Interface::vtable(self).IsRunning)(windows_core::Interface::as_raw(self)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IRunnableTask_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Run: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Kill: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub Suspend: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Resume: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsRunning: unsafe extern "system" fn(*mut core::ffi::c_void) -> u32,
}
pub trait IRunnableTask_Impl: windows_core::IUnknownImpl {
    fn Run(&self) -> windows_core::Result<()>;
    fn Kill(&self, bwait: windows_core::BOOL) -> windows_core::Result<()>;
    fn Suspend(&self) -> windows_core::Result<()>;
    fn Resume(&self) -> windows_core::Result<()>;
    fn IsRunning(&self) -> u32;
}
impl IRunnableTask_Vtbl {
    pub const fn new<Identity: IRunnableTask_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Run<Identity: IRunnableTask_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IRunnableTask_Impl::Run(this).into()
            }
        }
        unsafe extern "system" fn Kill<Identity: IRunnableTask_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bwait: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IRunnableTask_Impl::Kill(this, core::mem::transmute_copy(&bwait)).into()
            }
        }
        unsafe extern "system" fn Suspend<Identity: IRunnableTask_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IRunnableTask_Impl::Suspend(this).into()
            }
        }
        unsafe extern "system" fn Resume<Identity: IRunnableTask_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IRunnableTask_Impl::Resume(this).into()
            }
        }
        unsafe extern "system" fn IsRunning<Identity: IRunnableTask_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IRunnableTask_Impl::IsRunning(this)
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Run: Run::<Identity, OFFSET>,
            Kill: Kill::<Identity, OFFSET>,
            Suspend: Suspend::<Identity, OFFSET>,
            Resume: Resume::<Identity, OFFSET>,
            IsRunning: IsRunning::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IRunnableTask as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IRunnableTask {}
pub const ISFBVIEWMODE_LARGEICONS: u32 = 2u32;
pub const ISFBVIEWMODE_LOGOS: u32 = 3u32;
pub const ISFBVIEWMODE_SMALLICONS: u32 = 1u32;
pub const ISFB_MASK_BKCOLOR: u32 = 2u32;
pub const ISFB_MASK_COLORS: u32 = 32u32;
pub const ISFB_MASK_IDLIST: u32 = 16u32;
pub const ISFB_MASK_SHELLFOLDER: u32 = 8u32;
pub const ISFB_MASK_STATE: u32 = 1u32;
pub const ISFB_MASK_VIEWMODE: u32 = 4u32;
pub const ISFB_STATE_ALLOWRENAME: u32 = 2u32;
pub const ISFB_STATE_BTNMINSIZE: u32 = 256u32;
pub const ISFB_STATE_CHANNELBAR: u32 = 16u32;
pub const ISFB_STATE_DEBOSSED: u32 = 1u32;
pub const ISFB_STATE_DEFAULT: u32 = 0u32;
pub const ISFB_STATE_FULLOPEN: u32 = 64u32;
pub const ISFB_STATE_NONAMESORT: u32 = 128u32;
pub const ISFB_STATE_NOSHOWTEXT: u32 = 4u32;
pub const ISFB_STATE_QLINKSMODE: u32 = 32u32;
pub const ISHCUTCMDID_COMMITHISTORY: i32 = 2i32;
pub const ISHCUTCMDID_DOWNLOADICON: i32 = 0i32;
pub const ISHCUTCMDID_INTSHORTCUTCREATE: i32 = 1i32;
pub const ISHCUTCMDID_SETUSERAWURL: i32 = 3i32;
pub const ISIOI_ICONFILE: u32 = 1u32;
pub const ISIOI_ICONINDEX: u32 = 2u32;
pub const IS_E_EXEC_FAILED: windows_core::HRESULT = windows_core::HRESULT(0x80042002_u32 as _);
pub const IS_FULLSCREEN: u32 = 2u32;
pub const IS_NORMAL: u32 = 1u32;
pub const IS_SPLIT: u32 = 4u32;
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IScriptErrorList, IScriptErrorList_Vtbl, 0xf3470f24_15fd_11d2_bb2e_00805ff7efca);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IScriptErrorList {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IScriptErrorList, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IScriptErrorList {
    pub unsafe fn advanceError(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).advanceError)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn retreatError(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).retreatError)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn canAdvanceError(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).canAdvanceError)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn canRetreatError(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).canRetreatError)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn getErrorLine(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).getErrorLine)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn getErrorChar(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).getErrorChar)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn getErrorCode(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).getErrorCode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn getErrorMsg(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).getErrorMsg)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn getErrorUrl(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).getErrorUrl)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn getAlwaysShowLockState(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).getAlwaysShowLockState)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn getDetailsPaneOpen(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).getDetailsPaneOpen)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn setDetailsPaneOpen(&self, fdetailspaneopen: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).setDetailsPaneOpen)(windows_core::Interface::as_raw(self), fdetailspaneopen.into()).ok() }
    }
    pub unsafe fn getPerErrorDisplay(&self) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).getPerErrorDisplay)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn setPerErrorDisplay(&self, fpererrordisplay: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).setPerErrorDisplay)(windows_core::Interface::as_raw(self), fpererrordisplay.into()).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IScriptErrorList_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub advanceError: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub retreatError: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub canAdvanceError: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub canRetreatError: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub getErrorLine: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub getErrorChar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub getErrorCode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub getErrorMsg: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub getErrorUrl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub getAlwaysShowLockState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub getDetailsPaneOpen: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub setDetailsPaneOpen: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub getPerErrorDisplay: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub setPerErrorDisplay: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IScriptErrorList_Impl: super::super::System::Com::IDispatch_Impl {
    fn advanceError(&self) -> windows_core::Result<()>;
    fn retreatError(&self) -> windows_core::Result<()>;
    fn canAdvanceError(&self) -> windows_core::Result<windows_core::BOOL>;
    fn canRetreatError(&self) -> windows_core::Result<windows_core::BOOL>;
    fn getErrorLine(&self) -> windows_core::Result<i32>;
    fn getErrorChar(&self) -> windows_core::Result<i32>;
    fn getErrorCode(&self) -> windows_core::Result<i32>;
    fn getErrorMsg(&self) -> windows_core::Result<windows_core::BSTR>;
    fn getErrorUrl(&self) -> windows_core::Result<windows_core::BSTR>;
    fn getAlwaysShowLockState(&self) -> windows_core::Result<windows_core::BOOL>;
    fn getDetailsPaneOpen(&self) -> windows_core::Result<windows_core::BOOL>;
    fn setDetailsPaneOpen(&self, fdetailspaneopen: windows_core::BOOL) -> windows_core::Result<()>;
    fn getPerErrorDisplay(&self) -> windows_core::Result<windows_core::BOOL>;
    fn setPerErrorDisplay(&self, fpererrordisplay: windows_core::BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IScriptErrorList_Vtbl {
    pub const fn new<Identity: IScriptErrorList_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn advanceError<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IScriptErrorList_Impl::advanceError(this).into()
            }
        }
        unsafe extern "system" fn retreatError<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IScriptErrorList_Impl::retreatError(this).into()
            }
        }
        unsafe extern "system" fn canAdvanceError<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcanadvance: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IScriptErrorList_Impl::canAdvanceError(this) {
                    Ok(ok__) => {
                        pfcanadvance.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn canRetreatError<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcanretreat: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IScriptErrorList_Impl::canRetreatError(this) {
                    Ok(ok__) => {
                        pfcanretreat.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn getErrorLine<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plline: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IScriptErrorList_Impl::getErrorLine(this) {
                    Ok(ok__) => {
                        plline.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn getErrorChar<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plchar: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IScriptErrorList_Impl::getErrorChar(this) {
                    Ok(ok__) => {
                        plchar.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn getErrorCode<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plcode: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IScriptErrorList_Impl::getErrorCode(this) {
                    Ok(ok__) => {
                        plcode.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn getErrorMsg<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstr: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IScriptErrorList_Impl::getErrorMsg(this) {
                    Ok(ok__) => {
                        pstr.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn getErrorUrl<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstr: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IScriptErrorList_Impl::getErrorUrl(this) {
                    Ok(ok__) => {
                        pstr.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn getAlwaysShowLockState<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfalwaysshowlocked: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IScriptErrorList_Impl::getAlwaysShowLockState(this) {
                    Ok(ok__) => {
                        pfalwaysshowlocked.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn getDetailsPaneOpen<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfdetailspaneopen: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IScriptErrorList_Impl::getDetailsPaneOpen(this) {
                    Ok(ok__) => {
                        pfdetailspaneopen.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn setDetailsPaneOpen<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fdetailspaneopen: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IScriptErrorList_Impl::setDetailsPaneOpen(this, core::mem::transmute_copy(&fdetailspaneopen)).into()
            }
        }
        unsafe extern "system" fn getPerErrorDisplay<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfpererrordisplay: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IScriptErrorList_Impl::getPerErrorDisplay(this) {
                    Ok(ok__) => {
                        pfpererrordisplay.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn setPerErrorDisplay<Identity: IScriptErrorList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fpererrordisplay: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IScriptErrorList_Impl::setPerErrorDisplay(this, core::mem::transmute_copy(&fpererrordisplay)).into()
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            advanceError: advanceError::<Identity, OFFSET>,
            retreatError: retreatError::<Identity, OFFSET>,
            canAdvanceError: canAdvanceError::<Identity, OFFSET>,
            canRetreatError: canRetreatError::<Identity, OFFSET>,
            getErrorLine: getErrorLine::<Identity, OFFSET>,
            getErrorChar: getErrorChar::<Identity, OFFSET>,
            getErrorCode: getErrorCode::<Identity, OFFSET>,
            getErrorMsg: getErrorMsg::<Identity, OFFSET>,
            getErrorUrl: getErrorUrl::<Identity, OFFSET>,
            getAlwaysShowLockState: getAlwaysShowLockState::<Identity, OFFSET>,
            getDetailsPaneOpen: getDetailsPaneOpen::<Identity, OFFSET>,
            setDetailsPaneOpen: setDetailsPaneOpen::<Identity, OFFSET>,
            getPerErrorDisplay: getPerErrorDisplay::<Identity, OFFSET>,
            setPerErrorDisplay: setPerErrorDisplay::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IScriptErrorList as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IScriptErrorList {}
windows_core::imp::define_interface!(ISearchBoxInfo, ISearchBoxInfo_Vtbl, 0x6af6e03f_d664_4ef4_9626_f7e0ed36755e);
windows_core::imp::interface_hierarchy!(ISearchBoxInfo, windows_core::IUnknown);
impl ISearchBoxInfo {
    pub unsafe fn GetCondition<T>(&self) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetCondition)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetText(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetText)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISearchBoxInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCondition: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait ISearchBoxInfo_Impl: windows_core::IUnknownImpl {
    fn GetCondition(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetText(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl ISearchBoxInfo_Vtbl {
    pub const fn new<Identity: ISearchBoxInfo_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCondition<Identity: ISearchBoxInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchBoxInfo_Impl::GetCondition(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetText<Identity: ISearchBoxInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsz: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISearchBoxInfo_Impl::GetText(this) {
                    Ok(ok__) => {
                        ppsz.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCondition: GetCondition::<Identity, OFFSET>,
            GetText: GetText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISearchBoxInfo as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISearchBoxInfo {}
windows_core::imp::define_interface!(ISearchContext, ISearchContext_Vtbl, 0x09f656a2_41af_480c_88f7_16cc0d164615);
windows_core::imp::interface_hierarchy!(ISearchContext, windows_core::IUnknown);
impl ISearchContext {
    pub unsafe fn GetSearchUrl(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSearchUrl)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetSearchText(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSearchText)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetSearchStyle(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSearchStyle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISearchContext_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSearchUrl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSearchText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSearchStyle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait ISearchContext_Impl: windows_core::IUnknownImpl {
    fn GetSearchUrl(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetSearchText(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetSearchStyle(&self) -> windows_core::Result<u32>;
}
impl ISearchContext_Vtbl {
    pub const fn new<Identity: ISearchContext_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSearchUrl<Identity: ISearchContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsearchurl: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISearchContext_Impl::GetSearchUrl(this) {
                    Ok(ok__) => {
                        pbstrsearchurl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSearchText<Identity: ISearchContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsearchtext: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISearchContext_Impl::GetSearchText(this) {
                    Ok(ok__) => {
                        pbstrsearchtext.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSearchStyle<Identity: ISearchContext_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwsearchstyle: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISearchContext_Impl::GetSearchStyle(this) {
                    Ok(ok__) => {
                        pdwsearchstyle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSearchUrl: GetSearchUrl::<Identity, OFFSET>,
            GetSearchText: GetSearchText::<Identity, OFFSET>,
            GetSearchStyle: GetSearchStyle::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISearchContext as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISearchContext {}
windows_core::imp::define_interface!(ISearchFolderItemFactory, ISearchFolderItemFactory_Vtbl, 0xa0ffbc28_5482_4366_be27_3e81e78e06c2);
windows_core::imp::interface_hierarchy!(ISearchFolderItemFactory, windows_core::IUnknown);
impl ISearchFolderItemFactory {
    pub unsafe fn SetDisplayName<P0>(&self, pszdisplayname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDisplayName)(windows_core::Interface::as_raw(self), pszdisplayname.param().abi()).ok() }
    }
    pub unsafe fn SetFolderTypeID(&self, ftid: windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFolderTypeID)(windows_core::Interface::as_raw(self), core::mem::transmute(ftid)).ok() }
    }
    pub unsafe fn SetFolderLogicalViewMode(&self, flvm: FOLDERLOGICALVIEWMODE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFolderLogicalViewMode)(windows_core::Interface::as_raw(self), flvm).ok() }
    }
    pub unsafe fn SetIconSize(&self, iiconsize: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetIconSize)(windows_core::Interface::as_raw(self), iiconsize).ok() }
    }
    pub unsafe fn SetVisibleColumns(&self, rgkey: &[super::super::Foundation::PROPERTYKEY]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetVisibleColumns)(windows_core::Interface::as_raw(self), rgkey.len().try_into().unwrap(), core::mem::transmute(rgkey.as_ptr())).ok() }
    }
    pub unsafe fn SetSortColumns(&self, rgsortcolumns: &[SORTCOLUMN]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSortColumns)(windows_core::Interface::as_raw(self), rgsortcolumns.len().try_into().unwrap(), core::mem::transmute(rgsortcolumns.as_ptr())).ok() }
    }
    pub unsafe fn SetGroupColumn(&self, keygroup: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetGroupColumn)(windows_core::Interface::as_raw(self), keygroup).ok() }
    }
    pub unsafe fn SetStacks(&self, rgstackkeys: &[super::super::Foundation::PROPERTYKEY]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetStacks)(windows_core::Interface::as_raw(self), rgstackkeys.len().try_into().unwrap(), core::mem::transmute(rgstackkeys.as_ptr())).ok() }
    }
    pub unsafe fn SetScope<P0>(&self, psiascope: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItemArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetScope)(windows_core::Interface::as_raw(self), psiascope.param().abi()).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Search"))]
    pub unsafe fn SetCondition<P0>(&self, pcondition: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Search::ICondition>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetCondition)(windows_core::Interface::as_raw(self), pcondition.param().abi()).ok() }
    }
    pub unsafe fn GetShellItem<T>(&self) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetShellItem)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIDList)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISearchFolderItemFactory_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetDisplayName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetFolderTypeID: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::GUID) -> windows_core::HRESULT,
    pub SetFolderLogicalViewMode: unsafe extern "system" fn(*mut core::ffi::c_void, FOLDERLOGICALVIEWMODE) -> windows_core::HRESULT,
    pub SetIconSize: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SetVisibleColumns: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT,
    pub SetSortColumns: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const SORTCOLUMN) -> windows_core::HRESULT,
    pub SetGroupColumn: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT,
    pub SetStacks: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT,
    pub SetScope: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Search"))]
    pub SetCondition: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Search")))]
    SetCondition: usize,
    pub GetShellItem: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetIDList: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Search", feature = "Win32_UI_Shell_Common"))]
pub trait ISearchFolderItemFactory_Impl: windows_core::IUnknownImpl {
    fn SetDisplayName(&self, pszdisplayname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetFolderTypeID(&self, ftid: &windows_core::GUID) -> windows_core::Result<()>;
    fn SetFolderLogicalViewMode(&self, flvm: FOLDERLOGICALVIEWMODE) -> windows_core::Result<()>;
    fn SetIconSize(&self, iiconsize: i32) -> windows_core::Result<()>;
    fn SetVisibleColumns(&self, cvisiblecolumns: u32, rgkey: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()>;
    fn SetSortColumns(&self, csortcolumns: u32, rgsortcolumns: *const SORTCOLUMN) -> windows_core::Result<()>;
    fn SetGroupColumn(&self, keygroup: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()>;
    fn SetStacks(&self, cstackkeys: u32, rgstackkeys: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()>;
    fn SetScope(&self, psiascope: windows_core::Ref<IShellItemArray>) -> windows_core::Result<()>;
    fn SetCondition(&self, pcondition: windows_core::Ref<super::super::System::Search::ICondition>) -> windows_core::Result<()>;
    fn GetShellItem(&self, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Search", feature = "Win32_UI_Shell_Common"))]
impl ISearchFolderItemFactory_Vtbl {
    pub const fn new<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetDisplayName<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdisplayname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::SetDisplayName(this, core::mem::transmute(&pszdisplayname)).into()
            }
        }
        unsafe extern "system" fn SetFolderTypeID<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ftid: windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::SetFolderTypeID(this, core::mem::transmute(&ftid)).into()
            }
        }
        unsafe extern "system" fn SetFolderLogicalViewMode<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flvm: FOLDERLOGICALVIEWMODE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::SetFolderLogicalViewMode(this, core::mem::transmute_copy(&flvm)).into()
            }
        }
        unsafe extern "system" fn SetIconSize<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iiconsize: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::SetIconSize(this, core::mem::transmute_copy(&iiconsize)).into()
            }
        }
        unsafe extern "system" fn SetVisibleColumns<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cvisiblecolumns: u32, rgkey: *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::SetVisibleColumns(this, core::mem::transmute_copy(&cvisiblecolumns), core::mem::transmute_copy(&rgkey)).into()
            }
        }
        unsafe extern "system" fn SetSortColumns<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, csortcolumns: u32, rgsortcolumns: *const SORTCOLUMN) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::SetSortColumns(this, core::mem::transmute_copy(&csortcolumns), core::mem::transmute_copy(&rgsortcolumns)).into()
            }
        }
        unsafe extern "system" fn SetGroupColumn<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, keygroup: *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::SetGroupColumn(this, core::mem::transmute_copy(&keygroup)).into()
            }
        }
        unsafe extern "system" fn SetStacks<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cstackkeys: u32, rgstackkeys: *const super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::SetStacks(this, core::mem::transmute_copy(&cstackkeys), core::mem::transmute_copy(&rgstackkeys)).into()
            }
        }
        unsafe extern "system" fn SetScope<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiascope: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::SetScope(this, core::mem::transmute_copy(&psiascope)).into()
            }
        }
        unsafe extern "system" fn SetCondition<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcondition: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::SetCondition(this, core::mem::transmute_copy(&pcondition)).into()
            }
        }
        unsafe extern "system" fn GetShellItem<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISearchFolderItemFactory_Impl::GetShellItem(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetIDList<Identity: ISearchFolderItemFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISearchFolderItemFactory_Impl::GetIDList(this) {
                    Ok(ok__) => {
                        ppidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetDisplayName: SetDisplayName::<Identity, OFFSET>,
            SetFolderTypeID: SetFolderTypeID::<Identity, OFFSET>,
            SetFolderLogicalViewMode: SetFolderLogicalViewMode::<Identity, OFFSET>,
            SetIconSize: SetIconSize::<Identity, OFFSET>,
            SetVisibleColumns: SetVisibleColumns::<Identity, OFFSET>,
            SetSortColumns: SetSortColumns::<Identity, OFFSET>,
            SetGroupColumn: SetGroupColumn::<Identity, OFFSET>,
            SetStacks: SetStacks::<Identity, OFFSET>,
            SetScope: SetScope::<Identity, OFFSET>,
            SetCondition: SetCondition::<Identity, OFFSET>,
            GetShellItem: GetShellItem::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISearchFolderItemFactory as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Search", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for ISearchFolderItemFactory {}
windows_core::imp::define_interface!(ISharedBitmap, ISharedBitmap_Vtbl, 0x091162a4_bc96_411f_aae8_c5122cd03363);
windows_core::imp::interface_hierarchy!(ISharedBitmap, windows_core::IUnknown);
impl ISharedBitmap {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetSharedBitmap(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSharedBitmap)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSize(&self) -> windows_core::Result<super::super::Foundation::SIZE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFormat(&self) -> windows_core::Result<WTS_ALPHATYPE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFormat)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn InitializeBitmap(&self, hbm: super::super::Graphics::Gdi::HBITMAP, wtsat: WTS_ALPHATYPE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InitializeBitmap)(windows_core::Interface::as_raw(self), hbm, wtsat).ok() }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn Detach(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Detach)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISharedBitmap_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetSharedBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetSharedBitmap: usize,
    pub GetSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::SIZE) -> windows_core::HRESULT,
    pub GetFormat: unsafe extern "system" fn(*mut core::ffi::c_void, *mut WTS_ALPHATYPE) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub InitializeBitmap: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HBITMAP, WTS_ALPHATYPE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    InitializeBitmap: usize,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub Detach: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    Detach: usize,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait ISharedBitmap_Impl: windows_core::IUnknownImpl {
    fn GetSharedBitmap(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
    fn GetSize(&self) -> windows_core::Result<super::super::Foundation::SIZE>;
    fn GetFormat(&self) -> windows_core::Result<WTS_ALPHATYPE>;
    fn InitializeBitmap(&self, hbm: super::super::Graphics::Gdi::HBITMAP, wtsat: WTS_ALPHATYPE) -> windows_core::Result<()>;
    fn Detach(&self) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl ISharedBitmap_Vtbl {
    pub const fn new<Identity: ISharedBitmap_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSharedBitmap<Identity: ISharedBitmap_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phbm: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISharedBitmap_Impl::GetSharedBitmap(this) {
                    Ok(ok__) => {
                        phbm.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSize<Identity: ISharedBitmap_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psize: *mut super::super::Foundation::SIZE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISharedBitmap_Impl::GetSize(this) {
                    Ok(ok__) => {
                        psize.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFormat<Identity: ISharedBitmap_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pat: *mut WTS_ALPHATYPE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISharedBitmap_Impl::GetFormat(this) {
                    Ok(ok__) => {
                        pat.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn InitializeBitmap<Identity: ISharedBitmap_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hbm: super::super::Graphics::Gdi::HBITMAP, wtsat: WTS_ALPHATYPE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISharedBitmap_Impl::InitializeBitmap(this, core::mem::transmute_copy(&hbm), core::mem::transmute_copy(&wtsat)).into()
            }
        }
        unsafe extern "system" fn Detach<Identity: ISharedBitmap_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phbm: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISharedBitmap_Impl::Detach(this) {
                    Ok(ok__) => {
                        phbm.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSharedBitmap: GetSharedBitmap::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
            GetFormat: GetFormat::<Identity, OFFSET>,
            InitializeBitmap: InitializeBitmap::<Identity, OFFSET>,
            Detach: Detach::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISharedBitmap as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for ISharedBitmap {}
windows_core::imp::define_interface!(ISharingConfigurationManager, ISharingConfigurationManager_Vtbl, 0xb4cd448a_9c86_4466_9201_2e62105b87ae);
windows_core::imp::interface_hierarchy!(ISharingConfigurationManager, windows_core::IUnknown);
impl ISharingConfigurationManager {
    pub unsafe fn CreateShare(&self, dsid: DEF_SHARE_ID, role: SHARE_ROLE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CreateShare)(windows_core::Interface::as_raw(self), dsid, role).ok() }
    }
    pub unsafe fn DeleteShare(&self, dsid: DEF_SHARE_ID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DeleteShare)(windows_core::Interface::as_raw(self), dsid).ok() }
    }
    pub unsafe fn ShareExists(&self, dsid: DEF_SHARE_ID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShareExists)(windows_core::Interface::as_raw(self), dsid).ok() }
    }
    pub unsafe fn GetSharePermissions(&self, dsid: DEF_SHARE_ID) -> windows_core::Result<SHARE_ROLE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSharePermissions)(windows_core::Interface::as_raw(self), dsid, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SharePrinters(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SharePrinters)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn StopSharingPrinters(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).StopSharingPrinters)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ArePrintersShared(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ArePrintersShared)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISharingConfigurationManager_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CreateShare: unsafe extern "system" fn(*mut core::ffi::c_void, DEF_SHARE_ID, SHARE_ROLE) -> windows_core::HRESULT,
    pub DeleteShare: unsafe extern "system" fn(*mut core::ffi::c_void, DEF_SHARE_ID) -> windows_core::HRESULT,
    pub ShareExists: unsafe extern "system" fn(*mut core::ffi::c_void, DEF_SHARE_ID) -> windows_core::HRESULT,
    pub GetSharePermissions: unsafe extern "system" fn(*mut core::ffi::c_void, DEF_SHARE_ID, *mut SHARE_ROLE) -> windows_core::HRESULT,
    pub SharePrinters: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StopSharingPrinters: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ArePrintersShared: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ISharingConfigurationManager_Impl: windows_core::IUnknownImpl {
    fn CreateShare(&self, dsid: DEF_SHARE_ID, role: SHARE_ROLE) -> windows_core::Result<()>;
    fn DeleteShare(&self, dsid: DEF_SHARE_ID) -> windows_core::Result<()>;
    fn ShareExists(&self, dsid: DEF_SHARE_ID) -> windows_core::Result<()>;
    fn GetSharePermissions(&self, dsid: DEF_SHARE_ID) -> windows_core::Result<SHARE_ROLE>;
    fn SharePrinters(&self) -> windows_core::Result<()>;
    fn StopSharingPrinters(&self) -> windows_core::Result<()>;
    fn ArePrintersShared(&self) -> windows_core::Result<()>;
}
impl ISharingConfigurationManager_Vtbl {
    pub const fn new<Identity: ISharingConfigurationManager_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CreateShare<Identity: ISharingConfigurationManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsid: DEF_SHARE_ID, role: SHARE_ROLE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISharingConfigurationManager_Impl::CreateShare(this, core::mem::transmute_copy(&dsid), core::mem::transmute_copy(&role)).into()
            }
        }
        unsafe extern "system" fn DeleteShare<Identity: ISharingConfigurationManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsid: DEF_SHARE_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISharingConfigurationManager_Impl::DeleteShare(this, core::mem::transmute_copy(&dsid)).into()
            }
        }
        unsafe extern "system" fn ShareExists<Identity: ISharingConfigurationManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsid: DEF_SHARE_ID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISharingConfigurationManager_Impl::ShareExists(this, core::mem::transmute_copy(&dsid)).into()
            }
        }
        unsafe extern "system" fn GetSharePermissions<Identity: ISharingConfigurationManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsid: DEF_SHARE_ID, prole: *mut SHARE_ROLE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISharingConfigurationManager_Impl::GetSharePermissions(this, core::mem::transmute_copy(&dsid)) {
                    Ok(ok__) => {
                        prole.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SharePrinters<Identity: ISharingConfigurationManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISharingConfigurationManager_Impl::SharePrinters(this).into()
            }
        }
        unsafe extern "system" fn StopSharingPrinters<Identity: ISharingConfigurationManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISharingConfigurationManager_Impl::StopSharingPrinters(this).into()
            }
        }
        unsafe extern "system" fn ArePrintersShared<Identity: ISharingConfigurationManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISharingConfigurationManager_Impl::ArePrintersShared(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateShare: CreateShare::<Identity, OFFSET>,
            DeleteShare: DeleteShare::<Identity, OFFSET>,
            ShareExists: ShareExists::<Identity, OFFSET>,
            GetSharePermissions: GetSharePermissions::<Identity, OFFSET>,
            SharePrinters: SharePrinters::<Identity, OFFSET>,
            StopSharingPrinters: StopSharingPrinters::<Identity, OFFSET>,
            ArePrintersShared: ArePrintersShared::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISharingConfigurationManager as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISharingConfigurationManager {}
windows_core::imp::define_interface!(IShellApp, IShellApp_Vtbl, 0xa3e14960_935f_11d1_b8b8_006008059382);
windows_core::imp::interface_hierarchy!(IShellApp, windows_core::IUnknown);
impl IShellApp {
    pub unsafe fn GetAppInfo(&self, pai: *mut APPINFODATA) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetAppInfo)(windows_core::Interface::as_raw(self), pai as _).ok() }
    }
    pub unsafe fn GetPossibleActions(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPossibleActions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSlowAppInfo(&self, psaid: *mut SLOWAPPINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSlowAppInfo)(windows_core::Interface::as_raw(self), psaid as _).ok() }
    }
    pub unsafe fn GetCachedSlowAppInfo(&self, psaid: *mut SLOWAPPINFO) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCachedSlowAppInfo)(windows_core::Interface::as_raw(self), psaid as _).ok() }
    }
    pub unsafe fn IsInstalled(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsInstalled)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellApp_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetAppInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut APPINFODATA) -> windows_core::HRESULT,
    pub GetPossibleActions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSlowAppInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SLOWAPPINFO) -> windows_core::HRESULT,
    pub GetCachedSlowAppInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SLOWAPPINFO) -> windows_core::HRESULT,
    pub IsInstalled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IShellApp_Impl: windows_core::IUnknownImpl {
    fn GetAppInfo(&self, pai: *mut APPINFODATA) -> windows_core::Result<()>;
    fn GetPossibleActions(&self) -> windows_core::Result<u32>;
    fn GetSlowAppInfo(&self, psaid: *mut SLOWAPPINFO) -> windows_core::Result<()>;
    fn GetCachedSlowAppInfo(&self, psaid: *mut SLOWAPPINFO) -> windows_core::Result<()>;
    fn IsInstalled(&self) -> windows_core::Result<()>;
}
impl IShellApp_Vtbl {
    pub const fn new<Identity: IShellApp_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetAppInfo<Identity: IShellApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pai: *mut APPINFODATA) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellApp_Impl::GetAppInfo(this, core::mem::transmute_copy(&pai)).into()
            }
        }
        unsafe extern "system" fn GetPossibleActions<Identity: IShellApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwactions: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellApp_Impl::GetPossibleActions(this) {
                    Ok(ok__) => {
                        pdwactions.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSlowAppInfo<Identity: IShellApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psaid: *mut SLOWAPPINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellApp_Impl::GetSlowAppInfo(this, core::mem::transmute_copy(&psaid)).into()
            }
        }
        unsafe extern "system" fn GetCachedSlowAppInfo<Identity: IShellApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psaid: *mut SLOWAPPINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellApp_Impl::GetCachedSlowAppInfo(this, core::mem::transmute_copy(&psaid)).into()
            }
        }
        unsafe extern "system" fn IsInstalled<Identity: IShellApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellApp_Impl::IsInstalled(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAppInfo: GetAppInfo::<Identity, OFFSET>,
            GetPossibleActions: GetPossibleActions::<Identity, OFFSET>,
            GetSlowAppInfo: GetSlowAppInfo::<Identity, OFFSET>,
            GetCachedSlowAppInfo: GetCachedSlowAppInfo::<Identity, OFFSET>,
            IsInstalled: IsInstalled::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellApp as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellApp {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IShellBrowser, IShellBrowser_Vtbl, 0x000214e2_0000_0000_c000_000000000046);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IShellBrowser {
    type Target = super::super::System::Ole::IOleWindow;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IShellBrowser, windows_core::IUnknown, super::super::System::Ole::IOleWindow);
#[cfg(feature = "Win32_System_Ole")]
impl IShellBrowser {
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn InsertMenusSB(&self, hmenushared: super::WindowsAndMessaging::HMENU, lpmenuwidths: *mut super::super::System::Ole::OLEMENUGROUPWIDTHS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InsertMenusSB)(windows_core::Interface::as_raw(self), hmenushared, lpmenuwidths as _).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn SetMenuSB(&self, hmenushared: super::WindowsAndMessaging::HMENU, holemenures: isize, hwndactiveobject: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetMenuSB)(windows_core::Interface::as_raw(self), hmenushared, holemenures, hwndactiveobject).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn RemoveMenusSB(&self, hmenushared: super::WindowsAndMessaging::HMENU) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveMenusSB)(windows_core::Interface::as_raw(self), hmenushared).ok() }
    }
    pub unsafe fn SetStatusTextSB<P0>(&self, pszstatustext: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetStatusTextSB)(windows_core::Interface::as_raw(self), pszstatustext.param().abi()).ok() }
    }
    pub unsafe fn EnableModelessSB(&self, fenable: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EnableModelessSB)(windows_core::Interface::as_raw(self), fenable.into()).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn TranslateAcceleratorSB(&self, pmsg: *const super::WindowsAndMessaging::MSG, wid: u16) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TranslateAcceleratorSB)(windows_core::Interface::as_raw(self), pmsg, wid).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn BrowseObject(&self, pidl: *const Common::ITEMIDLIST, wflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).BrowseObject)(windows_core::Interface::as_raw(self), pidl, wflags).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetViewStateStream(&self, grfmode: u32) -> windows_core::Result<super::super::System::Com::IStream> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetViewStateStream)(windows_core::Interface::as_raw(self), grfmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetControlWindow(&self, id: u32) -> windows_core::Result<super::super::Foundation::HWND> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetControlWindow)(windows_core::Interface::as_raw(self), id, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SendControlMsg(&self, id: u32, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, pret: Option<*mut super::super::Foundation::LRESULT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SendControlMsg)(windows_core::Interface::as_raw(self), id, umsg, wparam, lparam, pret.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn QueryActiveShellView(&self) -> windows_core::Result<IShellView> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).QueryActiveShellView)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn OnViewWindowActive<P0>(&self, pshv: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellView>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnViewWindowActive)(windows_core::Interface::as_raw(self), pshv.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn SetToolbarItems(&self, lpbuttons: Option<&[super::Controls::TBBUTTON]>, uflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetToolbarItems)(windows_core::Interface::as_raw(self), core::mem::transmute(lpbuttons.as_deref().map_or(core::ptr::null(), |slice| slice.as_ptr())), lpbuttons.as_deref().map_or(0, |slice| slice.len().try_into().unwrap()), uflags).ok() }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellBrowser_Vtbl {
    pub base__: super::super::System::Ole::IOleWindow_Vtbl,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub InsertMenusSB: unsafe extern "system" fn(*mut core::ffi::c_void, super::WindowsAndMessaging::HMENU, *mut super::super::System::Ole::OLEMENUGROUPWIDTHS) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    InsertMenusSB: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub SetMenuSB: unsafe extern "system" fn(*mut core::ffi::c_void, super::WindowsAndMessaging::HMENU, isize, super::super::Foundation::HWND) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    SetMenuSB: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub RemoveMenusSB: unsafe extern "system" fn(*mut core::ffi::c_void, super::WindowsAndMessaging::HMENU) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    RemoveMenusSB: usize,
    pub SetStatusTextSB: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub EnableModelessSB: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub TranslateAcceleratorSB: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::MSG, u16) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    TranslateAcceleratorSB: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub BrowseObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    BrowseObject: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetViewStateStream: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetViewStateStream: usize,
    pub GetControlWindow: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub SendControlMsg: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM, *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT,
    pub QueryActiveShellView: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OnViewWindowActive: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Controls")]
    pub SetToolbarItems: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::Controls::TBBUTTON, u32, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    SetToolbarItems: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellBrowser_Impl: super::super::System::Ole::IOleWindow_Impl {
    fn InsertMenusSB(&self, hmenushared: super::WindowsAndMessaging::HMENU, lpmenuwidths: *mut super::super::System::Ole::OLEMENUGROUPWIDTHS) -> windows_core::Result<()>;
    fn SetMenuSB(&self, hmenushared: super::WindowsAndMessaging::HMENU, holemenures: isize, hwndactiveobject: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn RemoveMenusSB(&self, hmenushared: super::WindowsAndMessaging::HMENU) -> windows_core::Result<()>;
    fn SetStatusTextSB(&self, pszstatustext: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn EnableModelessSB(&self, fenable: windows_core::BOOL) -> windows_core::Result<()>;
    fn TranslateAcceleratorSB(&self, pmsg: *const super::WindowsAndMessaging::MSG, wid: u16) -> windows_core::Result<()>;
    fn BrowseObject(&self, pidl: *const Common::ITEMIDLIST, wflags: u32) -> windows_core::Result<()>;
    fn GetViewStateStream(&self, grfmode: u32) -> windows_core::Result<super::super::System::Com::IStream>;
    fn GetControlWindow(&self, id: u32) -> windows_core::Result<super::super::Foundation::HWND>;
    fn SendControlMsg(&self, id: u32, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, pret: *mut super::super::Foundation::LRESULT) -> windows_core::Result<()>;
    fn QueryActiveShellView(&self) -> windows_core::Result<IShellView>;
    fn OnViewWindowActive(&self, pshv: windows_core::Ref<IShellView>) -> windows_core::Result<()>;
    fn SetToolbarItems(&self, lpbuttons: *const super::Controls::TBBUTTON, nbuttons: u32, uflags: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellBrowser_Vtbl {
    pub const fn new<Identity: IShellBrowser_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn InsertMenusSB<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmenushared: super::WindowsAndMessaging::HMENU, lpmenuwidths: *mut super::super::System::Ole::OLEMENUGROUPWIDTHS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellBrowser_Impl::InsertMenusSB(this, core::mem::transmute_copy(&hmenushared), core::mem::transmute_copy(&lpmenuwidths)).into()
            }
        }
        unsafe extern "system" fn SetMenuSB<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmenushared: super::WindowsAndMessaging::HMENU, holemenures: isize, hwndactiveobject: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellBrowser_Impl::SetMenuSB(this, core::mem::transmute_copy(&hmenushared), core::mem::transmute_copy(&holemenures), core::mem::transmute_copy(&hwndactiveobject)).into()
            }
        }
        unsafe extern "system" fn RemoveMenusSB<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmenushared: super::WindowsAndMessaging::HMENU) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellBrowser_Impl::RemoveMenusSB(this, core::mem::transmute_copy(&hmenushared)).into()
            }
        }
        unsafe extern "system" fn SetStatusTextSB<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszstatustext: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellBrowser_Impl::SetStatusTextSB(this, core::mem::transmute(&pszstatustext)).into()
            }
        }
        unsafe extern "system" fn EnableModelessSB<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellBrowser_Impl::EnableModelessSB(this, core::mem::transmute_copy(&fenable)).into()
            }
        }
        unsafe extern "system" fn TranslateAcceleratorSB<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG, wid: u16) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellBrowser_Impl::TranslateAcceleratorSB(this, core::mem::transmute_copy(&pmsg), core::mem::transmute_copy(&wid)).into()
            }
        }
        unsafe extern "system" fn BrowseObject<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, wflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellBrowser_Impl::BrowseObject(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&wflags)).into()
            }
        }
        unsafe extern "system" fn GetViewStateStream<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, grfmode: u32, ppstrm: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellBrowser_Impl::GetViewStateStream(this, core::mem::transmute_copy(&grfmode)) {
                    Ok(ok__) => {
                        ppstrm.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetControlWindow<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellBrowser_Impl::GetControlWindow(this, core::mem::transmute_copy(&id)) {
                    Ok(ok__) => {
                        phwnd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SendControlMsg<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, id: u32, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, pret: *mut super::super::Foundation::LRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellBrowser_Impl::SendControlMsg(this, core::mem::transmute_copy(&id), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam), core::mem::transmute_copy(&pret)).into()
            }
        }
        unsafe extern "system" fn QueryActiveShellView<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellBrowser_Impl::QueryActiveShellView(this) {
                    Ok(ok__) => {
                        ppshv.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OnViewWindowActive<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pshv: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellBrowser_Impl::OnViewWindowActive(this, core::mem::transmute_copy(&pshv)).into()
            }
        }
        unsafe extern "system" fn SetToolbarItems<Identity: IShellBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpbuttons: *const super::Controls::TBBUTTON, nbuttons: u32, uflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellBrowser_Impl::SetToolbarItems(this, core::mem::transmute_copy(&lpbuttons), core::mem::transmute_copy(&nbuttons), core::mem::transmute_copy(&uflags)).into()
            }
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            InsertMenusSB: InsertMenusSB::<Identity, OFFSET>,
            SetMenuSB: SetMenuSB::<Identity, OFFSET>,
            RemoveMenusSB: RemoveMenusSB::<Identity, OFFSET>,
            SetStatusTextSB: SetStatusTextSB::<Identity, OFFSET>,
            EnableModelessSB: EnableModelessSB::<Identity, OFFSET>,
            TranslateAcceleratorSB: TranslateAcceleratorSB::<Identity, OFFSET>,
            BrowseObject: BrowseObject::<Identity, OFFSET>,
            GetViewStateStream: GetViewStateStream::<Identity, OFFSET>,
            GetControlWindow: GetControlWindow::<Identity, OFFSET>,
            SendControlMsg: SendControlMsg::<Identity, OFFSET>,
            QueryActiveShellView: QueryActiveShellView::<Identity, OFFSET>,
            OnViewWindowActive: OnViewWindowActive::<Identity, OFFSET>,
            SetToolbarItems: SetToolbarItems::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellBrowser as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellBrowser {}
windows_core::imp::define_interface!(IShellChangeNotify, IShellChangeNotify_Vtbl, 0xd82be2b1_5764_11d0_a96e_00c04fd705a2);
windows_core::imp::interface_hierarchy!(IShellChangeNotify, windows_core::IUnknown);
impl IShellChangeNotify {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn OnChange(&self, levent: i32, pidl1: Option<*const Common::ITEMIDLIST>, pidl2: Option<*const Common::ITEMIDLIST>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnChange)(windows_core::Interface::as_raw(self), levent, pidl1.unwrap_or(core::mem::zeroed()) as _, pidl2.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellChangeNotify_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub OnChange: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *const Common::ITEMIDLIST, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    OnChange: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IShellChangeNotify_Impl: windows_core::IUnknownImpl {
    fn OnChange(&self, levent: i32, pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IShellChangeNotify_Vtbl {
    pub const fn new<Identity: IShellChangeNotify_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnChange<Identity: IShellChangeNotify_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, levent: i32, pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellChangeNotify_Impl::OnChange(this, core::mem::transmute_copy(&levent), core::mem::transmute_copy(&pidl1), core::mem::transmute_copy(&pidl2)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnChange: OnChange::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellChangeNotify as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IShellChangeNotify {}
windows_core::imp::define_interface!(IShellDetails, IShellDetails_Vtbl, 0x000214ec_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IShellDetails, windows_core::IUnknown);
impl IShellDetails {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetDetailsOf(&self, pidl: Option<*const Common::ITEMIDLIST>, icolumn: u32, pdetails: *mut Common::SHELLDETAILS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDetailsOf)(windows_core::Interface::as_raw(self), pidl.unwrap_or(core::mem::zeroed()) as _, icolumn, pdetails as _).ok() }
    }
    pub unsafe fn ColumnClick(&self, icolumn: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ColumnClick)(windows_core::Interface::as_raw(self), icolumn).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellDetails_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetDetailsOf: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, u32, *mut Common::SHELLDETAILS) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetDetailsOf: usize,
    pub ColumnClick: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IShellDetails_Impl: windows_core::IUnknownImpl {
    fn GetDetailsOf(&self, pidl: *const Common::ITEMIDLIST, icolumn: u32, pdetails: *mut Common::SHELLDETAILS) -> windows_core::Result<()>;
    fn ColumnClick(&self, icolumn: u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IShellDetails_Vtbl {
    pub const fn new<Identity: IShellDetails_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDetailsOf<Identity: IShellDetails_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, icolumn: u32, pdetails: *mut Common::SHELLDETAILS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDetails_Impl::GetDetailsOf(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&icolumn), core::mem::transmute_copy(&pdetails)).into()
            }
        }
        unsafe extern "system" fn ColumnClick<Identity: IShellDetails_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, icolumn: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDetails_Impl::ColumnClick(this, core::mem::transmute_copy(&icolumn)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetDetailsOf: GetDetailsOf::<Identity, OFFSET>,
            ColumnClick: ColumnClick::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDetails as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IShellDetails {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellDispatch, IShellDispatch_Vtbl, 0xd8f015c0_c278_11ce_a49e_444553540000);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellDispatch {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellDispatch, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch {
    pub unsafe fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Application)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Parent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn NameSpace(&self, vdir: &super::super::System::Variant::VARIANT) -> windows_core::Result<Folder> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).NameSpace)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(vdir), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn BrowseForFolder(&self, hwnd: i32, title: &windows_core::BSTR, options: i32, rootfolder: &super::super::System::Variant::VARIANT) -> windows_core::Result<Folder> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).BrowseForFolder)(windows_core::Interface::as_raw(self), hwnd, core::mem::transmute_copy(title), options, core::mem::transmute_copy(rootfolder), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Windows(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Windows)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Open(&self, vdir: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Open)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(vdir)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Explore(&self, vdir: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Explore)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(vdir)).ok() }
    }
    pub unsafe fn MinimizeAll(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MinimizeAll)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn UndoMinimizeALL(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UndoMinimizeALL)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn FileRun(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FileRun)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn CascadeWindows(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CascadeWindows)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn TileVertically(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TileVertically)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn TileHorizontally(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TileHorizontally)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ShutdownWindows(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShutdownWindows)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Suspend(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Suspend)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn EjectPC(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EjectPC)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetTime(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTime)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn TrayProperties(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).TrayProperties)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Help(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Help)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn FindFiles(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FindFiles)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn FindComputer(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FindComputer)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn RefreshMenu(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RefreshMenu)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ControlPanelItem(&self, bstrdir: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ControlPanelItem)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrdir)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellDispatch_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub Application: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Parent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub NameSpace: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    NameSpace: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub BrowseForFolder: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut core::ffi::c_void, i32, super::super::System::Variant::VARIANT, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    BrowseForFolder: usize,
    pub Windows: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Open: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Open: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Explore: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Explore: usize,
    pub MinimizeAll: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UndoMinimizeALL: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FileRun: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CascadeWindows: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TileVertically: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TileHorizontally: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ShutdownWindows: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Suspend: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EjectPC: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetTime: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TrayProperties: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Help: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FindFiles: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FindComputer: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RefreshMenu: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ControlPanelItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellDispatch_Impl: super::super::System::Com::IDispatch_Impl {
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn NameSpace(&self, vdir: &super::super::System::Variant::VARIANT) -> windows_core::Result<Folder>;
    fn BrowseForFolder(&self, hwnd: i32, title: &windows_core::BSTR, options: i32, rootfolder: &super::super::System::Variant::VARIANT) -> windows_core::Result<Folder>;
    fn Windows(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Open(&self, vdir: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn Explore(&self, vdir: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn MinimizeAll(&self) -> windows_core::Result<()>;
    fn UndoMinimizeALL(&self) -> windows_core::Result<()>;
    fn FileRun(&self) -> windows_core::Result<()>;
    fn CascadeWindows(&self) -> windows_core::Result<()>;
    fn TileVertically(&self) -> windows_core::Result<()>;
    fn TileHorizontally(&self) -> windows_core::Result<()>;
    fn ShutdownWindows(&self) -> windows_core::Result<()>;
    fn Suspend(&self) -> windows_core::Result<()>;
    fn EjectPC(&self) -> windows_core::Result<()>;
    fn SetTime(&self) -> windows_core::Result<()>;
    fn TrayProperties(&self) -> windows_core::Result<()>;
    fn Help(&self) -> windows_core::Result<()>;
    fn FindFiles(&self) -> windows_core::Result<()>;
    fn FindComputer(&self) -> windows_core::Result<()>;
    fn RefreshMenu(&self) -> windows_core::Result<()>;
    fn ControlPanelItem(&self, bstrdir: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellDispatch_Vtbl {
    pub const fn new<Identity: IShellDispatch_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Application<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch_Impl::Application(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Parent<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch_Impl::Parent(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn NameSpace<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vdir: super::super::System::Variant::VARIANT, ppsdf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch_Impl::NameSpace(this, core::mem::transmute(&vdir)) {
                    Ok(ok__) => {
                        ppsdf.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn BrowseForFolder<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: i32, title: *mut core::ffi::c_void, options: i32, rootfolder: super::super::System::Variant::VARIANT, ppsdf: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch_Impl::BrowseForFolder(this, core::mem::transmute_copy(&hwnd), core::mem::transmute(&title), core::mem::transmute_copy(&options), core::mem::transmute(&rootfolder)) {
                    Ok(ok__) => {
                        ppsdf.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Windows<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch_Impl::Windows(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Open<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vdir: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::Open(this, core::mem::transmute(&vdir)).into()
            }
        }
        unsafe extern "system" fn Explore<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vdir: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::Explore(this, core::mem::transmute(&vdir)).into()
            }
        }
        unsafe extern "system" fn MinimizeAll<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::MinimizeAll(this).into()
            }
        }
        unsafe extern "system" fn UndoMinimizeALL<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::UndoMinimizeALL(this).into()
            }
        }
        unsafe extern "system" fn FileRun<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::FileRun(this).into()
            }
        }
        unsafe extern "system" fn CascadeWindows<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::CascadeWindows(this).into()
            }
        }
        unsafe extern "system" fn TileVertically<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::TileVertically(this).into()
            }
        }
        unsafe extern "system" fn TileHorizontally<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::TileHorizontally(this).into()
            }
        }
        unsafe extern "system" fn ShutdownWindows<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::ShutdownWindows(this).into()
            }
        }
        unsafe extern "system" fn Suspend<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::Suspend(this).into()
            }
        }
        unsafe extern "system" fn EjectPC<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::EjectPC(this).into()
            }
        }
        unsafe extern "system" fn SetTime<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::SetTime(this).into()
            }
        }
        unsafe extern "system" fn TrayProperties<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::TrayProperties(this).into()
            }
        }
        unsafe extern "system" fn Help<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::Help(this).into()
            }
        }
        unsafe extern "system" fn FindFiles<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::FindFiles(this).into()
            }
        }
        unsafe extern "system" fn FindComputer<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::FindComputer(this).into()
            }
        }
        unsafe extern "system" fn RefreshMenu<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::RefreshMenu(this).into()
            }
        }
        unsafe extern "system" fn ControlPanelItem<Identity: IShellDispatch_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrdir: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch_Impl::ControlPanelItem(this, core::mem::transmute(&bstrdir)).into()
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            NameSpace: NameSpace::<Identity, OFFSET>,
            BrowseForFolder: BrowseForFolder::<Identity, OFFSET>,
            Windows: Windows::<Identity, OFFSET>,
            Open: Open::<Identity, OFFSET>,
            Explore: Explore::<Identity, OFFSET>,
            MinimizeAll: MinimizeAll::<Identity, OFFSET>,
            UndoMinimizeALL: UndoMinimizeALL::<Identity, OFFSET>,
            FileRun: FileRun::<Identity, OFFSET>,
            CascadeWindows: CascadeWindows::<Identity, OFFSET>,
            TileVertically: TileVertically::<Identity, OFFSET>,
            TileHorizontally: TileHorizontally::<Identity, OFFSET>,
            ShutdownWindows: ShutdownWindows::<Identity, OFFSET>,
            Suspend: Suspend::<Identity, OFFSET>,
            EjectPC: EjectPC::<Identity, OFFSET>,
            SetTime: SetTime::<Identity, OFFSET>,
            TrayProperties: TrayProperties::<Identity, OFFSET>,
            Help: Help::<Identity, OFFSET>,
            FindFiles: FindFiles::<Identity, OFFSET>,
            FindComputer: FindComputer::<Identity, OFFSET>,
            RefreshMenu: RefreshMenu::<Identity, OFFSET>,
            ControlPanelItem: ControlPanelItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellDispatch {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellDispatch2, IShellDispatch2_Vtbl, 0xa4c6892c_3ba9_11d2_9dea_00c04fb16162);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellDispatch2 {
    type Target = IShellDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellDispatch2, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch2 {
    pub unsafe fn IsRestricted(&self, group: &windows_core::BSTR, restriction: &windows_core::BSTR) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsRestricted)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(group), core::mem::transmute_copy(restriction), &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn ShellExecute(&self, file: &windows_core::BSTR, vargs: &super::super::System::Variant::VARIANT, vdir: &super::super::System::Variant::VARIANT, voperation: &super::super::System::Variant::VARIANT, vshow: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShellExecute)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(file), core::mem::transmute_copy(vargs), core::mem::transmute_copy(vdir), core::mem::transmute_copy(voperation), core::mem::transmute_copy(vshow)).ok() }
    }
    pub unsafe fn FindPrinter(&self, name: &windows_core::BSTR, location: &windows_core::BSTR, model: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FindPrinter)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(name), core::mem::transmute_copy(location), core::mem::transmute_copy(model)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn GetSystemInformation(&self, name: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSystemInformation)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(name), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn ServiceStart(&self, servicename: &windows_core::BSTR, persistent: &super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ServiceStart)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(servicename), core::mem::transmute_copy(persistent), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn ServiceStop(&self, servicename: &windows_core::BSTR, persistent: &super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ServiceStop)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(servicename), core::mem::transmute_copy(persistent), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn IsServiceRunning(&self, servicename: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsServiceRunning)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(servicename), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn CanStartStopService(&self, servicename: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CanStartStopService)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(servicename), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn ShowBrowserBar(&self, bstrclsid: &windows_core::BSTR, bshow: &super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ShowBrowserBar)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrclsid), core::mem::transmute_copy(bshow), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellDispatch2_Vtbl {
    pub base__: IShellDispatch_Vtbl,
    pub IsRestricted: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub ShellExecute: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    ShellExecute: usize,
    pub FindPrinter: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub GetSystemInformation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    GetSystemInformation: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub ServiceStart: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::System::Variant::VARIANT, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    ServiceStart: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub ServiceStop: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::System::Variant::VARIANT, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    ServiceStop: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub IsServiceRunning: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    IsServiceRunning: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub CanStartStopService: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    CanStartStopService: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub ShowBrowserBar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::System::Variant::VARIANT, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    ShowBrowserBar: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellDispatch2_Impl: IShellDispatch_Impl {
    fn IsRestricted(&self, group: &windows_core::BSTR, restriction: &windows_core::BSTR) -> windows_core::Result<i32>;
    fn ShellExecute(&self, file: &windows_core::BSTR, vargs: &super::super::System::Variant::VARIANT, vdir: &super::super::System::Variant::VARIANT, voperation: &super::super::System::Variant::VARIANT, vshow: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn FindPrinter(&self, name: &windows_core::BSTR, location: &windows_core::BSTR, model: &windows_core::BSTR) -> windows_core::Result<()>;
    fn GetSystemInformation(&self, name: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn ServiceStart(&self, servicename: &windows_core::BSTR, persistent: &super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn ServiceStop(&self, servicename: &windows_core::BSTR, persistent: &super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn IsServiceRunning(&self, servicename: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn CanStartStopService(&self, servicename: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn ShowBrowserBar(&self, bstrclsid: &windows_core::BSTR, bshow: &super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellDispatch2_Vtbl {
    pub const fn new<Identity: IShellDispatch2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn IsRestricted<Identity: IShellDispatch2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, group: *mut core::ffi::c_void, restriction: *mut core::ffi::c_void, plrestrictvalue: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch2_Impl::IsRestricted(this, core::mem::transmute(&group), core::mem::transmute(&restriction)) {
                    Ok(ok__) => {
                        plrestrictvalue.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ShellExecute<Identity: IShellDispatch2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, file: *mut core::ffi::c_void, vargs: super::super::System::Variant::VARIANT, vdir: super::super::System::Variant::VARIANT, voperation: super::super::System::Variant::VARIANT, vshow: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch2_Impl::ShellExecute(this, core::mem::transmute(&file), core::mem::transmute(&vargs), core::mem::transmute(&vdir), core::mem::transmute(&voperation), core::mem::transmute(&vshow)).into()
            }
        }
        unsafe extern "system" fn FindPrinter<Identity: IShellDispatch2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: *mut core::ffi::c_void, location: *mut core::ffi::c_void, model: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch2_Impl::FindPrinter(this, core::mem::transmute(&name), core::mem::transmute(&location), core::mem::transmute(&model)).into()
            }
        }
        unsafe extern "system" fn GetSystemInformation<Identity: IShellDispatch2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: *mut core::ffi::c_void, pv: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch2_Impl::GetSystemInformation(this, core::mem::transmute(&name)) {
                    Ok(ok__) => {
                        pv.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ServiceStart<Identity: IShellDispatch2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, servicename: *mut core::ffi::c_void, persistent: super::super::System::Variant::VARIANT, psuccess: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch2_Impl::ServiceStart(this, core::mem::transmute(&servicename), core::mem::transmute(&persistent)) {
                    Ok(ok__) => {
                        psuccess.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ServiceStop<Identity: IShellDispatch2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, servicename: *mut core::ffi::c_void, persistent: super::super::System::Variant::VARIANT, psuccess: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch2_Impl::ServiceStop(this, core::mem::transmute(&servicename), core::mem::transmute(&persistent)) {
                    Ok(ok__) => {
                        psuccess.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsServiceRunning<Identity: IShellDispatch2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, servicename: *mut core::ffi::c_void, prunning: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch2_Impl::IsServiceRunning(this, core::mem::transmute(&servicename)) {
                    Ok(ok__) => {
                        prunning.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CanStartStopService<Identity: IShellDispatch2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, servicename: *mut core::ffi::c_void, pcanstartstop: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch2_Impl::CanStartStopService(this, core::mem::transmute(&servicename)) {
                    Ok(ok__) => {
                        pcanstartstop.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ShowBrowserBar<Identity: IShellDispatch2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrclsid: *mut core::ffi::c_void, bshow: super::super::System::Variant::VARIANT, psuccess: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch2_Impl::ShowBrowserBar(this, core::mem::transmute(&bstrclsid), core::mem::transmute(&bshow)) {
                    Ok(ok__) => {
                        psuccess.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IShellDispatch_Vtbl::new::<Identity, OFFSET>(),
            IsRestricted: IsRestricted::<Identity, OFFSET>,
            ShellExecute: ShellExecute::<Identity, OFFSET>,
            FindPrinter: FindPrinter::<Identity, OFFSET>,
            GetSystemInformation: GetSystemInformation::<Identity, OFFSET>,
            ServiceStart: ServiceStart::<Identity, OFFSET>,
            ServiceStop: ServiceStop::<Identity, OFFSET>,
            IsServiceRunning: IsServiceRunning::<Identity, OFFSET>,
            CanStartStopService: CanStartStopService::<Identity, OFFSET>,
            ShowBrowserBar: ShowBrowserBar::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellDispatch2 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellDispatch3, IShellDispatch3_Vtbl, 0x177160ca_bb5a_411c_841d_bd38facdeaa0);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellDispatch3 {
    type Target = IShellDispatch2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellDispatch3, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellDispatch, IShellDispatch2);
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch3 {
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn AddToRecent(&self, varfile: &super::super::System::Variant::VARIANT, bstrcategory: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddToRecent)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(varfile), core::mem::transmute_copy(bstrcategory)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellDispatch3_Vtbl {
    pub base__: IShellDispatch2_Vtbl,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub AddToRecent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    AddToRecent: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellDispatch3_Impl: IShellDispatch2_Impl {
    fn AddToRecent(&self, varfile: &super::super::System::Variant::VARIANT, bstrcategory: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellDispatch3_Vtbl {
    pub const fn new<Identity: IShellDispatch3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddToRecent<Identity: IShellDispatch3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, varfile: super::super::System::Variant::VARIANT, bstrcategory: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch3_Impl::AddToRecent(this, core::mem::transmute(&varfile), core::mem::transmute(&bstrcategory)).into()
            }
        }
        Self { base__: IShellDispatch2_Vtbl::new::<Identity, OFFSET>(), AddToRecent: AddToRecent::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellDispatch3 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellDispatch4, IShellDispatch4_Vtbl, 0xefd84b2d_4bcf_4298_be25_eb542a59fbda);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellDispatch4 {
    type Target = IShellDispatch3;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellDispatch4, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellDispatch, IShellDispatch2, IShellDispatch3);
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch4 {
    pub unsafe fn WindowsSecurity(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WindowsSecurity)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ToggleDesktop(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ToggleDesktop)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn ExplorerPolicy(&self, bstrpolicyname: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ExplorerPolicy)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrpolicyname), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetSetting(&self, lsetting: i32) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSetting)(windows_core::Interface::as_raw(self), lsetting, &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellDispatch4_Vtbl {
    pub base__: IShellDispatch3_Vtbl,
    pub WindowsSecurity: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ToggleDesktop: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub ExplorerPolicy: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    ExplorerPolicy: usize,
    pub GetSetting: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellDispatch4_Impl: IShellDispatch3_Impl {
    fn WindowsSecurity(&self) -> windows_core::Result<()>;
    fn ToggleDesktop(&self) -> windows_core::Result<()>;
    fn ExplorerPolicy(&self, bstrpolicyname: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn GetSetting(&self, lsetting: i32) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellDispatch4_Vtbl {
    pub const fn new<Identity: IShellDispatch4_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn WindowsSecurity<Identity: IShellDispatch4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch4_Impl::WindowsSecurity(this).into()
            }
        }
        unsafe extern "system" fn ToggleDesktop<Identity: IShellDispatch4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch4_Impl::ToggleDesktop(this).into()
            }
        }
        unsafe extern "system" fn ExplorerPolicy<Identity: IShellDispatch4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrpolicyname: *mut core::ffi::c_void, pvalue: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch4_Impl::ExplorerPolicy(this, core::mem::transmute(&bstrpolicyname)) {
                    Ok(ok__) => {
                        pvalue.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSetting<Identity: IShellDispatch4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lsetting: i32, presult: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellDispatch4_Impl::GetSetting(this, core::mem::transmute_copy(&lsetting)) {
                    Ok(ok__) => {
                        presult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IShellDispatch3_Vtbl::new::<Identity, OFFSET>(),
            WindowsSecurity: WindowsSecurity::<Identity, OFFSET>,
            ToggleDesktop: ToggleDesktop::<Identity, OFFSET>,
            ExplorerPolicy: ExplorerPolicy::<Identity, OFFSET>,
            GetSetting: GetSetting::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch4 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch2 as windows_core::Interface>::IID || iid == &<IShellDispatch3 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellDispatch4 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellDispatch5, IShellDispatch5_Vtbl, 0x866738b9_6cf2_4de8_8767_f794ebe74f4e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellDispatch5 {
    type Target = IShellDispatch4;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellDispatch5, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellDispatch, IShellDispatch2, IShellDispatch3, IShellDispatch4);
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch5 {
    pub unsafe fn WindowSwitcher(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WindowSwitcher)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellDispatch5_Vtbl {
    pub base__: IShellDispatch4_Vtbl,
    pub WindowSwitcher: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellDispatch5_Impl: IShellDispatch4_Impl {
    fn WindowSwitcher(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellDispatch5_Vtbl {
    pub const fn new<Identity: IShellDispatch5_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn WindowSwitcher<Identity: IShellDispatch5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch5_Impl::WindowSwitcher(this).into()
            }
        }
        Self { base__: IShellDispatch4_Vtbl::new::<Identity, OFFSET>(), WindowSwitcher: WindowSwitcher::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch5 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch2 as windows_core::Interface>::IID || iid == &<IShellDispatch3 as windows_core::Interface>::IID || iid == &<IShellDispatch4 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellDispatch5 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellDispatch6, IShellDispatch6_Vtbl, 0x286e6f1b_7113_4355_9562_96b7e9d64c54);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellDispatch6 {
    type Target = IShellDispatch5;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellDispatch6, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellDispatch, IShellDispatch2, IShellDispatch3, IShellDispatch4, IShellDispatch5);
#[cfg(feature = "Win32_System_Com")]
impl IShellDispatch6 {
    pub unsafe fn SearchCommand(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SearchCommand)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellDispatch6_Vtbl {
    pub base__: IShellDispatch5_Vtbl,
    pub SearchCommand: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellDispatch6_Impl: IShellDispatch5_Impl {
    fn SearchCommand(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellDispatch6_Vtbl {
    pub const fn new<Identity: IShellDispatch6_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SearchCommand<Identity: IShellDispatch6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellDispatch6_Impl::SearchCommand(this).into()
            }
        }
        Self { base__: IShellDispatch5_Vtbl::new::<Identity, OFFSET>(), SearchCommand: SearchCommand::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellDispatch6 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch as windows_core::Interface>::IID || iid == &<IShellDispatch2 as windows_core::Interface>::IID || iid == &<IShellDispatch3 as windows_core::Interface>::IID || iid == &<IShellDispatch4 as windows_core::Interface>::IID || iid == &<IShellDispatch5 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellDispatch6 {}
windows_core::imp::define_interface!(IShellExtInit, IShellExtInit_Vtbl, 0x000214e8_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IShellExtInit, windows_core::IUnknown);
impl IShellExtInit {
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn Initialize<P1>(&self, pidlfolder: Option<*const Common::ITEMIDLIST>, pdtobj: P1, hkeyprogid: Option<super::super::System::Registry::HKEY>) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), pidlfolder.unwrap_or(core::mem::zeroed()) as _, pdtobj.param().abi(), hkeyprogid.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellExtInit_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut core::ffi::c_void, super::super::System::Registry::HKEY) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common")))]
    Initialize: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
pub trait IShellExtInit_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, pidlfolder: *const Common::ITEMIDLIST, pdtobj: windows_core::Ref<super::super::System::Com::IDataObject>, hkeyprogid: super::super::System::Registry::HKEY) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
impl IShellExtInit_Vtbl {
    pub const fn new<Identity: IShellExtInit_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IShellExtInit_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, pdtobj: *mut core::ffi::c_void, hkeyprogid: super::super::System::Registry::HKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellExtInit_Impl::Initialize(this, core::mem::transmute_copy(&pidlfolder), core::mem::transmute_copy(&pdtobj), core::mem::transmute_copy(&hkeyprogid)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Initialize: Initialize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellExtInit as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IShellExtInit {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellFavoritesNameSpace, IShellFavoritesNameSpace_Vtbl, 0x55136804_b2de_11d1_b9f2_00a0c98bc547);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellFavoritesNameSpace {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellFavoritesNameSpace, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IShellFavoritesNameSpace {
    pub unsafe fn MoveSelectionUp(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MoveSelectionUp)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn MoveSelectionDown(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MoveSelectionDown)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ResetSort(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetSort)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn NewFolder(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).NewFolder)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Synchronize(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Synchronize)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Import(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Import)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Export(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Export)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn InvokeContextMenuCommand(&self, strcommand: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InvokeContextMenuCommand)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(strcommand)).ok() }
    }
    pub unsafe fn MoveSelectionTo(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MoveSelectionTo)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SubscriptionsEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SubscriptionsEnabled)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CreateSubscriptionForSelection(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSubscriptionForSelection)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DeleteSubscriptionForSelection(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).DeleteSubscriptionForSelection)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRoot(&self, bstrfullpath: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRoot)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrfullpath)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellFavoritesNameSpace_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub MoveSelectionUp: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub MoveSelectionDown: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ResetSort: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub NewFolder: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Synchronize: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Import: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Export: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub InvokeContextMenuCommand: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub MoveSelectionTo: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SubscriptionsEnabled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub CreateSubscriptionForSelection: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub DeleteSubscriptionForSelection: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetRoot: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellFavoritesNameSpace_Impl: super::super::System::Com::IDispatch_Impl {
    fn MoveSelectionUp(&self) -> windows_core::Result<()>;
    fn MoveSelectionDown(&self) -> windows_core::Result<()>;
    fn ResetSort(&self) -> windows_core::Result<()>;
    fn NewFolder(&self) -> windows_core::Result<()>;
    fn Synchronize(&self) -> windows_core::Result<()>;
    fn Import(&self) -> windows_core::Result<()>;
    fn Export(&self) -> windows_core::Result<()>;
    fn InvokeContextMenuCommand(&self, strcommand: &windows_core::BSTR) -> windows_core::Result<()>;
    fn MoveSelectionTo(&self) -> windows_core::Result<()>;
    fn SubscriptionsEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn CreateSubscriptionForSelection(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn DeleteSubscriptionForSelection(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetRoot(&self, bstrfullpath: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellFavoritesNameSpace_Vtbl {
    pub const fn new<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn MoveSelectionUp<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFavoritesNameSpace_Impl::MoveSelectionUp(this).into()
            }
        }
        unsafe extern "system" fn MoveSelectionDown<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFavoritesNameSpace_Impl::MoveSelectionDown(this).into()
            }
        }
        unsafe extern "system" fn ResetSort<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFavoritesNameSpace_Impl::ResetSort(this).into()
            }
        }
        unsafe extern "system" fn NewFolder<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFavoritesNameSpace_Impl::NewFolder(this).into()
            }
        }
        unsafe extern "system" fn Synchronize<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFavoritesNameSpace_Impl::Synchronize(this).into()
            }
        }
        unsafe extern "system" fn Import<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFavoritesNameSpace_Impl::Import(this).into()
            }
        }
        unsafe extern "system" fn Export<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFavoritesNameSpace_Impl::Export(this).into()
            }
        }
        unsafe extern "system" fn InvokeContextMenuCommand<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, strcommand: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFavoritesNameSpace_Impl::InvokeContextMenuCommand(this, core::mem::transmute(&strcommand)).into()
            }
        }
        unsafe extern "system" fn MoveSelectionTo<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFavoritesNameSpace_Impl::MoveSelectionTo(this).into()
            }
        }
        unsafe extern "system" fn SubscriptionsEnabled<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFavoritesNameSpace_Impl::SubscriptionsEnabled(this) {
                    Ok(ok__) => {
                        pbool.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateSubscriptionForSelection<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFavoritesNameSpace_Impl::CreateSubscriptionForSelection(this) {
                    Ok(ok__) => {
                        pbool.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DeleteSubscriptionForSelection<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFavoritesNameSpace_Impl::DeleteSubscriptionForSelection(this) {
                    Ok(ok__) => {
                        pbool.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRoot<Identity: IShellFavoritesNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrfullpath: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFavoritesNameSpace_Impl::SetRoot(this, core::mem::transmute(&bstrfullpath)).into()
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            MoveSelectionUp: MoveSelectionUp::<Identity, OFFSET>,
            MoveSelectionDown: MoveSelectionDown::<Identity, OFFSET>,
            ResetSort: ResetSort::<Identity, OFFSET>,
            NewFolder: NewFolder::<Identity, OFFSET>,
            Synchronize: Synchronize::<Identity, OFFSET>,
            Import: Import::<Identity, OFFSET>,
            Export: Export::<Identity, OFFSET>,
            InvokeContextMenuCommand: InvokeContextMenuCommand::<Identity, OFFSET>,
            MoveSelectionTo: MoveSelectionTo::<Identity, OFFSET>,
            SubscriptionsEnabled: SubscriptionsEnabled::<Identity, OFFSET>,
            CreateSubscriptionForSelection: CreateSubscriptionForSelection::<Identity, OFFSET>,
            DeleteSubscriptionForSelection: DeleteSubscriptionForSelection::<Identity, OFFSET>,
            SetRoot: SetRoot::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFavoritesNameSpace as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellFavoritesNameSpace {}
windows_core::imp::define_interface!(IShellFolder, IShellFolder_Vtbl, 0x000214e6_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IShellFolder, windows_core::IUnknown);
impl IShellFolder {
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn ParseDisplayName<P1, P2>(&self, hwnd: super::super::Foundation::HWND, pbc: P1, pszdisplayname: P2, pcheaten: Option<*const u32>, ppidl: *mut *mut Common::ITEMIDLIST, pdwattributes: *mut u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<super::super::System::Com::IBindCtx>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ParseDisplayName)(windows_core::Interface::as_raw(self), hwnd, pbc.param().abi(), pszdisplayname.param().abi(), pcheaten.unwrap_or(core::mem::zeroed()) as _, ppidl as _, pdwattributes as _).ok() }
    }
    pub unsafe fn EnumObjects(&self, hwnd: super::super::Foundation::HWND, grfflags: u32, ppenumidlist: *mut Option<IEnumIDList>) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).EnumObjects)(windows_core::Interface::as_raw(self), hwnd, grfflags, core::mem::transmute(ppenumidlist)) }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn BindToObject<P1, T>(&self, pidl: *const Common::ITEMIDLIST, pbc: P1) -> windows_core::Result<T>
    where
        P1: windows_core::Param<super::super::System::Com::IBindCtx>,
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).BindToObject)(windows_core::Interface::as_raw(self), pidl, pbc.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn BindToStorage<P1, T>(&self, pidl: *const Common::ITEMIDLIST, pbc: P1) -> windows_core::Result<T>
    where
        P1: windows_core::Param<super::super::System::Com::IBindCtx>,
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).BindToStorage)(windows_core::Interface::as_raw(self), pidl, pbc.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn CompareIDs(&self, lparam: super::super::Foundation::LPARAM, pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).CompareIDs)(windows_core::Interface::as_raw(self), lparam, pidl1, pidl2) }
    }
    pub unsafe fn CreateViewObject<T>(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).CreateViewObject)(windows_core::Interface::as_raw(self), hwndowner, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetAttributesOf(&self, apidl: &[*const Common::ITEMIDLIST], rgfinout: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetAttributesOf)(windows_core::Interface::as_raw(self), apidl.len().try_into().unwrap(), core::mem::transmute(apidl.as_ptr()), rgfinout as _).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetUIObjectOf<T>(&self, hwndowner: super::super::Foundation::HWND, apidl: &[*const Common::ITEMIDLIST], rgfreserved: Option<*const u32>) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetUIObjectOf)(windows_core::Interface::as_raw(self), hwndowner, apidl.len().try_into().unwrap(), core::mem::transmute(apidl.as_ptr()), &T::IID, rgfreserved.unwrap_or(core::mem::zeroed()) as _, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetDisplayNameOf(&self, pidl: *const Common::ITEMIDLIST, uflags: SHGDNF, pname: *mut Common::STRRET) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDisplayNameOf)(windows_core::Interface::as_raw(self), pidl, uflags, pname as _).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetNameOf<P2>(&self, hwnd: Option<super::super::Foundation::HWND>, pidl: *const Common::ITEMIDLIST, pszname: P2, uflags: SHGDNF, ppidlout: Option<*mut *mut Common::ITEMIDLIST>) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetNameOf)(windows_core::Interface::as_raw(self), hwnd.unwrap_or(core::mem::zeroed()) as _, pidl, pszname.param().abi(), uflags, ppidlout.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellFolder_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub ParseDisplayName: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void, windows_core::PCWSTR, *const u32, *mut *mut Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common")))]
    ParseDisplayName: usize,
    pub EnumObjects: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub BindToObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common")))]
    BindToObject: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub BindToStorage: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common")))]
    BindToStorage: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub CompareIDs: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::LPARAM, *const Common::ITEMIDLIST, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    CompareIDs: usize,
    pub CreateViewObject: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetAttributesOf: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const *const Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetAttributesOf: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetUIObjectOf: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32, *const *const Common::ITEMIDLIST, *const windows_core::GUID, *const u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetUIObjectOf: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetDisplayNameOf: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, SHGDNF, *mut Common::STRRET) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetDisplayNameOf: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetNameOf: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const Common::ITEMIDLIST, windows_core::PCWSTR, SHGDNF, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetNameOf: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IShellFolder_Impl: windows_core::IUnknownImpl {
    fn ParseDisplayName(&self, hwnd: super::super::Foundation::HWND, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>, pszdisplayname: &windows_core::PCWSTR, pcheaten: *const u32, ppidl: *mut *mut Common::ITEMIDLIST, pdwattributes: *mut u32) -> windows_core::Result<()>;
    fn EnumObjects(&self, hwnd: super::super::Foundation::HWND, grfflags: u32, ppenumidlist: windows_core::OutRef<IEnumIDList>) -> windows_core::HRESULT;
    fn BindToObject(&self, pidl: *const Common::ITEMIDLIST, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn BindToStorage(&self, pidl: *const Common::ITEMIDLIST, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn CompareIDs(&self, lparam: super::super::Foundation::LPARAM, pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST) -> windows_core::HRESULT;
    fn CreateViewObject(&self, hwndowner: super::super::Foundation::HWND, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetAttributesOf(&self, cidl: u32, apidl: *const *const Common::ITEMIDLIST, rgfinout: *mut u32) -> windows_core::Result<()>;
    fn GetUIObjectOf(&self, hwndowner: super::super::Foundation::HWND, cidl: u32, apidl: *const *const Common::ITEMIDLIST, riid: *const windows_core::GUID, rgfreserved: *const u32, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetDisplayNameOf(&self, pidl: *const Common::ITEMIDLIST, uflags: SHGDNF, pname: *mut Common::STRRET) -> windows_core::Result<()>;
    fn SetNameOf(&self, hwnd: super::super::Foundation::HWND, pidl: *const Common::ITEMIDLIST, pszname: &windows_core::PCWSTR, uflags: SHGDNF, ppidlout: *mut *mut Common::ITEMIDLIST) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IShellFolder_Vtbl {
    pub const fn new<Identity: IShellFolder_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ParseDisplayName<Identity: IShellFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pbc: *mut core::ffi::c_void, pszdisplayname: windows_core::PCWSTR, pcheaten: *const u32, ppidl: *mut *mut Common::ITEMIDLIST, pdwattributes: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder_Impl::ParseDisplayName(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&pbc), core::mem::transmute(&pszdisplayname), core::mem::transmute_copy(&pcheaten), core::mem::transmute_copy(&ppidl), core::mem::transmute_copy(&pdwattributes)).into()
            }
        }
        unsafe extern "system" fn EnumObjects<Identity: IShellFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, grfflags: u32, ppenumidlist: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder_Impl::EnumObjects(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&grfflags), core::mem::transmute_copy(&ppenumidlist))
            }
        }
        unsafe extern "system" fn BindToObject<Identity: IShellFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pbc: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder_Impl::BindToObject(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&pbc), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn BindToStorage<Identity: IShellFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pbc: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder_Impl::BindToStorage(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&pbc), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn CompareIDs<Identity: IShellFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lparam: super::super::Foundation::LPARAM, pidl1: *const Common::ITEMIDLIST, pidl2: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder_Impl::CompareIDs(this, core::mem::transmute_copy(&lparam), core::mem::transmute_copy(&pidl1), core::mem::transmute_copy(&pidl2))
            }
        }
        unsafe extern "system" fn CreateViewObject<Identity: IShellFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder_Impl::CreateViewObject(this, core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetAttributesOf<Identity: IShellFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cidl: u32, apidl: *const *const Common::ITEMIDLIST, rgfinout: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder_Impl::GetAttributesOf(this, core::mem::transmute_copy(&cidl), core::mem::transmute_copy(&apidl), core::mem::transmute_copy(&rgfinout)).into()
            }
        }
        unsafe extern "system" fn GetUIObjectOf<Identity: IShellFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND, cidl: u32, apidl: *const *const Common::ITEMIDLIST, riid: *const windows_core::GUID, rgfreserved: *const u32, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder_Impl::GetUIObjectOf(this, core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&cidl), core::mem::transmute_copy(&apidl), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&rgfreserved), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetDisplayNameOf<Identity: IShellFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, uflags: SHGDNF, pname: *mut Common::STRRET) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder_Impl::GetDisplayNameOf(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&uflags), core::mem::transmute_copy(&pname)).into()
            }
        }
        unsafe extern "system" fn SetNameOf<Identity: IShellFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, pidl: *const Common::ITEMIDLIST, pszname: windows_core::PCWSTR, uflags: SHGDNF, ppidlout: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder_Impl::SetNameOf(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&pidl), core::mem::transmute(&pszname), core::mem::transmute_copy(&uflags), core::mem::transmute_copy(&ppidlout)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ParseDisplayName: ParseDisplayName::<Identity, OFFSET>,
            EnumObjects: EnumObjects::<Identity, OFFSET>,
            BindToObject: BindToObject::<Identity, OFFSET>,
            BindToStorage: BindToStorage::<Identity, OFFSET>,
            CompareIDs: CompareIDs::<Identity, OFFSET>,
            CreateViewObject: CreateViewObject::<Identity, OFFSET>,
            GetAttributesOf: GetAttributesOf::<Identity, OFFSET>,
            GetUIObjectOf: GetUIObjectOf::<Identity, OFFSET>,
            GetDisplayNameOf: GetDisplayNameOf::<Identity, OFFSET>,
            SetNameOf: SetNameOf::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolder as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IShellFolder {}
windows_core::imp::define_interface!(IShellFolder2, IShellFolder2_Vtbl, 0x93f2f68c_1d1b_11d3_a30e_00c04f79abd1);
impl core::ops::Deref for IShellFolder2 {
    type Target = IShellFolder;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IShellFolder2, windows_core::IUnknown, IShellFolder);
impl IShellFolder2 {
    pub unsafe fn GetDefaultSearchGUID(&self) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDefaultSearchGUID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn EnumSearches(&self) -> windows_core::Result<IEnumExtraSearch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumSearches)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetDefaultColumn(&self, dwres: u32, psort: *mut u32, pdisplay: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDefaultColumn)(windows_core::Interface::as_raw(self), dwres, psort as _, pdisplay as _).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetDefaultColumnState(&self, icolumn: u32) -> windows_core::Result<Common::SHCOLSTATE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDefaultColumnState)(windows_core::Interface::as_raw(self), icolumn, &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn GetDetailsEx(&self, pidl: *const Common::ITEMIDLIST, pscid: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDetailsEx)(windows_core::Interface::as_raw(self), pidl, pscid, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetDetailsOf(&self, pidl: *const Common::ITEMIDLIST, icolumn: u32, psd: *mut Common::SHELLDETAILS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDetailsOf)(windows_core::Interface::as_raw(self), pidl, icolumn, psd as _).ok() }
    }
    pub unsafe fn MapColumnToSCID(&self, icolumn: u32, pscid: *mut super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MapColumnToSCID)(windows_core::Interface::as_raw(self), icolumn, pscid as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellFolder2_Vtbl {
    pub base__: IShellFolder_Vtbl,
    pub GetDefaultSearchGUID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub EnumSearches: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetDefaultColumn: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetDefaultColumnState: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut Common::SHCOLSTATE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetDefaultColumnState: usize,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
    pub GetDetailsEx: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *const super::super::Foundation::PROPERTYKEY, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common")))]
    GetDetailsEx: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetDetailsOf: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, u32, *mut Common::SHELLDETAILS) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetDetailsOf: usize,
    pub MapColumnToSCID: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
pub trait IShellFolder2_Impl: IShellFolder_Impl {
    fn GetDefaultSearchGUID(&self) -> windows_core::Result<windows_core::GUID>;
    fn EnumSearches(&self) -> windows_core::Result<IEnumExtraSearch>;
    fn GetDefaultColumn(&self, dwres: u32, psort: *mut u32, pdisplay: *mut u32) -> windows_core::Result<()>;
    fn GetDefaultColumnState(&self, icolumn: u32) -> windows_core::Result<Common::SHCOLSTATE>;
    fn GetDetailsEx(&self, pidl: *const Common::ITEMIDLIST, pscid: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn GetDetailsOf(&self, pidl: *const Common::ITEMIDLIST, icolumn: u32, psd: *mut Common::SHELLDETAILS) -> windows_core::Result<()>;
    fn MapColumnToSCID(&self, icolumn: u32, pscid: *mut super::super::Foundation::PROPERTYKEY) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
impl IShellFolder2_Vtbl {
    pub const fn new<Identity: IShellFolder2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetDefaultSearchGUID<Identity: IShellFolder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolder2_Impl::GetDefaultSearchGUID(this) {
                    Ok(ok__) => {
                        pguid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumSearches<Identity: IShellFolder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolder2_Impl::EnumSearches(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDefaultColumn<Identity: IShellFolder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwres: u32, psort: *mut u32, pdisplay: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder2_Impl::GetDefaultColumn(this, core::mem::transmute_copy(&dwres), core::mem::transmute_copy(&psort), core::mem::transmute_copy(&pdisplay)).into()
            }
        }
        unsafe extern "system" fn GetDefaultColumnState<Identity: IShellFolder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, icolumn: u32, pcsflags: *mut Common::SHCOLSTATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolder2_Impl::GetDefaultColumnState(this, core::mem::transmute_copy(&icolumn)) {
                    Ok(ok__) => {
                        pcsflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDetailsEx<Identity: IShellFolder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pscid: *const super::super::Foundation::PROPERTYKEY, pv: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolder2_Impl::GetDetailsEx(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&pscid)) {
                    Ok(ok__) => {
                        pv.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDetailsOf<Identity: IShellFolder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, icolumn: u32, psd: *mut Common::SHELLDETAILS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder2_Impl::GetDetailsOf(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&icolumn), core::mem::transmute_copy(&psd)).into()
            }
        }
        unsafe extern "system" fn MapColumnToSCID<Identity: IShellFolder2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, icolumn: u32, pscid: *mut super::super::Foundation::PROPERTYKEY) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolder2_Impl::MapColumnToSCID(this, core::mem::transmute_copy(&icolumn), core::mem::transmute_copy(&pscid)).into()
            }
        }
        Self {
            base__: IShellFolder_Vtbl::new::<Identity, OFFSET>(),
            GetDefaultSearchGUID: GetDefaultSearchGUID::<Identity, OFFSET>,
            EnumSearches: EnumSearches::<Identity, OFFSET>,
            GetDefaultColumn: GetDefaultColumn::<Identity, OFFSET>,
            GetDefaultColumnState: GetDefaultColumnState::<Identity, OFFSET>,
            GetDetailsEx: GetDetailsEx::<Identity, OFFSET>,
            GetDetailsOf: GetDetailsOf::<Identity, OFFSET>,
            MapColumnToSCID: MapColumnToSCID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolder2 as windows_core::Interface>::IID || iid == &<IShellFolder as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IShellFolder2 {}
windows_core::imp::define_interface!(IShellFolderBand, IShellFolderBand_Vtbl, 0x7fe80cc8_c247_11d0_b93a_00a0c90312e1);
windows_core::imp::interface_hierarchy!(IShellFolderBand, windows_core::IUnknown);
impl IShellFolderBand {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn InitializeSFB<P0>(&self, psf: P0, pidl: Option<*const Common::ITEMIDLIST>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellFolder>,
    {
        unsafe { (windows_core::Interface::vtable(self).InitializeSFB)(windows_core::Interface::as_raw(self), psf.param().abi(), pidl.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetBandInfoSFB(&self, pbi: *const BANDINFOSFB) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetBandInfoSFB)(windows_core::Interface::as_raw(self), core::mem::transmute(pbi)).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetBandInfoSFB(&self, pbi: *mut BANDINFOSFB) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetBandInfoSFB)(windows_core::Interface::as_raw(self), core::mem::transmute(pbi)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellFolderBand_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub InitializeSFB: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    InitializeSFB: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetBandInfoSFB: unsafe extern "system" fn(*mut core::ffi::c_void, *const BANDINFOSFB) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetBandInfoSFB: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetBandInfoSFB: unsafe extern "system" fn(*mut core::ffi::c_void, *mut BANDINFOSFB) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetBandInfoSFB: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IShellFolderBand_Impl: windows_core::IUnknownImpl {
    fn InitializeSFB(&self, psf: windows_core::Ref<IShellFolder>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn SetBandInfoSFB(&self, pbi: *const BANDINFOSFB) -> windows_core::Result<()>;
    fn GetBandInfoSFB(&self, pbi: *mut BANDINFOSFB) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IShellFolderBand_Vtbl {
    pub const fn new<Identity: IShellFolderBand_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn InitializeSFB<Identity: IShellFolderBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderBand_Impl::InitializeSFB(this, core::mem::transmute_copy(&psf), core::mem::transmute_copy(&pidl)).into()
            }
        }
        unsafe extern "system" fn SetBandInfoSFB<Identity: IShellFolderBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbi: *const BANDINFOSFB) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderBand_Impl::SetBandInfoSFB(this, core::mem::transmute_copy(&pbi)).into()
            }
        }
        unsafe extern "system" fn GetBandInfoSFB<Identity: IShellFolderBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbi: *mut BANDINFOSFB) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderBand_Impl::GetBandInfoSFB(this, core::mem::transmute_copy(&pbi)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            InitializeSFB: InitializeSFB::<Identity, OFFSET>,
            SetBandInfoSFB: SetBandInfoSFB::<Identity, OFFSET>,
            GetBandInfoSFB: GetBandInfoSFB::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderBand as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IShellFolderBand {}
windows_core::imp::define_interface!(IShellFolderView, IShellFolderView_Vtbl, 0x37a378c0_f82d_11ce_ae65_08002b2e1262);
windows_core::imp::interface_hierarchy!(IShellFolderView, windows_core::IUnknown);
impl IShellFolderView {
    pub unsafe fn Rearrange(&self, lparamsort: super::super::Foundation::LPARAM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Rearrange)(windows_core::Interface::as_raw(self), lparamsort).ok() }
    }
    pub unsafe fn GetArrangeParam(&self) -> windows_core::Result<super::super::Foundation::LPARAM> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetArrangeParam)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ArrangeGrid(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ArrangeGrid)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn AutoArrange(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AutoArrange)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetAutoArrange(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetAutoArrange)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn AddObject(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddObject)(windows_core::Interface::as_raw(self), pidl, &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetObject(&self, ppidl: *mut *mut Common::ITEMIDLIST, uitem: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetObject)(windows_core::Interface::as_raw(self), ppidl as _, uitem).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn RemoveObject(&self, pidl: Option<*const Common::ITEMIDLIST>) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RemoveObject)(windows_core::Interface::as_raw(self), pidl.unwrap_or(core::mem::zeroed()) as _, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetObjectCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetObjectCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetObjectCount(&self, ucount: u32, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetObjectCount)(windows_core::Interface::as_raw(self), ucount, dwflags).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn UpdateObject(&self, pidlold: *const Common::ITEMIDLIST, pidlnew: *const Common::ITEMIDLIST) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).UpdateObject)(windows_core::Interface::as_raw(self), pidlold, pidlnew, &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn RefreshObject(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RefreshObject)(windows_core::Interface::as_raw(self), pidl, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRedraw(&self, bredraw: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRedraw)(windows_core::Interface::as_raw(self), bredraw.into()).ok() }
    }
    pub unsafe fn GetSelectedCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSelectedCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetSelectedObjects(&self, pppidl: *mut *mut *mut Common::ITEMIDLIST, puitems: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSelectedObjects)(windows_core::Interface::as_raw(self), pppidl as _, puitems as _).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn IsDropOnSource<P0>(&self, pdroptarget: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Ole::IDropTarget>,
    {
        unsafe { (windows_core::Interface::vtable(self).IsDropOnSource)(windows_core::Interface::as_raw(self), pdroptarget.param().abi()).ok() }
    }
    pub unsafe fn GetDragPoint(&self) -> windows_core::Result<super::super::Foundation::POINT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDragPoint)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDropPoint(&self) -> windows_core::Result<super::super::Foundation::POINT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDropPoint)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn MoveIcons<P0>(&self, pdataobject: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).MoveIcons)(windows_core::Interface::as_raw(self), pdataobject.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetItemPos(&self, pidl: *const Common::ITEMIDLIST, ppt: *const super::super::Foundation::POINT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetItemPos)(windows_core::Interface::as_raw(self), pidl, ppt).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn IsBkDropTarget<P0>(&self, pdroptarget: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Ole::IDropTarget>,
    {
        unsafe { (windows_core::Interface::vtable(self).IsBkDropTarget)(windows_core::Interface::as_raw(self), pdroptarget.param().abi()).ok() }
    }
    pub unsafe fn SetClipboard(&self, bmove: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetClipboard)(windows_core::Interface::as_raw(self), bmove.into()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetPoints<P0>(&self, pdataobject: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IDataObject>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetPoints)(windows_core::Interface::as_raw(self), pdataobject.param().abi()).ok() }
    }
    pub unsafe fn GetItemSpacing(&self) -> windows_core::Result<ITEMSPACING> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemSpacing)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCallback<P0>(&self, pnewcb: P0) -> windows_core::Result<IShellFolderViewCB>
    where
        P0: windows_core::Param<IShellFolderViewCB>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SetCallback)(windows_core::Interface::as_raw(self), pnewcb.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Select(&self, dwflags: SFVS_SELECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Select)(windows_core::Interface::as_raw(self), dwflags.0 as _).ok() }
    }
    pub unsafe fn QuerySupport(&self, pdwsupport: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).QuerySupport)(windows_core::Interface::as_raw(self), pdwsupport as _).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetAutomationObject<P0>(&self, pdisp: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IDispatch>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetAutomationObject)(windows_core::Interface::as_raw(self), pdisp.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellFolderView_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Rearrange: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::LPARAM) -> windows_core::HRESULT,
    pub GetArrangeParam: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::LPARAM) -> windows_core::HRESULT,
    pub ArrangeGrid: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AutoArrange: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetAutoArrange: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub AddObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    AddObject: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetObject: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub RemoveObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    RemoveObject: usize,
    pub GetObjectCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetObjectCount: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub UpdateObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *const Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    UpdateObject: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub RefreshObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    RefreshObject: usize,
    pub SetRedraw: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub GetSelectedCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetSelectedObjects: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut *mut Common::ITEMIDLIST, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetSelectedObjects: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub IsDropOnSource: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    IsDropOnSource: usize,
    pub GetDragPoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::POINT) -> windows_core::HRESULT,
    pub GetDropPoint: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::POINT) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub MoveIcons: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    MoveIcons: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetItemPos: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *const super::super::Foundation::POINT) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetItemPos: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub IsBkDropTarget: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    IsBkDropTarget: usize,
    pub SetClipboard: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SetPoints: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetPoints: usize,
    pub GetItemSpacing: unsafe extern "system" fn(*mut core::ffi::c_void, *mut ITEMSPACING) -> windows_core::HRESULT,
    pub SetCallback: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Select: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub QuerySupport: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub SetAutomationObject: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetAutomationObject: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
pub trait IShellFolderView_Impl: windows_core::IUnknownImpl {
    fn Rearrange(&self, lparamsort: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
    fn GetArrangeParam(&self) -> windows_core::Result<super::super::Foundation::LPARAM>;
    fn ArrangeGrid(&self) -> windows_core::Result<()>;
    fn AutoArrange(&self) -> windows_core::Result<()>;
    fn GetAutoArrange(&self) -> windows_core::Result<()>;
    fn AddObject(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32>;
    fn GetObject(&self, ppidl: *mut *mut Common::ITEMIDLIST, uitem: u32) -> windows_core::Result<()>;
    fn RemoveObject(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32>;
    fn GetObjectCount(&self) -> windows_core::Result<u32>;
    fn SetObjectCount(&self, ucount: u32, dwflags: u32) -> windows_core::Result<()>;
    fn UpdateObject(&self, pidlold: *const Common::ITEMIDLIST, pidlnew: *const Common::ITEMIDLIST) -> windows_core::Result<u32>;
    fn RefreshObject(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<u32>;
    fn SetRedraw(&self, bredraw: windows_core::BOOL) -> windows_core::Result<()>;
    fn GetSelectedCount(&self) -> windows_core::Result<u32>;
    fn GetSelectedObjects(&self, pppidl: *mut *mut *mut Common::ITEMIDLIST, puitems: *mut u32) -> windows_core::Result<()>;
    fn IsDropOnSource(&self, pdroptarget: windows_core::Ref<super::super::System::Ole::IDropTarget>) -> windows_core::Result<()>;
    fn GetDragPoint(&self) -> windows_core::Result<super::super::Foundation::POINT>;
    fn GetDropPoint(&self) -> windows_core::Result<super::super::Foundation::POINT>;
    fn MoveIcons(&self, pdataobject: windows_core::Ref<super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
    fn SetItemPos(&self, pidl: *const Common::ITEMIDLIST, ppt: *const super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn IsBkDropTarget(&self, pdroptarget: windows_core::Ref<super::super::System::Ole::IDropTarget>) -> windows_core::Result<()>;
    fn SetClipboard(&self, bmove: windows_core::BOOL) -> windows_core::Result<()>;
    fn SetPoints(&self, pdataobject: windows_core::Ref<super::super::System::Com::IDataObject>) -> windows_core::Result<()>;
    fn GetItemSpacing(&self) -> windows_core::Result<ITEMSPACING>;
    fn SetCallback(&self, pnewcb: windows_core::Ref<IShellFolderViewCB>) -> windows_core::Result<IShellFolderViewCB>;
    fn Select(&self, dwflags: &SFVS_SELECT) -> windows_core::Result<()>;
    fn QuerySupport(&self, pdwsupport: *mut u32) -> windows_core::Result<()>;
    fn SetAutomationObject(&self, pdisp: windows_core::Ref<super::super::System::Com::IDispatch>) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl IShellFolderView_Vtbl {
    pub const fn new<Identity: IShellFolderView_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Rearrange<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lparamsort: super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::Rearrange(this, core::mem::transmute_copy(&lparamsort)).into()
            }
        }
        unsafe extern "system" fn GetArrangeParam<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plparamsort: *mut super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::GetArrangeParam(this) {
                    Ok(ok__) => {
                        plparamsort.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ArrangeGrid<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::ArrangeGrid(this).into()
            }
        }
        unsafe extern "system" fn AutoArrange<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::AutoArrange(this).into()
            }
        }
        unsafe extern "system" fn GetAutoArrange<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::GetAutoArrange(this).into()
            }
        }
        unsafe extern "system" fn AddObject<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, puitem: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::AddObject(this, core::mem::transmute_copy(&pidl)) {
                    Ok(ok__) => {
                        puitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetObject<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST, uitem: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::GetObject(this, core::mem::transmute_copy(&ppidl), core::mem::transmute_copy(&uitem)).into()
            }
        }
        unsafe extern "system" fn RemoveObject<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, puitem: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::RemoveObject(this, core::mem::transmute_copy(&pidl)) {
                    Ok(ok__) => {
                        puitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetObjectCount<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pucount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::GetObjectCount(this) {
                    Ok(ok__) => {
                        pucount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetObjectCount<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ucount: u32, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::SetObjectCount(this, core::mem::transmute_copy(&ucount), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn UpdateObject<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlold: *const Common::ITEMIDLIST, pidlnew: *const Common::ITEMIDLIST, puitem: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::UpdateObject(this, core::mem::transmute_copy(&pidlold), core::mem::transmute_copy(&pidlnew)) {
                    Ok(ok__) => {
                        puitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RefreshObject<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, puitem: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::RefreshObject(this, core::mem::transmute_copy(&pidl)) {
                    Ok(ok__) => {
                        puitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRedraw<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bredraw: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::SetRedraw(this, core::mem::transmute_copy(&bredraw)).into()
            }
        }
        unsafe extern "system" fn GetSelectedCount<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, puselected: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::GetSelectedCount(this) {
                    Ok(ok__) => {
                        puselected.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSelectedObjects<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pppidl: *mut *mut *mut Common::ITEMIDLIST, puitems: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::GetSelectedObjects(this, core::mem::transmute_copy(&pppidl), core::mem::transmute_copy(&puitems)).into()
            }
        }
        unsafe extern "system" fn IsDropOnSource<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdroptarget: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::IsDropOnSource(this, core::mem::transmute_copy(&pdroptarget)).into()
            }
        }
        unsafe extern "system" fn GetDragPoint<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *mut super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::GetDragPoint(this) {
                    Ok(ok__) => {
                        ppt.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDropPoint<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppt: *mut super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::GetDropPoint(this) {
                    Ok(ok__) => {
                        ppt.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn MoveIcons<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdataobject: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::MoveIcons(this, core::mem::transmute_copy(&pdataobject)).into()
            }
        }
        unsafe extern "system" fn SetItemPos<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, ppt: *const super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::SetItemPos(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&ppt)).into()
            }
        }
        unsafe extern "system" fn IsBkDropTarget<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdroptarget: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::IsBkDropTarget(this, core::mem::transmute_copy(&pdroptarget)).into()
            }
        }
        unsafe extern "system" fn SetClipboard<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bmove: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::SetClipboard(this, core::mem::transmute_copy(&bmove)).into()
            }
        }
        unsafe extern "system" fn SetPoints<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdataobject: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::SetPoints(this, core::mem::transmute_copy(&pdataobject)).into()
            }
        }
        unsafe extern "system" fn GetItemSpacing<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pspacing: *mut ITEMSPACING) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::GetItemSpacing(this) {
                    Ok(ok__) => {
                        pspacing.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCallback<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnewcb: *mut core::ffi::c_void, ppoldcb: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderView_Impl::SetCallback(this, core::mem::transmute_copy(&pnewcb)) {
                    Ok(ok__) => {
                        ppoldcb.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Select<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::Select(this, core::mem::transmute(&dwflags)).into()
            }
        }
        unsafe extern "system" fn QuerySupport<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwsupport: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::QuerySupport(this, core::mem::transmute_copy(&pdwsupport)).into()
            }
        }
        unsafe extern "system" fn SetAutomationObject<Identity: IShellFolderView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdisp: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderView_Impl::SetAutomationObject(this, core::mem::transmute_copy(&pdisp)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Rearrange: Rearrange::<Identity, OFFSET>,
            GetArrangeParam: GetArrangeParam::<Identity, OFFSET>,
            ArrangeGrid: ArrangeGrid::<Identity, OFFSET>,
            AutoArrange: AutoArrange::<Identity, OFFSET>,
            GetAutoArrange: GetAutoArrange::<Identity, OFFSET>,
            AddObject: AddObject::<Identity, OFFSET>,
            GetObject: GetObject::<Identity, OFFSET>,
            RemoveObject: RemoveObject::<Identity, OFFSET>,
            GetObjectCount: GetObjectCount::<Identity, OFFSET>,
            SetObjectCount: SetObjectCount::<Identity, OFFSET>,
            UpdateObject: UpdateObject::<Identity, OFFSET>,
            RefreshObject: RefreshObject::<Identity, OFFSET>,
            SetRedraw: SetRedraw::<Identity, OFFSET>,
            GetSelectedCount: GetSelectedCount::<Identity, OFFSET>,
            GetSelectedObjects: GetSelectedObjects::<Identity, OFFSET>,
            IsDropOnSource: IsDropOnSource::<Identity, OFFSET>,
            GetDragPoint: GetDragPoint::<Identity, OFFSET>,
            GetDropPoint: GetDropPoint::<Identity, OFFSET>,
            MoveIcons: MoveIcons::<Identity, OFFSET>,
            SetItemPos: SetItemPos::<Identity, OFFSET>,
            IsBkDropTarget: IsBkDropTarget::<Identity, OFFSET>,
            SetClipboard: SetClipboard::<Identity, OFFSET>,
            SetPoints: SetPoints::<Identity, OFFSET>,
            GetItemSpacing: GetItemSpacing::<Identity, OFFSET>,
            SetCallback: SetCallback::<Identity, OFFSET>,
            Select: Select::<Identity, OFFSET>,
            QuerySupport: QuerySupport::<Identity, OFFSET>,
            SetAutomationObject: SetAutomationObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderView as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IShellFolderView {}
windows_core::imp::define_interface!(IShellFolderViewCB, IShellFolderViewCB_Vtbl, 0x2047e320_f2a9_11ce_ae65_08002b2e1262);
windows_core::imp::interface_hierarchy!(IShellFolderViewCB, windows_core::IUnknown);
impl IShellFolderViewCB {
    pub unsafe fn MessageSFVCB(&self, umsg: SFVM_MESSAGE_ID, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MessageSFVCB)(windows_core::Interface::as_raw(self), umsg.0 as _, wparam, lparam).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellFolderViewCB_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub MessageSFVCB: unsafe extern "system" fn(*mut core::ffi::c_void, u32, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM) -> windows_core::HRESULT,
}
pub trait IShellFolderViewCB_Impl: windows_core::IUnknownImpl {
    fn MessageSFVCB(&self, umsg: &SFVM_MESSAGE_ID, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
}
impl IShellFolderViewCB_Vtbl {
    pub const fn new<Identity: IShellFolderViewCB_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn MessageSFVCB<Identity: IShellFolderViewCB_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderViewCB_Impl::MessageSFVCB(this, core::mem::transmute(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), MessageSFVCB: MessageSFVCB::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderViewCB as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellFolderViewCB {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellFolderViewDual, IShellFolderViewDual_Vtbl, 0xe7a1af80_4d96_11cf_960c_0080c7f4ee85);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellFolderViewDual {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellFolderViewDual, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IShellFolderViewDual {
    pub unsafe fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Application)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Parent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Folder(&self) -> windows_core::Result<Folder> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Folder)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SelectedItems(&self) -> windows_core::Result<FolderItems> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SelectedItems)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn FocusedItem(&self) -> windows_core::Result<FolderItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FocusedItem)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn SelectItem(&self, pvfi: *const super::super::System::Variant::VARIANT, dwflags: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SelectItem)(windows_core::Interface::as_raw(self), core::mem::transmute(pvfi), dwflags).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn PopupItemMenu<P0>(&self, pfi: P0, vx: &super::super::System::Variant::VARIANT, vy: &super::super::System::Variant::VARIANT) -> windows_core::Result<windows_core::BSTR>
    where
        P0: windows_core::Param<FolderItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PopupItemMenu)(windows_core::Interface::as_raw(self), pfi.param().abi(), core::mem::transmute_copy(vx), core::mem::transmute_copy(vy), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn Script(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Script)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn ViewOptions(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ViewOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellFolderViewDual_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub Application: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Parent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Folder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SelectedItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FocusedItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub SelectItem: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::System::Variant::VARIANT, i32) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    SelectItem: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub PopupItemMenu: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    PopupItemMenu: usize,
    pub Script: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ViewOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellFolderViewDual_Impl: super::super::System::Com::IDispatch_Impl {
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Folder(&self) -> windows_core::Result<Folder>;
    fn SelectedItems(&self) -> windows_core::Result<FolderItems>;
    fn FocusedItem(&self) -> windows_core::Result<FolderItem>;
    fn SelectItem(&self, pvfi: *const super::super::System::Variant::VARIANT, dwflags: i32) -> windows_core::Result<()>;
    fn PopupItemMenu(&self, pfi: windows_core::Ref<FolderItem>, vx: &super::super::System::Variant::VARIANT, vy: &super::super::System::Variant::VARIANT) -> windows_core::Result<windows_core::BSTR>;
    fn Script(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn ViewOptions(&self) -> windows_core::Result<i32>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellFolderViewDual_Vtbl {
    pub const fn new<Identity: IShellFolderViewDual_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Application<Identity: IShellFolderViewDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual_Impl::Application(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Parent<Identity: IShellFolderViewDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual_Impl::Parent(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Folder<Identity: IShellFolderViewDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual_Impl::Folder(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SelectedItems<Identity: IShellFolderViewDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual_Impl::SelectedItems(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FocusedItem<Identity: IShellFolderViewDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual_Impl::FocusedItem(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SelectItem<Identity: IShellFolderViewDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvfi: *const super::super::System::Variant::VARIANT, dwflags: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderViewDual_Impl::SelectItem(this, core::mem::transmute_copy(&pvfi), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn PopupItemMenu<Identity: IShellFolderViewDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfi: *mut core::ffi::c_void, vx: super::super::System::Variant::VARIANT, vy: super::super::System::Variant::VARIANT, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual_Impl::PopupItemMenu(this, core::mem::transmute_copy(&pfi), core::mem::transmute(&vx), core::mem::transmute(&vy)) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Script<Identity: IShellFolderViewDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual_Impl::Script(this) {
                    Ok(ok__) => {
                        ppdisp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ViewOptions<Identity: IShellFolderViewDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plviewoptions: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual_Impl::ViewOptions(this) {
                    Ok(ok__) => {
                        plviewoptions.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Folder: Folder::<Identity, OFFSET>,
            SelectedItems: SelectedItems::<Identity, OFFSET>,
            FocusedItem: FocusedItem::<Identity, OFFSET>,
            SelectItem: SelectItem::<Identity, OFFSET>,
            PopupItemMenu: PopupItemMenu::<Identity, OFFSET>,
            Script: Script::<Identity, OFFSET>,
            ViewOptions: ViewOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderViewDual as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellFolderViewDual {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellFolderViewDual2, IShellFolderViewDual2_Vtbl, 0x31c147b6_0ade_4a3c_b514_ddf932ef6d17);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellFolderViewDual2 {
    type Target = IShellFolderViewDual;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellFolderViewDual2, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellFolderViewDual);
#[cfg(feature = "Win32_System_Com")]
impl IShellFolderViewDual2 {
    pub unsafe fn CurrentViewMode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CurrentViewMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetCurrentViewMode(&self, viewmode: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCurrentViewMode)(windows_core::Interface::as_raw(self), viewmode).ok() }
    }
    pub unsafe fn SelectItemRelative(&self, irelative: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SelectItemRelative)(windows_core::Interface::as_raw(self), irelative).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellFolderViewDual2_Vtbl {
    pub base__: IShellFolderViewDual_Vtbl,
    pub CurrentViewMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetCurrentViewMode: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SelectItemRelative: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellFolderViewDual2_Impl: IShellFolderViewDual_Impl {
    fn CurrentViewMode(&self) -> windows_core::Result<u32>;
    fn SetCurrentViewMode(&self, viewmode: u32) -> windows_core::Result<()>;
    fn SelectItemRelative(&self, irelative: i32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellFolderViewDual2_Vtbl {
    pub const fn new<Identity: IShellFolderViewDual2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CurrentViewMode<Identity: IShellFolderViewDual2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pviewmode: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual2_Impl::CurrentViewMode(this) {
                    Ok(ok__) => {
                        pviewmode.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetCurrentViewMode<Identity: IShellFolderViewDual2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, viewmode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderViewDual2_Impl::SetCurrentViewMode(this, core::mem::transmute_copy(&viewmode)).into()
            }
        }
        unsafe extern "system" fn SelectItemRelative<Identity: IShellFolderViewDual2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, irelative: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderViewDual2_Impl::SelectItemRelative(this, core::mem::transmute_copy(&irelative)).into()
            }
        }
        Self {
            base__: IShellFolderViewDual_Vtbl::new::<Identity, OFFSET>(),
            CurrentViewMode: CurrentViewMode::<Identity, OFFSET>,
            SetCurrentViewMode: SetCurrentViewMode::<Identity, OFFSET>,
            SelectItemRelative: SelectItemRelative::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderViewDual2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellFolderViewDual as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellFolderViewDual2 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellFolderViewDual3, IShellFolderViewDual3_Vtbl, 0x29ec8e6c_46d3_411f_baaa_611a6c9cac66);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellFolderViewDual3 {
    type Target = IShellFolderViewDual2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellFolderViewDual3, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellFolderViewDual, IShellFolderViewDual2);
#[cfg(feature = "Win32_System_Com")]
impl IShellFolderViewDual3 {
    pub unsafe fn GroupBy(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GroupBy)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SetGroupBy(&self, bstrgroupby: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetGroupBy)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrgroupby)).ok() }
    }
    pub unsafe fn FolderFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FolderFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetFolderFlags(&self, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFolderFlags)(windows_core::Interface::as_raw(self), dwflags).ok() }
    }
    pub unsafe fn SortColumns(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SortColumns)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SetSortColumns(&self, bstrsortcolumns: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSortColumns)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrsortcolumns)).ok() }
    }
    pub unsafe fn SetIconSize(&self, iiconsize: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetIconSize)(windows_core::Interface::as_raw(self), iiconsize).ok() }
    }
    pub unsafe fn IconSize(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IconSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn FilterView(&self, bstrfiltertext: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FilterView)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrfiltertext)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellFolderViewDual3_Vtbl {
    pub base__: IShellFolderViewDual2_Vtbl,
    pub GroupBy: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetGroupBy: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FolderFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetFolderFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SortColumns: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetSortColumns: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetIconSize: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub IconSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub FilterView: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellFolderViewDual3_Impl: IShellFolderViewDual2_Impl {
    fn GroupBy(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetGroupBy(&self, bstrgroupby: &windows_core::BSTR) -> windows_core::Result<()>;
    fn FolderFlags(&self) -> windows_core::Result<u32>;
    fn SetFolderFlags(&self, dwflags: u32) -> windows_core::Result<()>;
    fn SortColumns(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetSortColumns(&self, bstrsortcolumns: &windows_core::BSTR) -> windows_core::Result<()>;
    fn SetIconSize(&self, iiconsize: i32) -> windows_core::Result<()>;
    fn IconSize(&self) -> windows_core::Result<i32>;
    fn FilterView(&self, bstrfiltertext: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellFolderViewDual3_Vtbl {
    pub const fn new<Identity: IShellFolderViewDual3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GroupBy<Identity: IShellFolderViewDual3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrgroupby: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual3_Impl::GroupBy(this) {
                    Ok(ok__) => {
                        pbstrgroupby.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetGroupBy<Identity: IShellFolderViewDual3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrgroupby: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderViewDual3_Impl::SetGroupBy(this, core::mem::transmute(&bstrgroupby)).into()
            }
        }
        unsafe extern "system" fn FolderFlags<Identity: IShellFolderViewDual3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual3_Impl::FolderFlags(this) {
                    Ok(ok__) => {
                        pdwflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetFolderFlags<Identity: IShellFolderViewDual3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderViewDual3_Impl::SetFolderFlags(this, core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn SortColumns<Identity: IShellFolderViewDual3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrsortcolumns: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual3_Impl::SortColumns(this) {
                    Ok(ok__) => {
                        pbstrsortcolumns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetSortColumns<Identity: IShellFolderViewDual3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrsortcolumns: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderViewDual3_Impl::SetSortColumns(this, core::mem::transmute(&bstrsortcolumns)).into()
            }
        }
        unsafe extern "system" fn SetIconSize<Identity: IShellFolderViewDual3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iiconsize: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderViewDual3_Impl::SetIconSize(this, core::mem::transmute_copy(&iiconsize)).into()
            }
        }
        unsafe extern "system" fn IconSize<Identity: IShellFolderViewDual3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, piiconsize: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellFolderViewDual3_Impl::IconSize(this) {
                    Ok(ok__) => {
                        piiconsize.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FilterView<Identity: IShellFolderViewDual3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrfiltertext: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellFolderViewDual3_Impl::FilterView(this, core::mem::transmute(&bstrfiltertext)).into()
            }
        }
        Self {
            base__: IShellFolderViewDual2_Vtbl::new::<Identity, OFFSET>(),
            GroupBy: GroupBy::<Identity, OFFSET>,
            SetGroupBy: SetGroupBy::<Identity, OFFSET>,
            FolderFlags: FolderFlags::<Identity, OFFSET>,
            SetFolderFlags: SetFolderFlags::<Identity, OFFSET>,
            SortColumns: SortColumns::<Identity, OFFSET>,
            SetSortColumns: SetSortColumns::<Identity, OFFSET>,
            SetIconSize: SetIconSize::<Identity, OFFSET>,
            IconSize: IconSize::<Identity, OFFSET>,
            FilterView: FilterView::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellFolderViewDual3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellFolderViewDual as windows_core::Interface>::IID || iid == &<IShellFolderViewDual2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellFolderViewDual3 {}
windows_core::imp::define_interface!(IShellIcon, IShellIcon_Vtbl, 0x000214e5_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IShellIcon, windows_core::IUnknown);
impl IShellIcon {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetIconOf(&self, pidl: *const Common::ITEMIDLIST, flags: u32) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIconOf)(windows_core::Interface::as_raw(self), pidl, flags, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellIcon_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetIconOf: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, u32, *mut i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetIconOf: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IShellIcon_Impl: windows_core::IUnknownImpl {
    fn GetIconOf(&self, pidl: *const Common::ITEMIDLIST, flags: u32) -> windows_core::Result<i32>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IShellIcon_Vtbl {
    pub const fn new<Identity: IShellIcon_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetIconOf<Identity: IShellIcon_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, flags: u32, piconindex: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellIcon_Impl::GetIconOf(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        piconindex.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetIconOf: GetIconOf::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellIcon as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IShellIcon {}
windows_core::imp::define_interface!(IShellIconOverlay, IShellIconOverlay_Vtbl, 0x7d688a70_c613_11d0_999b_00c04fd655e1);
windows_core::imp::interface_hierarchy!(IShellIconOverlay, windows_core::IUnknown);
impl IShellIconOverlay {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetOverlayIndex(&self, pidl: *const Common::ITEMIDLIST, pindex: *mut i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetOverlayIndex)(windows_core::Interface::as_raw(self), pidl, pindex as _).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetOverlayIconIndex(&self, pidl: *const Common::ITEMIDLIST, piconindex: *mut i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetOverlayIconIndex)(windows_core::Interface::as_raw(self), pidl, piconindex as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellIconOverlay_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetOverlayIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetOverlayIndex: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetOverlayIconIndex: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut i32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetOverlayIconIndex: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IShellIconOverlay_Impl: windows_core::IUnknownImpl {
    fn GetOverlayIndex(&self, pidl: *const Common::ITEMIDLIST, pindex: *mut i32) -> windows_core::Result<()>;
    fn GetOverlayIconIndex(&self, pidl: *const Common::ITEMIDLIST, piconindex: *mut i32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IShellIconOverlay_Vtbl {
    pub const fn new<Identity: IShellIconOverlay_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetOverlayIndex<Identity: IShellIconOverlay_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, pindex: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellIconOverlay_Impl::GetOverlayIndex(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&pindex)).into()
            }
        }
        unsafe extern "system" fn GetOverlayIconIndex<Identity: IShellIconOverlay_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, piconindex: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellIconOverlay_Impl::GetOverlayIconIndex(this, core::mem::transmute_copy(&pidl), core::mem::transmute_copy(&piconindex)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetOverlayIndex: GetOverlayIndex::<Identity, OFFSET>,
            GetOverlayIconIndex: GetOverlayIconIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellIconOverlay as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IShellIconOverlay {}
windows_core::imp::define_interface!(IShellIconOverlayIdentifier, IShellIconOverlayIdentifier_Vtbl, 0x0c6c4200_c589_11d0_999a_00c04fd655e1);
windows_core::imp::interface_hierarchy!(IShellIconOverlayIdentifier, windows_core::IUnknown);
impl IShellIconOverlayIdentifier {
    pub unsafe fn IsMemberOf<P0>(&self, pwszpath: P0, dwattrib: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).IsMemberOf)(windows_core::Interface::as_raw(self), pwszpath.param().abi(), dwattrib).ok() }
    }
    pub unsafe fn GetOverlayInfo(&self, pwsziconfile: &mut [u16], pindex: *mut i32, pdwflags: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetOverlayInfo)(windows_core::Interface::as_raw(self), core::mem::transmute(pwsziconfile.as_ptr()), pwsziconfile.len().try_into().unwrap(), pindex as _, pdwflags as _).ok() }
    }
    pub unsafe fn GetPriority(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPriority)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellIconOverlayIdentifier_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub IsMemberOf: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetOverlayInfo: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32, *mut i32, *mut u32) -> windows_core::HRESULT,
    pub GetPriority: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
}
pub trait IShellIconOverlayIdentifier_Impl: windows_core::IUnknownImpl {
    fn IsMemberOf(&self, pwszpath: &windows_core::PCWSTR, dwattrib: u32) -> windows_core::Result<()>;
    fn GetOverlayInfo(&self, pwsziconfile: windows_core::PWSTR, cchmax: i32, pindex: *mut i32, pdwflags: *mut u32) -> windows_core::Result<()>;
    fn GetPriority(&self) -> windows_core::Result<i32>;
}
impl IShellIconOverlayIdentifier_Vtbl {
    pub const fn new<Identity: IShellIconOverlayIdentifier_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn IsMemberOf<Identity: IShellIconOverlayIdentifier_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszpath: windows_core::PCWSTR, dwattrib: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellIconOverlayIdentifier_Impl::IsMemberOf(this, core::mem::transmute(&pwszpath), core::mem::transmute_copy(&dwattrib)).into()
            }
        }
        unsafe extern "system" fn GetOverlayInfo<Identity: IShellIconOverlayIdentifier_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwsziconfile: windows_core::PWSTR, cchmax: i32, pindex: *mut i32, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellIconOverlayIdentifier_Impl::GetOverlayInfo(this, core::mem::transmute_copy(&pwsziconfile), core::mem::transmute_copy(&cchmax), core::mem::transmute_copy(&pindex), core::mem::transmute_copy(&pdwflags)).into()
            }
        }
        unsafe extern "system" fn GetPriority<Identity: IShellIconOverlayIdentifier_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppriority: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellIconOverlayIdentifier_Impl::GetPriority(this) {
                    Ok(ok__) => {
                        ppriority.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsMemberOf: IsMemberOf::<Identity, OFFSET>,
            GetOverlayInfo: GetOverlayInfo::<Identity, OFFSET>,
            GetPriority: GetPriority::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellIconOverlayIdentifier as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellIconOverlayIdentifier {}
windows_core::imp::define_interface!(IShellIconOverlayManager, IShellIconOverlayManager_Vtbl, 0xf10b5e34_dd3b_42a7_aa7d_2f4ec54bb09b);
windows_core::imp::interface_hierarchy!(IShellIconOverlayManager, windows_core::IUnknown);
impl IShellIconOverlayManager {
    pub unsafe fn GetFileOverlayInfo<P0>(&self, pwszpath: P0, dwattrib: u32, pindex: *mut i32, dwflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetFileOverlayInfo)(windows_core::Interface::as_raw(self), pwszpath.param().abi(), dwattrib, pindex as _, dwflags).ok() }
    }
    pub unsafe fn GetReservedOverlayInfo<P0>(&self, pwszpath: P0, dwattrib: u32, pindex: *mut i32, dwflags: u32, ireservedid: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetReservedOverlayInfo)(windows_core::Interface::as_raw(self), pwszpath.param().abi(), dwattrib, pindex as _, dwflags, ireservedid).ok() }
    }
    pub unsafe fn RefreshOverlayImages(&self, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RefreshOverlayImages)(windows_core::Interface::as_raw(self), dwflags).ok() }
    }
    pub unsafe fn LoadNonloadedOverlayIdentifiers(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).LoadNonloadedOverlayIdentifiers)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn OverlayIndexFromImageIndex(&self, iimage: i32, piindex: *mut i32, fadd: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OverlayIndexFromImageIndex)(windows_core::Interface::as_raw(self), iimage, piindex as _, fadd.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellIconOverlayManager_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetFileOverlayInfo: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut i32, u32) -> windows_core::HRESULT,
    pub GetReservedOverlayInfo: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut i32, u32, i32) -> windows_core::HRESULT,
    pub RefreshOverlayImages: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub LoadNonloadedOverlayIdentifiers: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OverlayIndexFromImageIndex: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut i32, windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait IShellIconOverlayManager_Impl: windows_core::IUnknownImpl {
    fn GetFileOverlayInfo(&self, pwszpath: &windows_core::PCWSTR, dwattrib: u32, pindex: *mut i32, dwflags: u32) -> windows_core::Result<()>;
    fn GetReservedOverlayInfo(&self, pwszpath: &windows_core::PCWSTR, dwattrib: u32, pindex: *mut i32, dwflags: u32, ireservedid: i32) -> windows_core::Result<()>;
    fn RefreshOverlayImages(&self, dwflags: u32) -> windows_core::Result<()>;
    fn LoadNonloadedOverlayIdentifiers(&self) -> windows_core::Result<()>;
    fn OverlayIndexFromImageIndex(&self, iimage: i32, piindex: *mut i32, fadd: windows_core::BOOL) -> windows_core::Result<()>;
}
impl IShellIconOverlayManager_Vtbl {
    pub const fn new<Identity: IShellIconOverlayManager_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetFileOverlayInfo<Identity: IShellIconOverlayManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszpath: windows_core::PCWSTR, dwattrib: u32, pindex: *mut i32, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellIconOverlayManager_Impl::GetFileOverlayInfo(this, core::mem::transmute(&pwszpath), core::mem::transmute_copy(&dwattrib), core::mem::transmute_copy(&pindex), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn GetReservedOverlayInfo<Identity: IShellIconOverlayManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszpath: windows_core::PCWSTR, dwattrib: u32, pindex: *mut i32, dwflags: u32, ireservedid: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellIconOverlayManager_Impl::GetReservedOverlayInfo(this, core::mem::transmute(&pwszpath), core::mem::transmute_copy(&dwattrib), core::mem::transmute_copy(&pindex), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&ireservedid)).into()
            }
        }
        unsafe extern "system" fn RefreshOverlayImages<Identity: IShellIconOverlayManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellIconOverlayManager_Impl::RefreshOverlayImages(this, core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn LoadNonloadedOverlayIdentifiers<Identity: IShellIconOverlayManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellIconOverlayManager_Impl::LoadNonloadedOverlayIdentifiers(this).into()
            }
        }
        unsafe extern "system" fn OverlayIndexFromImageIndex<Identity: IShellIconOverlayManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iimage: i32, piindex: *mut i32, fadd: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellIconOverlayManager_Impl::OverlayIndexFromImageIndex(this, core::mem::transmute_copy(&iimage), core::mem::transmute_copy(&piindex), core::mem::transmute_copy(&fadd)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetFileOverlayInfo: GetFileOverlayInfo::<Identity, OFFSET>,
            GetReservedOverlayInfo: GetReservedOverlayInfo::<Identity, OFFSET>,
            RefreshOverlayImages: RefreshOverlayImages::<Identity, OFFSET>,
            LoadNonloadedOverlayIdentifiers: LoadNonloadedOverlayIdentifiers::<Identity, OFFSET>,
            OverlayIndexFromImageIndex: OverlayIndexFromImageIndex::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellIconOverlayManager as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellIconOverlayManager {}
windows_core::imp::define_interface!(IShellImageData, IShellImageData_Vtbl, 0xbfdeec12_8040_4403_a5ea_9e07dafcf530);
windows_core::imp::interface_hierarchy!(IShellImageData, windows_core::IUnknown);
impl IShellImageData {
    pub unsafe fn Decode(&self, dwflags: u32, cxdesired: u32, cydesired: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Decode)(windows_core::Interface::as_raw(self), dwflags, cxdesired, cydesired).ok() }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn Draw(&self, hdc: super::super::Graphics::Gdi::HDC, prcdest: *mut super::super::Foundation::RECT, prcsrc: *mut super::super::Foundation::RECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Draw)(windows_core::Interface::as_raw(self), hdc, prcdest as _, prcsrc as _).ok() }
    }
    pub unsafe fn NextFrame(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).NextFrame)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn NextPage(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).NextPage)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn PrevPage(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PrevPage)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsTransparent(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsTransparent)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsAnimated(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsAnimated)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsVector(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsVector)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsMultipage(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsMultipage)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsEditable(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsEditable)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsPrintable(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsPrintable)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsDecoded(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsDecoded)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetCurrentPage(&self, pnpage: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetCurrentPage)(windows_core::Interface::as_raw(self), pnpage as _).ok() }
    }
    pub unsafe fn GetPageCount(&self, pcpages: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPageCount)(windows_core::Interface::as_raw(self), pcpages as _).ok() }
    }
    pub unsafe fn SelectPage(&self, ipage: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SelectPage)(windows_core::Interface::as_raw(self), ipage).ok() }
    }
    pub unsafe fn GetSize(&self, psize: *mut super::super::Foundation::SIZE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetSize)(windows_core::Interface::as_raw(self), psize as _).ok() }
    }
    pub unsafe fn GetRawDataFormat(&self, pdataformat: *mut windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetRawDataFormat)(windows_core::Interface::as_raw(self), pdataformat as _).ok() }
    }
    pub unsafe fn GetPixelFormat(&self, pformat: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPixelFormat)(windows_core::Interface::as_raw(self), pformat as _).ok() }
    }
    pub unsafe fn GetDelay(&self, pdwdelay: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDelay)(windows_core::Interface::as_raw(self), pdwdelay as _).ok() }
    }
    #[cfg(feature = "Win32_System_Com_StructuredStorage")]
    pub unsafe fn GetProperties(&self, dwmode: u32) -> windows_core::Result<super::super::System::Com::StructuredStorage::IPropertySetStorage> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProperties)(windows_core::Interface::as_raw(self), dwmode, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Rotate(&self, dwangle: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Rotate)(windows_core::Interface::as_raw(self), dwangle).ok() }
    }
    #[cfg(feature = "Win32_Graphics_GdiPlus")]
    pub unsafe fn Scale(&self, cx: u32, cy: u32, hints: super::super::Graphics::GdiPlus::InterpolationMode) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Scale)(windows_core::Interface::as_raw(self), cx, cy, hints).ok() }
    }
    pub unsafe fn DiscardEdit(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DiscardEdit)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_System_Com_StructuredStorage")]
    pub unsafe fn SetEncoderParams<P0>(&self, pbagenc: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::StructuredStorage::IPropertyBag>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetEncoderParams)(windows_core::Interface::as_raw(self), pbagenc.param().abi()).ok() }
    }
    pub unsafe fn DisplayName<P0>(&self, wszname: P0, cch: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).DisplayName)(windows_core::Interface::as_raw(self), wszname.param().abi(), cch).ok() }
    }
    pub unsafe fn GetResolution(&self, puresolutionx: *mut u32, puresolutiony: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetResolution)(windows_core::Interface::as_raw(self), puresolutionx as _, puresolutiony as _).ok() }
    }
    pub unsafe fn GetEncoderParams(&self, pguidfmt: *mut windows_core::GUID, ppencparams: *mut *mut u8) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetEncoderParams)(windows_core::Interface::as_raw(self), pguidfmt as _, ppencparams as _).ok() }
    }
    pub unsafe fn RegisterAbort<P0>(&self, pabort: P0) -> windows_core::Result<IShellImageDataAbort>
    where
        P0: windows_core::Param<IShellImageDataAbort>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RegisterAbort)(windows_core::Interface::as_raw(self), pabort.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CloneFrame(&self, ppimg: *mut *mut u8) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CloneFrame)(windows_core::Interface::as_raw(self), ppimg as _).ok() }
    }
    pub unsafe fn ReplaceFrame(&self, pimg: *mut u8) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReplaceFrame)(windows_core::Interface::as_raw(self), pimg as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellImageData_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Decode: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub Draw: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HDC, *mut super::super::Foundation::RECT, *mut super::super::Foundation::RECT) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    Draw: usize,
    pub NextFrame: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub NextPage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PrevPage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsTransparent: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsAnimated: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsVector: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsMultipage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsEditable: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsPrintable: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsDecoded: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCurrentPage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetPageCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SelectPage: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::SIZE) -> windows_core::HRESULT,
    pub GetRawDataFormat: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub GetPixelFormat: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetDelay: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com_StructuredStorage")]
    pub GetProperties: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com_StructuredStorage"))]
    GetProperties: usize,
    pub Rotate: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_GdiPlus")]
    pub Scale: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, super::super::Graphics::GdiPlus::InterpolationMode) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_GdiPlus"))]
    Scale: usize,
    pub DiscardEdit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com_StructuredStorage")]
    pub SetEncoderParams: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com_StructuredStorage"))]
    SetEncoderParams: usize,
    pub DisplayName: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetResolution: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetEncoderParams: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID, *mut *mut u8) -> windows_core::HRESULT,
    pub RegisterAbort: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CloneFrame: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut u8) -> windows_core::HRESULT,
    pub ReplaceFrame: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u8) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_Graphics_GdiPlus", feature = "Win32_System_Com_StructuredStorage"))]
pub trait IShellImageData_Impl: windows_core::IUnknownImpl {
    fn Decode(&self, dwflags: u32, cxdesired: u32, cydesired: u32) -> windows_core::Result<()>;
    fn Draw(&self, hdc: super::super::Graphics::Gdi::HDC, prcdest: *mut super::super::Foundation::RECT, prcsrc: *mut super::super::Foundation::RECT) -> windows_core::Result<()>;
    fn NextFrame(&self) -> windows_core::Result<()>;
    fn NextPage(&self) -> windows_core::Result<()>;
    fn PrevPage(&self) -> windows_core::Result<()>;
    fn IsTransparent(&self) -> windows_core::Result<()>;
    fn IsAnimated(&self) -> windows_core::Result<()>;
    fn IsVector(&self) -> windows_core::Result<()>;
    fn IsMultipage(&self) -> windows_core::Result<()>;
    fn IsEditable(&self) -> windows_core::Result<()>;
    fn IsPrintable(&self) -> windows_core::Result<()>;
    fn IsDecoded(&self) -> windows_core::Result<()>;
    fn GetCurrentPage(&self, pnpage: *mut u32) -> windows_core::Result<()>;
    fn GetPageCount(&self, pcpages: *mut u32) -> windows_core::Result<()>;
    fn SelectPage(&self, ipage: u32) -> windows_core::Result<()>;
    fn GetSize(&self, psize: *mut super::super::Foundation::SIZE) -> windows_core::Result<()>;
    fn GetRawDataFormat(&self, pdataformat: *mut windows_core::GUID) -> windows_core::Result<()>;
    fn GetPixelFormat(&self, pformat: *mut u32) -> windows_core::Result<()>;
    fn GetDelay(&self, pdwdelay: *mut u32) -> windows_core::Result<()>;
    fn GetProperties(&self, dwmode: u32) -> windows_core::Result<super::super::System::Com::StructuredStorage::IPropertySetStorage>;
    fn Rotate(&self, dwangle: u32) -> windows_core::Result<()>;
    fn Scale(&self, cx: u32, cy: u32, hints: super::super::Graphics::GdiPlus::InterpolationMode) -> windows_core::Result<()>;
    fn DiscardEdit(&self) -> windows_core::Result<()>;
    fn SetEncoderParams(&self, pbagenc: windows_core::Ref<super::super::System::Com::StructuredStorage::IPropertyBag>) -> windows_core::Result<()>;
    fn DisplayName(&self, wszname: &windows_core::PCWSTR, cch: u32) -> windows_core::Result<()>;
    fn GetResolution(&self, puresolutionx: *mut u32, puresolutiony: *mut u32) -> windows_core::Result<()>;
    fn GetEncoderParams(&self, pguidfmt: *mut windows_core::GUID, ppencparams: *mut *mut u8) -> windows_core::Result<()>;
    fn RegisterAbort(&self, pabort: windows_core::Ref<IShellImageDataAbort>) -> windows_core::Result<IShellImageDataAbort>;
    fn CloneFrame(&self, ppimg: *mut *mut u8) -> windows_core::Result<()>;
    fn ReplaceFrame(&self, pimg: *mut u8) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_Graphics_GdiPlus", feature = "Win32_System_Com_StructuredStorage"))]
impl IShellImageData_Vtbl {
    pub const fn new<Identity: IShellImageData_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Decode<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32, cxdesired: u32, cydesired: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::Decode(this, core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&cxdesired), core::mem::transmute_copy(&cydesired)).into()
            }
        }
        unsafe extern "system" fn Draw<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hdc: super::super::Graphics::Gdi::HDC, prcdest: *mut super::super::Foundation::RECT, prcsrc: *mut super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::Draw(this, core::mem::transmute_copy(&hdc), core::mem::transmute_copy(&prcdest), core::mem::transmute_copy(&prcsrc)).into()
            }
        }
        unsafe extern "system" fn NextFrame<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::NextFrame(this).into()
            }
        }
        unsafe extern "system" fn NextPage<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::NextPage(this).into()
            }
        }
        unsafe extern "system" fn PrevPage<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::PrevPage(this).into()
            }
        }
        unsafe extern "system" fn IsTransparent<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::IsTransparent(this).into()
            }
        }
        unsafe extern "system" fn IsAnimated<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::IsAnimated(this).into()
            }
        }
        unsafe extern "system" fn IsVector<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::IsVector(this).into()
            }
        }
        unsafe extern "system" fn IsMultipage<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::IsMultipage(this).into()
            }
        }
        unsafe extern "system" fn IsEditable<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::IsEditable(this).into()
            }
        }
        unsafe extern "system" fn IsPrintable<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::IsPrintable(this).into()
            }
        }
        unsafe extern "system" fn IsDecoded<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::IsDecoded(this).into()
            }
        }
        unsafe extern "system" fn GetCurrentPage<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnpage: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::GetCurrentPage(this, core::mem::transmute_copy(&pnpage)).into()
            }
        }
        unsafe extern "system" fn GetPageCount<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcpages: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::GetPageCount(this, core::mem::transmute_copy(&pcpages)).into()
            }
        }
        unsafe extern "system" fn SelectPage<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ipage: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::SelectPage(this, core::mem::transmute_copy(&ipage)).into()
            }
        }
        unsafe extern "system" fn GetSize<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psize: *mut super::super::Foundation::SIZE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::GetSize(this, core::mem::transmute_copy(&psize)).into()
            }
        }
        unsafe extern "system" fn GetRawDataFormat<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdataformat: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::GetRawDataFormat(this, core::mem::transmute_copy(&pdataformat)).into()
            }
        }
        unsafe extern "system" fn GetPixelFormat<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pformat: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::GetPixelFormat(this, core::mem::transmute_copy(&pformat)).into()
            }
        }
        unsafe extern "system" fn GetDelay<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwdelay: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::GetDelay(this, core::mem::transmute_copy(&pdwdelay)).into()
            }
        }
        unsafe extern "system" fn GetProperties<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwmode: u32, pppropset: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellImageData_Impl::GetProperties(this, core::mem::transmute_copy(&dwmode)) {
                    Ok(ok__) => {
                        pppropset.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Rotate<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwangle: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::Rotate(this, core::mem::transmute_copy(&dwangle)).into()
            }
        }
        unsafe extern "system" fn Scale<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cx: u32, cy: u32, hints: super::super::Graphics::GdiPlus::InterpolationMode) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::Scale(this, core::mem::transmute_copy(&cx), core::mem::transmute_copy(&cy), core::mem::transmute_copy(&hints)).into()
            }
        }
        unsafe extern "system" fn DiscardEdit<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::DiscardEdit(this).into()
            }
        }
        unsafe extern "system" fn SetEncoderParams<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbagenc: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::SetEncoderParams(this, core::mem::transmute_copy(&pbagenc)).into()
            }
        }
        unsafe extern "system" fn DisplayName<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, wszname: windows_core::PCWSTR, cch: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::DisplayName(this, core::mem::transmute(&wszname), core::mem::transmute_copy(&cch)).into()
            }
        }
        unsafe extern "system" fn GetResolution<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, puresolutionx: *mut u32, puresolutiony: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::GetResolution(this, core::mem::transmute_copy(&puresolutionx), core::mem::transmute_copy(&puresolutiony)).into()
            }
        }
        unsafe extern "system" fn GetEncoderParams<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguidfmt: *mut windows_core::GUID, ppencparams: *mut *mut u8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::GetEncoderParams(this, core::mem::transmute_copy(&pguidfmt), core::mem::transmute_copy(&ppencparams)).into()
            }
        }
        unsafe extern "system" fn RegisterAbort<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pabort: *mut core::ffi::c_void, ppabortprev: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellImageData_Impl::RegisterAbort(this, core::mem::transmute_copy(&pabort)) {
                    Ok(ok__) => {
                        ppabortprev.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CloneFrame<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppimg: *mut *mut u8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::CloneFrame(this, core::mem::transmute_copy(&ppimg)).into()
            }
        }
        unsafe extern "system" fn ReplaceFrame<Identity: IShellImageData_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pimg: *mut u8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageData_Impl::ReplaceFrame(this, core::mem::transmute_copy(&pimg)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Decode: Decode::<Identity, OFFSET>,
            Draw: Draw::<Identity, OFFSET>,
            NextFrame: NextFrame::<Identity, OFFSET>,
            NextPage: NextPage::<Identity, OFFSET>,
            PrevPage: PrevPage::<Identity, OFFSET>,
            IsTransparent: IsTransparent::<Identity, OFFSET>,
            IsAnimated: IsAnimated::<Identity, OFFSET>,
            IsVector: IsVector::<Identity, OFFSET>,
            IsMultipage: IsMultipage::<Identity, OFFSET>,
            IsEditable: IsEditable::<Identity, OFFSET>,
            IsPrintable: IsPrintable::<Identity, OFFSET>,
            IsDecoded: IsDecoded::<Identity, OFFSET>,
            GetCurrentPage: GetCurrentPage::<Identity, OFFSET>,
            GetPageCount: GetPageCount::<Identity, OFFSET>,
            SelectPage: SelectPage::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
            GetRawDataFormat: GetRawDataFormat::<Identity, OFFSET>,
            GetPixelFormat: GetPixelFormat::<Identity, OFFSET>,
            GetDelay: GetDelay::<Identity, OFFSET>,
            GetProperties: GetProperties::<Identity, OFFSET>,
            Rotate: Rotate::<Identity, OFFSET>,
            Scale: Scale::<Identity, OFFSET>,
            DiscardEdit: DiscardEdit::<Identity, OFFSET>,
            SetEncoderParams: SetEncoderParams::<Identity, OFFSET>,
            DisplayName: DisplayName::<Identity, OFFSET>,
            GetResolution: GetResolution::<Identity, OFFSET>,
            GetEncoderParams: GetEncoderParams::<Identity, OFFSET>,
            RegisterAbort: RegisterAbort::<Identity, OFFSET>,
            CloneFrame: CloneFrame::<Identity, OFFSET>,
            ReplaceFrame: ReplaceFrame::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellImageData as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_Graphics_GdiPlus", feature = "Win32_System_Com_StructuredStorage"))]
impl windows_core::RuntimeName for IShellImageData {}
windows_core::imp::define_interface!(IShellImageDataAbort, IShellImageDataAbort_Vtbl, 0x53fb8e58_50c0_4003_b4aa_0c8df28e7f3a);
windows_core::imp::interface_hierarchy!(IShellImageDataAbort, windows_core::IUnknown);
impl IShellImageDataAbort {
    pub unsafe fn QueryAbort(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).QueryAbort)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellImageDataAbort_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub QueryAbort: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IShellImageDataAbort_Impl: windows_core::IUnknownImpl {
    fn QueryAbort(&self) -> windows_core::Result<()>;
}
impl IShellImageDataAbort_Vtbl {
    pub const fn new<Identity: IShellImageDataAbort_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn QueryAbort<Identity: IShellImageDataAbort_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellImageDataAbort_Impl::QueryAbort(this).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), QueryAbort: QueryAbort::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellImageDataAbort as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellImageDataAbort {}
windows_core::imp::define_interface!(IShellImageDataFactory, IShellImageDataFactory_Vtbl, 0x9be8ed5c_edab_4d75_90f3_bd5bdbb21c82);
windows_core::imp::interface_hierarchy!(IShellImageDataFactory, windows_core::IUnknown);
impl IShellImageDataFactory {
    pub unsafe fn CreateIShellImageData(&self) -> windows_core::Result<IShellImageData> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateIShellImageData)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CreateImageFromFile<P0>(&self, pszpath: P0) -> windows_core::Result<IShellImageData>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateImageFromFile)(windows_core::Interface::as_raw(self), pszpath.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn CreateImageFromStream<P0>(&self, pstream: P0) -> windows_core::Result<IShellImageData>
    where
        P0: windows_core::Param<super::super::System::Com::IStream>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateImageFromStream)(windows_core::Interface::as_raw(self), pstream.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetDataFormatFromPath<P0>(&self, pszpath: P0) -> windows_core::Result<windows_core::GUID>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDataFormatFromPath)(windows_core::Interface::as_raw(self), pszpath.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellImageDataFactory_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CreateIShellImageData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateImageFromFile: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub CreateImageFromStream: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    CreateImageFromStream: usize,
    pub GetDataFormatFromPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut windows_core::GUID) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IShellImageDataFactory_Impl: windows_core::IUnknownImpl {
    fn CreateIShellImageData(&self) -> windows_core::Result<IShellImageData>;
    fn CreateImageFromFile(&self, pszpath: &windows_core::PCWSTR) -> windows_core::Result<IShellImageData>;
    fn CreateImageFromStream(&self, pstream: windows_core::Ref<super::super::System::Com::IStream>) -> windows_core::Result<IShellImageData>;
    fn GetDataFormatFromPath(&self, pszpath: &windows_core::PCWSTR) -> windows_core::Result<windows_core::GUID>;
}
#[cfg(feature = "Win32_System_Com")]
impl IShellImageDataFactory_Vtbl {
    pub const fn new<Identity: IShellImageDataFactory_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CreateIShellImageData<Identity: IShellImageDataFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppshimg: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellImageDataFactory_Impl::CreateIShellImageData(this) {
                    Ok(ok__) => {
                        ppshimg.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateImageFromFile<Identity: IShellImageDataFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR, ppshimg: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellImageDataFactory_Impl::CreateImageFromFile(this, core::mem::transmute(&pszpath)) {
                    Ok(ok__) => {
                        ppshimg.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CreateImageFromStream<Identity: IShellImageDataFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstream: *mut core::ffi::c_void, ppshimg: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellImageDataFactory_Impl::CreateImageFromStream(this, core::mem::transmute_copy(&pstream)) {
                    Ok(ok__) => {
                        ppshimg.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDataFormatFromPath<Identity: IShellImageDataFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpath: windows_core::PCWSTR, pdataformat: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellImageDataFactory_Impl::GetDataFormatFromPath(this, core::mem::transmute(&pszpath)) {
                    Ok(ok__) => {
                        pdataformat.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateIShellImageData: CreateIShellImageData::<Identity, OFFSET>,
            CreateImageFromFile: CreateImageFromFile::<Identity, OFFSET>,
            CreateImageFromStream: CreateImageFromStream::<Identity, OFFSET>,
            GetDataFormatFromPath: GetDataFormatFromPath::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellImageDataFactory as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IShellImageDataFactory {}
windows_core::imp::define_interface!(IShellItem, IShellItem_Vtbl, 0x43826d1e_e718_42ee_bc55_a1e261c37bfe);
windows_core::imp::interface_hierarchy!(IShellItem, windows_core::IUnknown);
impl IShellItem {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn BindToHandler<P0, T>(&self, pbc: P0, bhid: *const windows_core::GUID) -> windows_core::Result<T>
    where
        P0: windows_core::Param<super::super::System::Com::IBindCtx>,
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).BindToHandler)(windows_core::Interface::as_raw(self), pbc.param().abi(), bhid, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetParent(&self) -> windows_core::Result<IShellItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetParent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetDisplayName(&self, sigdnname: SIGDN) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDisplayName)(windows_core::Interface::as_raw(self), sigdnname, &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_System_SystemServices")]
    pub unsafe fn GetAttributes(&self, sfgaomask: super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::Result<super::super::System::SystemServices::SFGAO_FLAGS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAttributes)(windows_core::Interface::as_raw(self), sfgaomask, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Compare<P0>(&self, psi: P0, hint: u32) -> windows_core::Result<i32>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Compare)(windows_core::Interface::as_raw(self), psi.param().abi(), hint, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellItem_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub BindToHandler: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const windows_core::GUID, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    BindToHandler: usize,
    pub GetParent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetDisplayName: unsafe extern "system" fn(*mut core::ffi::c_void, SIGDN, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_SystemServices")]
    pub GetAttributes: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::SystemServices::SFGAO_FLAGS, *mut super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_SystemServices"))]
    GetAttributes: usize,
    pub Compare: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, *mut i32) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices"))]
pub trait IShellItem_Impl: windows_core::IUnknownImpl {
    fn BindToHandler(&self, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>, bhid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetParent(&self) -> windows_core::Result<IShellItem>;
    fn GetDisplayName(&self, sigdnname: SIGDN) -> windows_core::Result<windows_core::PWSTR>;
    fn GetAttributes(&self, sfgaomask: super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::Result<super::super::System::SystemServices::SFGAO_FLAGS>;
    fn Compare(&self, psi: windows_core::Ref<IShellItem>, hint: u32) -> windows_core::Result<i32>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices"))]
impl IShellItem_Vtbl {
    pub const fn new<Identity: IShellItem_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn BindToHandler<Identity: IShellItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void, bhid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItem_Impl::BindToHandler(this, core::mem::transmute_copy(&pbc), core::mem::transmute_copy(&bhid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetParent<Identity: IShellItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem_Impl::GetParent(this) {
                    Ok(ok__) => {
                        ppsi.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDisplayName<Identity: IShellItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sigdnname: SIGDN, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem_Impl::GetDisplayName(this, core::mem::transmute_copy(&sigdnname)) {
                    Ok(ok__) => {
                        ppszname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetAttributes<Identity: IShellItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, sfgaomask: super::super::System::SystemServices::SFGAO_FLAGS, psfgaoattribs: *mut super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem_Impl::GetAttributes(this, core::mem::transmute_copy(&sfgaomask)) {
                    Ok(ok__) => {
                        psfgaoattribs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Compare<Identity: IShellItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, hint: u32, piorder: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem_Impl::Compare(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&hint)) {
                    Ok(ok__) => {
                        piorder.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            BindToHandler: BindToHandler::<Identity, OFFSET>,
            GetParent: GetParent::<Identity, OFFSET>,
            GetDisplayName: GetDisplayName::<Identity, OFFSET>,
            GetAttributes: GetAttributes::<Identity, OFFSET>,
            Compare: Compare::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItem as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices"))]
impl windows_core::RuntimeName for IShellItem {}
windows_core::imp::define_interface!(IShellItem2, IShellItem2_Vtbl, 0x7e9fb0d3_919f_4307_ab2e_9b1860310c93);
impl core::ops::Deref for IShellItem2 {
    type Target = IShellItem;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IShellItem2, windows_core::IUnknown, IShellItem);
impl IShellItem2 {
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn GetPropertyStore<T>(&self, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetPropertyStore)(windows_core::Interface::as_raw(self), flags, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn GetPropertyStoreWithCreateObject<P1, T>(&self, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, punkcreateobject: P1) -> windows_core::Result<T>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetPropertyStoreWithCreateObject)(windows_core::Interface::as_raw(self), flags, punkcreateobject.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn GetPropertyStoreForKeys<T>(&self, rgkeys: &[super::super::Foundation::PROPERTYKEY], flags: PropertiesSystem::GETPROPERTYSTOREFLAGS) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetPropertyStoreForKeys)(windows_core::Interface::as_raw(self), core::mem::transmute(rgkeys.as_ptr()), rgkeys.len().try_into().unwrap(), flags, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetPropertyDescriptionList<T>(&self, keytype: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetPropertyDescriptionList)(windows_core::Interface::as_raw(self), keytype, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn Update<P0>(&self, pbc: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IBindCtx>,
    {
        unsafe { (windows_core::Interface::vtable(self).Update)(windows_core::Interface::as_raw(self), pbc.param().abi()).ok() }
    }
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
    pub unsafe fn GetProperty(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Com::StructuredStorage::PROPVARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProperty)(windows_core::Interface::as_raw(self), key, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetCLSID(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCLSID)(windows_core::Interface::as_raw(self), key, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFileTime(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::Foundation::FILETIME> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFileTime)(windows_core::Interface::as_raw(self), key, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetInt32(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetInt32)(windows_core::Interface::as_raw(self), key, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetString(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetString)(windows_core::Interface::as_raw(self), key, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetUInt32(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetUInt32)(windows_core::Interface::as_raw(self), key, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetUInt64(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetUInt64)(windows_core::Interface::as_raw(self), key, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetBool(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBool)(windows_core::Interface::as_raw(self), key, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellItem2_Vtbl {
    pub base__: IShellItem_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub GetPropertyStore: unsafe extern "system" fn(*mut core::ffi::c_void, PropertiesSystem::GETPROPERTYSTOREFLAGS, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    GetPropertyStore: usize,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub GetPropertyStoreWithCreateObject: unsafe extern "system" fn(*mut core::ffi::c_void, PropertiesSystem::GETPROPERTYSTOREFLAGS, *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    GetPropertyStoreWithCreateObject: usize,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub GetPropertyStoreForKeys: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, u32, PropertiesSystem::GETPROPERTYSTOREFLAGS, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    GetPropertyStoreForKeys: usize,
    pub GetPropertyDescriptionList: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub Update: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    Update: usize,
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
    pub GetProperty: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant")))]
    GetProperty: usize,
    pub GetCLSID: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub GetFileTime: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT,
    pub GetInt32: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut i32) -> windows_core::HRESULT,
    pub GetString: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetUInt32: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut u32) -> windows_core::HRESULT,
    pub GetUInt64: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut u64) -> windows_core::HRESULT,
    pub GetBool: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut windows_core::BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_SystemServices", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait IShellItem2_Impl: IShellItem_Impl {
    fn GetPropertyStore(&self, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPropertyStoreWithCreateObject(&self, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, punkcreateobject: windows_core::Ref<windows_core::IUnknown>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPropertyStoreForKeys(&self, rgkeys: *const super::super::Foundation::PROPERTYKEY, ckeys: u32, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPropertyDescriptionList(&self, keytype: *const super::super::Foundation::PROPERTYKEY, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn Update(&self, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>) -> windows_core::Result<()>;
    fn GetProperty(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Com::StructuredStorage::PROPVARIANT>;
    fn GetCLSID(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<windows_core::GUID>;
    fn GetFileTime(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::Foundation::FILETIME>;
    fn GetInt32(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<i32>;
    fn GetString(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<windows_core::PWSTR>;
    fn GetUInt32(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<u32>;
    fn GetUInt64(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<u64>;
    fn GetBool(&self, key: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<windows_core::BOOL>;
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_SystemServices", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl IShellItem2_Vtbl {
    pub const fn new<Identity: IShellItem2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetPropertyStore<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItem2_Impl::GetPropertyStore(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetPropertyStoreWithCreateObject<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, punkcreateobject: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItem2_Impl::GetPropertyStoreWithCreateObject(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&punkcreateobject), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetPropertyStoreForKeys<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgkeys: *const super::super::Foundation::PROPERTYKEY, ckeys: u32, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItem2_Impl::GetPropertyStoreForKeys(this, core::mem::transmute_copy(&rgkeys), core::mem::transmute_copy(&ckeys), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetPropertyDescriptionList<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, keytype: *const super::super::Foundation::PROPERTYKEY, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItem2_Impl::GetPropertyDescriptionList(this, core::mem::transmute_copy(&keytype), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn Update<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItem2_Impl::Update(this, core::mem::transmute_copy(&pbc)).into()
            }
        }
        unsafe extern "system" fn GetProperty<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, ppropvar: *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem2_Impl::GetProperty(this, core::mem::transmute_copy(&key)) {
                    Ok(ok__) => {
                        ppropvar.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCLSID<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, pclsid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem2_Impl::GetCLSID(this, core::mem::transmute_copy(&key)) {
                    Ok(ok__) => {
                        pclsid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFileTime<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, pft: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem2_Impl::GetFileTime(this, core::mem::transmute_copy(&key)) {
                    Ok(ok__) => {
                        pft.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetInt32<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, pi: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem2_Impl::GetInt32(this, core::mem::transmute_copy(&key)) {
                    Ok(ok__) => {
                        pi.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetString<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, ppsz: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem2_Impl::GetString(this, core::mem::transmute_copy(&key)) {
                    Ok(ok__) => {
                        ppsz.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetUInt32<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, pui: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem2_Impl::GetUInt32(this, core::mem::transmute_copy(&key)) {
                    Ok(ok__) => {
                        pui.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetUInt64<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, pull: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem2_Impl::GetUInt64(this, core::mem::transmute_copy(&key)) {
                    Ok(ok__) => {
                        pull.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetBool<Identity: IShellItem2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, key: *const super::super::Foundation::PROPERTYKEY, pf: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItem2_Impl::GetBool(this, core::mem::transmute_copy(&key)) {
                    Ok(ok__) => {
                        pf.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IShellItem_Vtbl::new::<Identity, OFFSET>(),
            GetPropertyStore: GetPropertyStore::<Identity, OFFSET>,
            GetPropertyStoreWithCreateObject: GetPropertyStoreWithCreateObject::<Identity, OFFSET>,
            GetPropertyStoreForKeys: GetPropertyStoreForKeys::<Identity, OFFSET>,
            GetPropertyDescriptionList: GetPropertyDescriptionList::<Identity, OFFSET>,
            Update: Update::<Identity, OFFSET>,
            GetProperty: GetProperty::<Identity, OFFSET>,
            GetCLSID: GetCLSID::<Identity, OFFSET>,
            GetFileTime: GetFileTime::<Identity, OFFSET>,
            GetInt32: GetInt32::<Identity, OFFSET>,
            GetString: GetString::<Identity, OFFSET>,
            GetUInt32: GetUInt32::<Identity, OFFSET>,
            GetUInt64: GetUInt64::<Identity, OFFSET>,
            GetBool: GetBool::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItem2 as windows_core::Interface>::IID || iid == &<IShellItem as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_SystemServices", feature = "Win32_System_Variant", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for IShellItem2 {}
windows_core::imp::define_interface!(IShellItemArray, IShellItemArray_Vtbl, 0xb63ea76d_1f85_456f_a19c_48159efa858b);
windows_core::imp::interface_hierarchy!(IShellItemArray, windows_core::IUnknown);
impl IShellItemArray {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn BindToHandler<P0, T>(&self, pbc: P0, bhid: *const windows_core::GUID) -> windows_core::Result<T>
    where
        P0: windows_core::Param<super::super::System::Com::IBindCtx>,
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).BindToHandler)(windows_core::Interface::as_raw(self), pbc.param().abi(), bhid, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn GetPropertyStore<T>(&self, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetPropertyStore)(windows_core::Interface::as_raw(self), flags, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetPropertyDescriptionList<T>(&self, keytype: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetPropertyDescriptionList)(windows_core::Interface::as_raw(self), keytype, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_System_SystemServices")]
    pub unsafe fn GetAttributes(&self, attribflags: SIATTRIBFLAGS, sfgaomask: super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::Result<super::super::System::SystemServices::SFGAO_FLAGS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAttributes)(windows_core::Interface::as_raw(self), attribflags, sfgaomask, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetItemAt(&self, dwindex: u32) -> windows_core::Result<IShellItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemAt)(windows_core::Interface::as_raw(self), dwindex, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn EnumItems(&self) -> windows_core::Result<IEnumShellItems> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumItems)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellItemArray_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub BindToHandler: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const windows_core::GUID, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    BindToHandler: usize,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub GetPropertyStore: unsafe extern "system" fn(*mut core::ffi::c_void, PropertiesSystem::GETPROPERTYSTOREFLAGS, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    GetPropertyStore: usize,
    pub GetPropertyDescriptionList: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_SystemServices")]
    pub GetAttributes: unsafe extern "system" fn(*mut core::ffi::c_void, SIATTRIBFLAGS, super::super::System::SystemServices::SFGAO_FLAGS, *mut super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_SystemServices"))]
    GetAttributes: usize,
    pub GetCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetItemAt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices", feature = "Win32_UI_Shell_PropertiesSystem"))]
pub trait IShellItemArray_Impl: windows_core::IUnknownImpl {
    fn BindToHandler(&self, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>, bhid: *const windows_core::GUID, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPropertyStore(&self, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetPropertyDescriptionList(&self, keytype: *const super::super::Foundation::PROPERTYKEY, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetAttributes(&self, attribflags: SIATTRIBFLAGS, sfgaomask: super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::Result<super::super::System::SystemServices::SFGAO_FLAGS>;
    fn GetCount(&self) -> windows_core::Result<u32>;
    fn GetItemAt(&self, dwindex: u32) -> windows_core::Result<IShellItem>;
    fn EnumItems(&self) -> windows_core::Result<IEnumShellItems>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl IShellItemArray_Vtbl {
    pub const fn new<Identity: IShellItemArray_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn BindToHandler<Identity: IShellItemArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void, bhid: *const windows_core::GUID, riid: *const windows_core::GUID, ppvout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItemArray_Impl::BindToHandler(this, core::mem::transmute_copy(&pbc), core::mem::transmute_copy(&bhid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppvout)).into()
            }
        }
        unsafe extern "system" fn GetPropertyStore<Identity: IShellItemArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: PropertiesSystem::GETPROPERTYSTOREFLAGS, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItemArray_Impl::GetPropertyStore(this, core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetPropertyDescriptionList<Identity: IShellItemArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, keytype: *const super::super::Foundation::PROPERTYKEY, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItemArray_Impl::GetPropertyDescriptionList(this, core::mem::transmute_copy(&keytype), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetAttributes<Identity: IShellItemArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, attribflags: SIATTRIBFLAGS, sfgaomask: super::super::System::SystemServices::SFGAO_FLAGS, psfgaoattribs: *mut super::super::System::SystemServices::SFGAO_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItemArray_Impl::GetAttributes(this, core::mem::transmute_copy(&attribflags), core::mem::transmute_copy(&sfgaomask)) {
                    Ok(ok__) => {
                        psfgaoattribs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCount<Identity: IShellItemArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwnumitems: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItemArray_Impl::GetCount(this) {
                    Ok(ok__) => {
                        pdwnumitems.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItemAt<Identity: IShellItemArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwindex: u32, ppsi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItemArray_Impl::GetItemAt(this, core::mem::transmute_copy(&dwindex)) {
                    Ok(ok__) => {
                        ppsi.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumItems<Identity: IShellItemArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenumshellitems: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItemArray_Impl::EnumItems(this) {
                    Ok(ok__) => {
                        ppenumshellitems.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            BindToHandler: BindToHandler::<Identity, OFFSET>,
            GetPropertyStore: GetPropertyStore::<Identity, OFFSET>,
            GetPropertyDescriptionList: GetPropertyDescriptionList::<Identity, OFFSET>,
            GetAttributes: GetAttributes::<Identity, OFFSET>,
            GetCount: GetCount::<Identity, OFFSET>,
            GetItemAt: GetItemAt::<Identity, OFFSET>,
            EnumItems: EnumItems::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItemArray as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_SystemServices", feature = "Win32_UI_Shell_PropertiesSystem"))]
impl windows_core::RuntimeName for IShellItemArray {}
windows_core::imp::define_interface!(IShellItemFilter, IShellItemFilter_Vtbl, 0x2659b475_eeb8_48b7_8f07_b378810f48cf);
windows_core::imp::interface_hierarchy!(IShellItemFilter, windows_core::IUnknown);
impl IShellItemFilter {
    pub unsafe fn IncludeItem<P0>(&self, psi: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).IncludeItem)(windows_core::Interface::as_raw(self), psi.param().abi()).ok() }
    }
    pub unsafe fn GetEnumFlagsForItem<P0>(&self, psi: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEnumFlagsForItem)(windows_core::Interface::as_raw(self), psi.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellItemFilter_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub IncludeItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetEnumFlagsForItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait IShellItemFilter_Impl: windows_core::IUnknownImpl {
    fn IncludeItem(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn GetEnumFlagsForItem(&self, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<u32>;
}
impl IShellItemFilter_Vtbl {
    pub const fn new<Identity: IShellItemFilter_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn IncludeItem<Identity: IShellItemFilter_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItemFilter_Impl::IncludeItem(this, core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn GetEnumFlagsForItem<Identity: IShellItemFilter_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pgrfflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItemFilter_Impl::GetEnumFlagsForItem(this, core::mem::transmute_copy(&psi)) {
                    Ok(ok__) => {
                        pgrfflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IncludeItem: IncludeItem::<Identity, OFFSET>,
            GetEnumFlagsForItem: GetEnumFlagsForItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItemFilter as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellItemFilter {}
windows_core::imp::define_interface!(IShellItemImageFactory, IShellItemImageFactory_Vtbl, 0xbcc18b79_ba16_442f_80c4_8a59c30c463b);
windows_core::imp::interface_hierarchy!(IShellItemImageFactory, windows_core::IUnknown);
impl IShellItemImageFactory {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetImage(&self, size: super::super::Foundation::SIZE, flags: SIIGBF) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetImage)(windows_core::Interface::as_raw(self), core::mem::transmute(size), flags, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellItemImageFactory_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetImage: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::SIZE, SIIGBF, *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetImage: usize,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IShellItemImageFactory_Impl: windows_core::IUnknownImpl {
    fn GetImage(&self, size: &super::super::Foundation::SIZE, flags: SIIGBF) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IShellItemImageFactory_Vtbl {
    pub const fn new<Identity: IShellItemImageFactory_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetImage<Identity: IShellItemImageFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, size: super::super::Foundation::SIZE, flags: SIIGBF, phbm: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItemImageFactory_Impl::GetImage(this, core::mem::transmute(&size), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        phbm.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetImage: GetImage::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItemImageFactory as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IShellItemImageFactory {}
windows_core::imp::define_interface!(IShellItemResources, IShellItemResources_Vtbl, 0xff5693be_2ce0_4d48_b5c5_40817d1acdb9);
windows_core::imp::interface_hierarchy!(IShellItemResources, windows_core::IUnknown);
impl IShellItemResources {
    pub unsafe fn GetAttributes(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetAttributes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetSize(&self) -> windows_core::Result<u64> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTimes(&self, pftcreation: *mut super::super::Foundation::FILETIME, pftwrite: *mut super::super::Foundation::FILETIME, pftaccess: *mut super::super::Foundation::FILETIME) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetTimes)(windows_core::Interface::as_raw(self), pftcreation as _, pftwrite as _, pftaccess as _).ok() }
    }
    pub unsafe fn SetTimes(&self, pftcreation: *const super::super::Foundation::FILETIME, pftwrite: *const super::super::Foundation::FILETIME, pftaccess: *const super::super::Foundation::FILETIME) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTimes)(windows_core::Interface::as_raw(self), pftcreation, pftwrite, pftaccess).ok() }
    }
    pub unsafe fn GetResourceDescription(&self, pcsir: *const SHELL_ITEM_RESOURCE) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetResourceDescription)(windows_core::Interface::as_raw(self), pcsir, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn EnumResources(&self) -> windows_core::Result<IEnumResources> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumResources)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SupportsResource(&self, pcsir: *const SHELL_ITEM_RESOURCE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SupportsResource)(windows_core::Interface::as_raw(self), pcsir).ok() }
    }
    pub unsafe fn OpenResource<T>(&self, pcsir: *const SHELL_ITEM_RESOURCE) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).OpenResource)(windows_core::Interface::as_raw(self), pcsir, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn CreateResource<T>(&self, pcsir: *const SHELL_ITEM_RESOURCE) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).CreateResource)(windows_core::Interface::as_raw(self), pcsir, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn MarkForDelete(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MarkForDelete)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellItemResources_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetAttributes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u64) -> windows_core::HRESULT,
    pub GetTimes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::FILETIME, *mut super::super::Foundation::FILETIME, *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT,
    pub SetTimes: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::FILETIME, *const super::super::Foundation::FILETIME, *const super::super::Foundation::FILETIME) -> windows_core::HRESULT,
    pub GetResourceDescription: unsafe extern "system" fn(*mut core::ffi::c_void, *const SHELL_ITEM_RESOURCE, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub EnumResources: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SupportsResource: unsafe extern "system" fn(*mut core::ffi::c_void, *const SHELL_ITEM_RESOURCE) -> windows_core::HRESULT,
    pub OpenResource: unsafe extern "system" fn(*mut core::ffi::c_void, *const SHELL_ITEM_RESOURCE, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateResource: unsafe extern "system" fn(*mut core::ffi::c_void, *const SHELL_ITEM_RESOURCE, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub MarkForDelete: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IShellItemResources_Impl: windows_core::IUnknownImpl {
    fn GetAttributes(&self) -> windows_core::Result<u32>;
    fn GetSize(&self) -> windows_core::Result<u64>;
    fn GetTimes(&self, pftcreation: *mut super::super::Foundation::FILETIME, pftwrite: *mut super::super::Foundation::FILETIME, pftaccess: *mut super::super::Foundation::FILETIME) -> windows_core::Result<()>;
    fn SetTimes(&self, pftcreation: *const super::super::Foundation::FILETIME, pftwrite: *const super::super::Foundation::FILETIME, pftaccess: *const super::super::Foundation::FILETIME) -> windows_core::Result<()>;
    fn GetResourceDescription(&self, pcsir: *const SHELL_ITEM_RESOURCE) -> windows_core::Result<windows_core::PWSTR>;
    fn EnumResources(&self) -> windows_core::Result<IEnumResources>;
    fn SupportsResource(&self, pcsir: *const SHELL_ITEM_RESOURCE) -> windows_core::Result<()>;
    fn OpenResource(&self, pcsir: *const SHELL_ITEM_RESOURCE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn CreateResource(&self, pcsir: *const SHELL_ITEM_RESOURCE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn MarkForDelete(&self) -> windows_core::Result<()>;
}
impl IShellItemResources_Vtbl {
    pub const fn new<Identity: IShellItemResources_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetAttributes<Identity: IShellItemResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwattributes: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItemResources_Impl::GetAttributes(this) {
                    Ok(ok__) => {
                        pdwattributes.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSize<Identity: IShellItemResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pullsize: *mut u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItemResources_Impl::GetSize(this) {
                    Ok(ok__) => {
                        pullsize.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTimes<Identity: IShellItemResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftcreation: *mut super::super::Foundation::FILETIME, pftwrite: *mut super::super::Foundation::FILETIME, pftaccess: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItemResources_Impl::GetTimes(this, core::mem::transmute_copy(&pftcreation), core::mem::transmute_copy(&pftwrite), core::mem::transmute_copy(&pftaccess)).into()
            }
        }
        unsafe extern "system" fn SetTimes<Identity: IShellItemResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftcreation: *const super::super::Foundation::FILETIME, pftwrite: *const super::super::Foundation::FILETIME, pftaccess: *const super::super::Foundation::FILETIME) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItemResources_Impl::SetTimes(this, core::mem::transmute_copy(&pftcreation), core::mem::transmute_copy(&pftwrite), core::mem::transmute_copy(&pftaccess)).into()
            }
        }
        unsafe extern "system" fn GetResourceDescription<Identity: IShellItemResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcsir: *const SHELL_ITEM_RESOURCE, ppszdescription: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItemResources_Impl::GetResourceDescription(this, core::mem::transmute_copy(&pcsir)) {
                    Ok(ok__) => {
                        ppszdescription.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumResources<Identity: IShellItemResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenumr: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellItemResources_Impl::EnumResources(this) {
                    Ok(ok__) => {
                        ppenumr.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SupportsResource<Identity: IShellItemResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcsir: *const SHELL_ITEM_RESOURCE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItemResources_Impl::SupportsResource(this, core::mem::transmute_copy(&pcsir)).into()
            }
        }
        unsafe extern "system" fn OpenResource<Identity: IShellItemResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcsir: *const SHELL_ITEM_RESOURCE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItemResources_Impl::OpenResource(this, core::mem::transmute_copy(&pcsir), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn CreateResource<Identity: IShellItemResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcsir: *const SHELL_ITEM_RESOURCE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItemResources_Impl::CreateResource(this, core::mem::transmute_copy(&pcsir), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn MarkForDelete<Identity: IShellItemResources_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellItemResources_Impl::MarkForDelete(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetAttributes: GetAttributes::<Identity, OFFSET>,
            GetSize: GetSize::<Identity, OFFSET>,
            GetTimes: GetTimes::<Identity, OFFSET>,
            SetTimes: SetTimes::<Identity, OFFSET>,
            GetResourceDescription: GetResourceDescription::<Identity, OFFSET>,
            EnumResources: EnumResources::<Identity, OFFSET>,
            SupportsResource: SupportsResource::<Identity, OFFSET>,
            OpenResource: OpenResource::<Identity, OFFSET>,
            CreateResource: CreateResource::<Identity, OFFSET>,
            MarkForDelete: MarkForDelete::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellItemResources as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellItemResources {}
windows_core::imp::define_interface!(IShellLibrary, IShellLibrary_Vtbl, 0x11a66efa_382e_451a_9234_1e0e12ef3085);
windows_core::imp::interface_hierarchy!(IShellLibrary, windows_core::IUnknown);
impl IShellLibrary {
    pub unsafe fn LoadLibraryFromItem<P0>(&self, psilibrary: P0, grfmode: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).LoadLibraryFromItem)(windows_core::Interface::as_raw(self), psilibrary.param().abi(), grfmode).ok() }
    }
    pub unsafe fn LoadLibraryFromKnownFolder(&self, kfidlibrary: *const windows_core::GUID, grfmode: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).LoadLibraryFromKnownFolder)(windows_core::Interface::as_raw(self), kfidlibrary, grfmode).ok() }
    }
    pub unsafe fn AddFolder<P0>(&self, psilocation: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddFolder)(windows_core::Interface::as_raw(self), psilocation.param().abi()).ok() }
    }
    pub unsafe fn RemoveFolder<P0>(&self, psilocation: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveFolder)(windows_core::Interface::as_raw(self), psilocation.param().abi()).ok() }
    }
    pub unsafe fn GetFolders<T>(&self, lff: LIBRARYFOLDERFILTER) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetFolders)(windows_core::Interface::as_raw(self), lff, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn ResolveFolder<P0, T>(&self, psifoldertoresolve: P0, dwtimeout: u32) -> windows_core::Result<T>
    where
        P0: windows_core::Param<IShellItem>,
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).ResolveFolder)(windows_core::Interface::as_raw(self), psifoldertoresolve.param().abi(), dwtimeout, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetDefaultSaveFolder<T>(&self, dsft: DEFAULTSAVEFOLDERTYPE) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetDefaultSaveFolder)(windows_core::Interface::as_raw(self), dsft, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn SetDefaultSaveFolder<P1>(&self, dsft: DEFAULTSAVEFOLDERTYPE, psi: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDefaultSaveFolder)(windows_core::Interface::as_raw(self), dsft, psi.param().abi()).ok() }
    }
    pub unsafe fn GetOptions(&self) -> windows_core::Result<LIBRARYOPTIONFLAGS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOptions(&self, lofmask: LIBRARYOPTIONFLAGS, lofoptions: LIBRARYOPTIONFLAGS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOptions)(windows_core::Interface::as_raw(self), lofmask, lofoptions).ok() }
    }
    pub unsafe fn GetFolderType(&self) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFolderType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetFolderType(&self, ftid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFolderType)(windows_core::Interface::as_raw(self), ftid).ok() }
    }
    pub unsafe fn GetIcon(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIcon)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetIcon<P0>(&self, pszicon: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetIcon)(windows_core::Interface::as_raw(self), pszicon.param().abi()).ok() }
    }
    pub unsafe fn Commit(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Commit)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Save<P0, P1>(&self, psifoldertosavein: P0, pszlibraryname: P1, lsf: LIBRARYSAVEFLAGS) -> windows_core::Result<IShellItem>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Save)(windows_core::Interface::as_raw(self), psifoldertosavein.param().abi(), pszlibraryname.param().abi(), lsf, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SaveInKnownFolder<P1>(&self, kfidtosavein: *const windows_core::GUID, pszlibraryname: P1, lsf: LIBRARYSAVEFLAGS) -> windows_core::Result<IShellItem>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SaveInKnownFolder)(windows_core::Interface::as_raw(self), kfidtosavein, pszlibraryname.param().abi(), lsf, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellLibrary_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub LoadLibraryFromItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub LoadLibraryFromKnownFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32) -> windows_core::HRESULT,
    pub AddFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetFolders: unsafe extern "system" fn(*mut core::ffi::c_void, LIBRARYFOLDERFILTER, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ResolveFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetDefaultSaveFolder: unsafe extern "system" fn(*mut core::ffi::c_void, DEFAULTSAVEFOLDERTYPE, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetDefaultSaveFolder: unsafe extern "system" fn(*mut core::ffi::c_void, DEFAULTSAVEFOLDERTYPE, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut LIBRARYOPTIONFLAGS) -> windows_core::HRESULT,
    pub SetOptions: unsafe extern "system" fn(*mut core::ffi::c_void, LIBRARYOPTIONFLAGS, LIBRARYOPTIONFLAGS) -> windows_core::HRESULT,
    pub GetFolderType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub SetFolderType: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub GetIcon: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub SetIcon: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub Commit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Save: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, LIBRARYSAVEFLAGS, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SaveInKnownFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, windows_core::PCWSTR, LIBRARYSAVEFLAGS, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IShellLibrary_Impl: windows_core::IUnknownImpl {
    fn LoadLibraryFromItem(&self, psilibrary: windows_core::Ref<IShellItem>, grfmode: u32) -> windows_core::Result<()>;
    fn LoadLibraryFromKnownFolder(&self, kfidlibrary: *const windows_core::GUID, grfmode: u32) -> windows_core::Result<()>;
    fn AddFolder(&self, psilocation: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn RemoveFolder(&self, psilocation: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn GetFolders(&self, lff: LIBRARYFOLDERFILTER, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn ResolveFolder(&self, psifoldertoresolve: windows_core::Ref<IShellItem>, dwtimeout: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetDefaultSaveFolder(&self, dsft: DEFAULTSAVEFOLDERTYPE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn SetDefaultSaveFolder(&self, dsft: DEFAULTSAVEFOLDERTYPE, psi: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn GetOptions(&self) -> windows_core::Result<LIBRARYOPTIONFLAGS>;
    fn SetOptions(&self, lofmask: LIBRARYOPTIONFLAGS, lofoptions: LIBRARYOPTIONFLAGS) -> windows_core::Result<()>;
    fn GetFolderType(&self) -> windows_core::Result<windows_core::GUID>;
    fn SetFolderType(&self, ftid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn GetIcon(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn SetIcon(&self, pszicon: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Commit(&self) -> windows_core::Result<()>;
    fn Save(&self, psifoldertosavein: windows_core::Ref<IShellItem>, pszlibraryname: &windows_core::PCWSTR, lsf: LIBRARYSAVEFLAGS) -> windows_core::Result<IShellItem>;
    fn SaveInKnownFolder(&self, kfidtosavein: *const windows_core::GUID, pszlibraryname: &windows_core::PCWSTR, lsf: LIBRARYSAVEFLAGS) -> windows_core::Result<IShellItem>;
}
impl IShellLibrary_Vtbl {
    pub const fn new<Identity: IShellLibrary_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn LoadLibraryFromItem<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psilibrary: *mut core::ffi::c_void, grfmode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::LoadLibraryFromItem(this, core::mem::transmute_copy(&psilibrary), core::mem::transmute_copy(&grfmode)).into()
            }
        }
        unsafe extern "system" fn LoadLibraryFromKnownFolder<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kfidlibrary: *const windows_core::GUID, grfmode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::LoadLibraryFromKnownFolder(this, core::mem::transmute_copy(&kfidlibrary), core::mem::transmute_copy(&grfmode)).into()
            }
        }
        unsafe extern "system" fn AddFolder<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psilocation: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::AddFolder(this, core::mem::transmute_copy(&psilocation)).into()
            }
        }
        unsafe extern "system" fn RemoveFolder<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psilocation: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::RemoveFolder(this, core::mem::transmute_copy(&psilocation)).into()
            }
        }
        unsafe extern "system" fn GetFolders<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lff: LIBRARYFOLDERFILTER, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::GetFolders(this, core::mem::transmute_copy(&lff), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn ResolveFolder<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psifoldertoresolve: *mut core::ffi::c_void, dwtimeout: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::ResolveFolder(this, core::mem::transmute_copy(&psifoldertoresolve), core::mem::transmute_copy(&dwtimeout), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetDefaultSaveFolder<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsft: DEFAULTSAVEFOLDERTYPE, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::GetDefaultSaveFolder(this, core::mem::transmute_copy(&dsft), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn SetDefaultSaveFolder<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dsft: DEFAULTSAVEFOLDERTYPE, psi: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::SetDefaultSaveFolder(this, core::mem::transmute_copy(&dsft), core::mem::transmute_copy(&psi)).into()
            }
        }
        unsafe extern "system" fn GetOptions<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plofoptions: *mut LIBRARYOPTIONFLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLibrary_Impl::GetOptions(this) {
                    Ok(ok__) => {
                        plofoptions.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOptions<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lofmask: LIBRARYOPTIONFLAGS, lofoptions: LIBRARYOPTIONFLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::SetOptions(this, core::mem::transmute_copy(&lofmask), core::mem::transmute_copy(&lofoptions)).into()
            }
        }
        unsafe extern "system" fn GetFolderType<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLibrary_Impl::GetFolderType(this) {
                    Ok(ok__) => {
                        pftid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetFolderType<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ftid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::SetFolderType(this, core::mem::transmute_copy(&ftid)).into()
            }
        }
        unsafe extern "system" fn GetIcon<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszicon: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLibrary_Impl::GetIcon(this) {
                    Ok(ok__) => {
                        ppszicon.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetIcon<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszicon: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::SetIcon(this, core::mem::transmute(&pszicon)).into()
            }
        }
        unsafe extern "system" fn Commit<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLibrary_Impl::Commit(this).into()
            }
        }
        unsafe extern "system" fn Save<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psifoldertosavein: *mut core::ffi::c_void, pszlibraryname: windows_core::PCWSTR, lsf: LIBRARYSAVEFLAGS, ppsisavedto: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLibrary_Impl::Save(this, core::mem::transmute_copy(&psifoldertosavein), core::mem::transmute(&pszlibraryname), core::mem::transmute_copy(&lsf)) {
                    Ok(ok__) => {
                        ppsisavedto.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SaveInKnownFolder<Identity: IShellLibrary_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, kfidtosavein: *const windows_core::GUID, pszlibraryname: windows_core::PCWSTR, lsf: LIBRARYSAVEFLAGS, ppsisavedto: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLibrary_Impl::SaveInKnownFolder(this, core::mem::transmute_copy(&kfidtosavein), core::mem::transmute(&pszlibraryname), core::mem::transmute_copy(&lsf)) {
                    Ok(ok__) => {
                        ppsisavedto.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            LoadLibraryFromItem: LoadLibraryFromItem::<Identity, OFFSET>,
            LoadLibraryFromKnownFolder: LoadLibraryFromKnownFolder::<Identity, OFFSET>,
            AddFolder: AddFolder::<Identity, OFFSET>,
            RemoveFolder: RemoveFolder::<Identity, OFFSET>,
            GetFolders: GetFolders::<Identity, OFFSET>,
            ResolveFolder: ResolveFolder::<Identity, OFFSET>,
            GetDefaultSaveFolder: GetDefaultSaveFolder::<Identity, OFFSET>,
            SetDefaultSaveFolder: SetDefaultSaveFolder::<Identity, OFFSET>,
            GetOptions: GetOptions::<Identity, OFFSET>,
            SetOptions: SetOptions::<Identity, OFFSET>,
            GetFolderType: GetFolderType::<Identity, OFFSET>,
            SetFolderType: SetFolderType::<Identity, OFFSET>,
            GetIcon: GetIcon::<Identity, OFFSET>,
            SetIcon: SetIcon::<Identity, OFFSET>,
            Commit: Commit::<Identity, OFFSET>,
            Save: Save::<Identity, OFFSET>,
            SaveInKnownFolder: SaveInKnownFolder::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLibrary as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellLibrary {}
windows_core::imp::define_interface!(IShellLinkA, IShellLinkA_Vtbl, 0x000214ee_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IShellLinkA, windows_core::IUnknown);
impl IShellLinkA {
    #[cfg(feature = "Win32_Storage_FileSystem")]
    pub unsafe fn GetPath(&self, pszfile: &mut [u8], pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAA, fflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPath)(windows_core::Interface::as_raw(self), core::mem::transmute(pszfile.as_ptr()), pszfile.len().try_into().unwrap(), pfd as _, fflags).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIDList)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetIDList)(windows_core::Interface::as_raw(self), pidl).ok() }
    }
    pub unsafe fn GetDescription(&self, pszname: &mut [u8]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDescription)(windows_core::Interface::as_raw(self), core::mem::transmute(pszname.as_ptr()), pszname.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SetDescription<P0>(&self, pszname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDescription)(windows_core::Interface::as_raw(self), pszname.param().abi()).ok() }
    }
    pub unsafe fn GetWorkingDirectory(&self, pszdir: &mut [u8]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWorkingDirectory)(windows_core::Interface::as_raw(self), core::mem::transmute(pszdir.as_ptr()), pszdir.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SetWorkingDirectory<P0>(&self, pszdir: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetWorkingDirectory)(windows_core::Interface::as_raw(self), pszdir.param().abi()).ok() }
    }
    pub unsafe fn GetArguments(&self, pszargs: &mut [u8]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetArguments)(windows_core::Interface::as_raw(self), core::mem::transmute(pszargs.as_ptr()), pszargs.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SetArguments<P0>(&self, pszargs: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetArguments)(windows_core::Interface::as_raw(self), pszargs.param().abi()).ok() }
    }
    pub unsafe fn GetHotkey(&self) -> windows_core::Result<u16> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetHotkey)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetHotkey(&self, whotkey: u16) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetHotkey)(windows_core::Interface::as_raw(self), whotkey).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn GetShowCmd(&self) -> windows_core::Result<super::WindowsAndMessaging::SHOW_WINDOW_CMD> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetShowCmd)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn SetShowCmd(&self, ishowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetShowCmd)(windows_core::Interface::as_raw(self), ishowcmd).ok() }
    }
    pub unsafe fn GetIconLocation(&self, psziconpath: &mut [u8], piicon: *mut i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetIconLocation)(windows_core::Interface::as_raw(self), core::mem::transmute(psziconpath.as_ptr()), psziconpath.len().try_into().unwrap(), piicon as _).ok() }
    }
    pub unsafe fn SetIconLocation<P0>(&self, psziconpath: P0, iicon: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetIconLocation)(windows_core::Interface::as_raw(self), psziconpath.param().abi(), iicon).ok() }
    }
    pub unsafe fn SetRelativePath<P0>(&self, pszpathrel: P0, dwreserved: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetRelativePath)(windows_core::Interface::as_raw(self), pszpathrel.param().abi(), dwreserved).ok() }
    }
    pub unsafe fn Resolve(&self, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Resolve)(windows_core::Interface::as_raw(self), hwnd, fflags).ok() }
    }
    pub unsafe fn SetPath<P0>(&self, pszfile: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetPath)(windows_core::Interface::as_raw(self), pszfile.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellLinkA_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Storage_FileSystem")]
    pub GetPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, i32, *mut super::super::Storage::FileSystem::WIN32_FIND_DATAA, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Storage_FileSystem"))]
    GetPath: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetIDList: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetIDList: usize,
    pub GetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, i32) -> windows_core::HRESULT,
    pub SetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetWorkingDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, i32) -> windows_core::HRESULT,
    pub SetWorkingDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetArguments: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, i32) -> windows_core::HRESULT,
    pub SetArguments: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
    pub GetHotkey: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub SetHotkey: unsafe extern "system" fn(*mut core::ffi::c_void, u16) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub GetShowCmd: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    GetShowCmd: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub SetShowCmd: unsafe extern "system" fn(*mut core::ffi::c_void, super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    SetShowCmd: usize,
    pub GetIconLocation: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PSTR, i32, *mut i32) -> windows_core::HRESULT,
    pub SetIconLocation: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, i32) -> windows_core::HRESULT,
    pub SetRelativePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub Resolve: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32) -> windows_core::HRESULT,
    pub SetPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellLinkA_Impl: windows_core::IUnknownImpl {
    fn GetPath(&self, pszfile: windows_core::PSTR, cch: i32, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAA, fflags: u32) -> windows_core::Result<()>;
    fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn SetIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetDescription(&self, pszname: windows_core::PSTR, cch: i32) -> windows_core::Result<()>;
    fn SetDescription(&self, pszname: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetWorkingDirectory(&self, pszdir: windows_core::PSTR, cch: i32) -> windows_core::Result<()>;
    fn SetWorkingDirectory(&self, pszdir: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetArguments(&self, pszargs: windows_core::PSTR, cch: i32) -> windows_core::Result<()>;
    fn SetArguments(&self, pszargs: &windows_core::PCSTR) -> windows_core::Result<()>;
    fn GetHotkey(&self) -> windows_core::Result<u16>;
    fn SetHotkey(&self, whotkey: u16) -> windows_core::Result<()>;
    fn GetShowCmd(&self) -> windows_core::Result<super::WindowsAndMessaging::SHOW_WINDOW_CMD>;
    fn SetShowCmd(&self, ishowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::Result<()>;
    fn GetIconLocation(&self, psziconpath: windows_core::PSTR, cch: i32, piicon: *mut i32) -> windows_core::Result<()>;
    fn SetIconLocation(&self, psziconpath: &windows_core::PCSTR, iicon: i32) -> windows_core::Result<()>;
    fn SetRelativePath(&self, pszpathrel: &windows_core::PCSTR, dwreserved: u32) -> windows_core::Result<()>;
    fn Resolve(&self, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::Result<()>;
    fn SetPath(&self, pszfile: &windows_core::PCSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellLinkA_Vtbl {
    pub const fn new<Identity: IShellLinkA_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetPath<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PSTR, cch: i32, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAA, fflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::GetPath(this, core::mem::transmute_copy(&pszfile), core::mem::transmute_copy(&cch), core::mem::transmute_copy(&pfd), core::mem::transmute_copy(&fflags)).into()
            }
        }
        unsafe extern "system" fn GetIDList<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkA_Impl::GetIDList(this) {
                    Ok(ok__) => {
                        ppidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetIDList<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::SetIDList(this, core::mem::transmute_copy(&pidl)).into()
            }
        }
        unsafe extern "system" fn GetDescription<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PSTR, cch: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::GetDescription(this, core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cch)).into()
            }
        }
        unsafe extern "system" fn SetDescription<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::SetDescription(this, core::mem::transmute(&pszname)).into()
            }
        }
        unsafe extern "system" fn GetWorkingDirectory<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdir: windows_core::PSTR, cch: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::GetWorkingDirectory(this, core::mem::transmute_copy(&pszdir), core::mem::transmute_copy(&cch)).into()
            }
        }
        unsafe extern "system" fn SetWorkingDirectory<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdir: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::SetWorkingDirectory(this, core::mem::transmute(&pszdir)).into()
            }
        }
        unsafe extern "system" fn GetArguments<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszargs: windows_core::PSTR, cch: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::GetArguments(this, core::mem::transmute_copy(&pszargs), core::mem::transmute_copy(&cch)).into()
            }
        }
        unsafe extern "system" fn SetArguments<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszargs: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::SetArguments(this, core::mem::transmute(&pszargs)).into()
            }
        }
        unsafe extern "system" fn GetHotkey<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwhotkey: *mut u16) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkA_Impl::GetHotkey(this) {
                    Ok(ok__) => {
                        pwhotkey.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetHotkey<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, whotkey: u16) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::SetHotkey(this, core::mem::transmute_copy(&whotkey)).into()
            }
        }
        unsafe extern "system" fn GetShowCmd<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pishowcmd: *mut super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkA_Impl::GetShowCmd(this) {
                    Ok(ok__) => {
                        pishowcmd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetShowCmd<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ishowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::SetShowCmd(this, core::mem::transmute_copy(&ishowcmd)).into()
            }
        }
        unsafe extern "system" fn GetIconLocation<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psziconpath: windows_core::PSTR, cch: i32, piicon: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::GetIconLocation(this, core::mem::transmute_copy(&psziconpath), core::mem::transmute_copy(&cch), core::mem::transmute_copy(&piicon)).into()
            }
        }
        unsafe extern "system" fn SetIconLocation<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psziconpath: windows_core::PCSTR, iicon: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::SetIconLocation(this, core::mem::transmute(&psziconpath), core::mem::transmute_copy(&iicon)).into()
            }
        }
        unsafe extern "system" fn SetRelativePath<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpathrel: windows_core::PCSTR, dwreserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::SetRelativePath(this, core::mem::transmute(&pszpathrel), core::mem::transmute_copy(&dwreserved)).into()
            }
        }
        unsafe extern "system" fn Resolve<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::Resolve(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&fflags)).into()
            }
        }
        unsafe extern "system" fn SetPath<Identity: IShellLinkA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkA_Impl::SetPath(this, core::mem::transmute(&pszfile)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPath: GetPath::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
            SetIDList: SetIDList::<Identity, OFFSET>,
            GetDescription: GetDescription::<Identity, OFFSET>,
            SetDescription: SetDescription::<Identity, OFFSET>,
            GetWorkingDirectory: GetWorkingDirectory::<Identity, OFFSET>,
            SetWorkingDirectory: SetWorkingDirectory::<Identity, OFFSET>,
            GetArguments: GetArguments::<Identity, OFFSET>,
            SetArguments: SetArguments::<Identity, OFFSET>,
            GetHotkey: GetHotkey::<Identity, OFFSET>,
            SetHotkey: SetHotkey::<Identity, OFFSET>,
            GetShowCmd: GetShowCmd::<Identity, OFFSET>,
            SetShowCmd: SetShowCmd::<Identity, OFFSET>,
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            SetIconLocation: SetIconLocation::<Identity, OFFSET>,
            SetRelativePath: SetRelativePath::<Identity, OFFSET>,
            Resolve: Resolve::<Identity, OFFSET>,
            SetPath: SetPath::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLinkA as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellLinkA {}
windows_core::imp::define_interface!(IShellLinkDataList, IShellLinkDataList_Vtbl, 0x45e2b4ae_b1c3_11d0_b92f_00a0c90312e1);
windows_core::imp::interface_hierarchy!(IShellLinkDataList, windows_core::IUnknown);
impl IShellLinkDataList {
    pub unsafe fn AddDataBlock(&self, pdatablock: *const core::ffi::c_void) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddDataBlock)(windows_core::Interface::as_raw(self), pdatablock).ok() }
    }
    pub unsafe fn CopyDataBlock(&self, dwsig: u32, ppdatablock: *mut *mut core::ffi::c_void) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CopyDataBlock)(windows_core::Interface::as_raw(self), dwsig, ppdatablock as _).ok() }
    }
    pub unsafe fn RemoveDataBlock(&self, dwsig: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveDataBlock)(windows_core::Interface::as_raw(self), dwsig).ok() }
    }
    pub unsafe fn GetFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetFlags(&self, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFlags)(windows_core::Interface::as_raw(self), dwflags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellLinkDataList_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AddDataBlock: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void) -> windows_core::HRESULT,
    pub CopyDataBlock: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveDataBlock: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
pub trait IShellLinkDataList_Impl: windows_core::IUnknownImpl {
    fn AddDataBlock(&self, pdatablock: *const core::ffi::c_void) -> windows_core::Result<()>;
    fn CopyDataBlock(&self, dwsig: u32, ppdatablock: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn RemoveDataBlock(&self, dwsig: u32) -> windows_core::Result<()>;
    fn GetFlags(&self) -> windows_core::Result<u32>;
    fn SetFlags(&self, dwflags: u32) -> windows_core::Result<()>;
}
impl IShellLinkDataList_Vtbl {
    pub const fn new<Identity: IShellLinkDataList_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddDataBlock<Identity: IShellLinkDataList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdatablock: *const core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDataList_Impl::AddDataBlock(this, core::mem::transmute_copy(&pdatablock)).into()
            }
        }
        unsafe extern "system" fn CopyDataBlock<Identity: IShellLinkDataList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsig: u32, ppdatablock: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDataList_Impl::CopyDataBlock(this, core::mem::transmute_copy(&dwsig), core::mem::transmute_copy(&ppdatablock)).into()
            }
        }
        unsafe extern "system" fn RemoveDataBlock<Identity: IShellLinkDataList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwsig: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDataList_Impl::RemoveDataBlock(this, core::mem::transmute_copy(&dwsig)).into()
            }
        }
        unsafe extern "system" fn GetFlags<Identity: IShellLinkDataList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkDataList_Impl::GetFlags(this) {
                    Ok(ok__) => {
                        pdwflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetFlags<Identity: IShellLinkDataList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDataList_Impl::SetFlags(this, core::mem::transmute_copy(&dwflags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddDataBlock: AddDataBlock::<Identity, OFFSET>,
            CopyDataBlock: CopyDataBlock::<Identity, OFFSET>,
            RemoveDataBlock: RemoveDataBlock::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            SetFlags: SetFlags::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLinkDataList as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellLinkDataList {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellLinkDual, IShellLinkDual_Vtbl, 0x88a05c00_f000_11ce_8350_444553540000);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellLinkDual {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellLinkDual, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IShellLinkDual {
    pub unsafe fn Path(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Path)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SetPath(&self, bs: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetPath)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bs)).ok() }
    }
    pub unsafe fn Description(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Description)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SetDescription(&self, bs: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetDescription)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bs)).ok() }
    }
    pub unsafe fn WorkingDirectory(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).WorkingDirectory)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SetWorkingDirectory(&self, bs: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetWorkingDirectory)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bs)).ok() }
    }
    pub unsafe fn Arguments(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Arguments)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SetArguments(&self, bs: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetArguments)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bs)).ok() }
    }
    pub unsafe fn Hotkey(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Hotkey)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetHotkey(&self, ihk: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetHotkey)(windows_core::Interface::as_raw(self), ihk).ok() }
    }
    pub unsafe fn ShowCommand(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ShowCommand)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetShowCommand(&self, ishowcommand: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetShowCommand)(windows_core::Interface::as_raw(self), ishowcommand).ok() }
    }
    pub unsafe fn Resolve(&self, fflags: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Resolve)(windows_core::Interface::as_raw(self), fflags).ok() }
    }
    pub unsafe fn GetIconLocation(&self, pbs: *mut windows_core::BSTR) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIconLocation)(windows_core::Interface::as_raw(self), core::mem::transmute(pbs), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetIconLocation(&self, bs: &windows_core::BSTR, iicon: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetIconLocation)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bs), iicon).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Save(&self, vwhere: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Save)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(vwhere)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellLinkDual_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub Path: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetPath: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Description: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub WorkingDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetWorkingDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Arguments: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetArguments: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Hotkey: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetHotkey: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub ShowCommand: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetShowCommand: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Resolve: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub GetIconLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetIconLocation: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Save: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Save: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellLinkDual_Impl: super::super::System::Com::IDispatch_Impl {
    fn Path(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetPath(&self, bs: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Description(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetDescription(&self, bs: &windows_core::BSTR) -> windows_core::Result<()>;
    fn WorkingDirectory(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetWorkingDirectory(&self, bs: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Arguments(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetArguments(&self, bs: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Hotkey(&self) -> windows_core::Result<i32>;
    fn SetHotkey(&self, ihk: i32) -> windows_core::Result<()>;
    fn ShowCommand(&self) -> windows_core::Result<i32>;
    fn SetShowCommand(&self, ishowcommand: i32) -> windows_core::Result<()>;
    fn Resolve(&self, fflags: i32) -> windows_core::Result<()>;
    fn GetIconLocation(&self, pbs: *mut windows_core::BSTR) -> windows_core::Result<i32>;
    fn SetIconLocation(&self, bs: &windows_core::BSTR, iicon: i32) -> windows_core::Result<()>;
    fn Save(&self, vwhere: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellLinkDual_Vtbl {
    pub const fn new<Identity: IShellLinkDual_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Path<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkDual_Impl::Path(this) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetPath<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDual_Impl::SetPath(this, core::mem::transmute(&bs)).into()
            }
        }
        unsafe extern "system" fn Description<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkDual_Impl::Description(this) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetDescription<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDual_Impl::SetDescription(this, core::mem::transmute(&bs)).into()
            }
        }
        unsafe extern "system" fn WorkingDirectory<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkDual_Impl::WorkingDirectory(this) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetWorkingDirectory<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDual_Impl::SetWorkingDirectory(this, core::mem::transmute(&bs)).into()
            }
        }
        unsafe extern "system" fn Arguments<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkDual_Impl::Arguments(this) {
                    Ok(ok__) => {
                        pbs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetArguments<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDual_Impl::SetArguments(this, core::mem::transmute(&bs)).into()
            }
        }
        unsafe extern "system" fn Hotkey<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pihk: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkDual_Impl::Hotkey(this) {
                    Ok(ok__) => {
                        pihk.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetHotkey<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ihk: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDual_Impl::SetHotkey(this, core::mem::transmute_copy(&ihk)).into()
            }
        }
        unsafe extern "system" fn ShowCommand<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pishowcommand: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkDual_Impl::ShowCommand(this) {
                    Ok(ok__) => {
                        pishowcommand.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetShowCommand<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ishowcommand: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDual_Impl::SetShowCommand(this, core::mem::transmute_copy(&ishowcommand)).into()
            }
        }
        unsafe extern "system" fn Resolve<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fflags: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDual_Impl::Resolve(this, core::mem::transmute_copy(&fflags)).into()
            }
        }
        unsafe extern "system" fn GetIconLocation<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbs: *mut *mut core::ffi::c_void, piicon: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkDual_Impl::GetIconLocation(this, core::mem::transmute_copy(&pbs)) {
                    Ok(ok__) => {
                        piicon.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetIconLocation<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bs: *mut core::ffi::c_void, iicon: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDual_Impl::SetIconLocation(this, core::mem::transmute(&bs), core::mem::transmute_copy(&iicon)).into()
            }
        }
        unsafe extern "system" fn Save<Identity: IShellLinkDual_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vwhere: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkDual_Impl::Save(this, core::mem::transmute(&vwhere)).into()
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Path: Path::<Identity, OFFSET>,
            SetPath: SetPath::<Identity, OFFSET>,
            Description: Description::<Identity, OFFSET>,
            SetDescription: SetDescription::<Identity, OFFSET>,
            WorkingDirectory: WorkingDirectory::<Identity, OFFSET>,
            SetWorkingDirectory: SetWorkingDirectory::<Identity, OFFSET>,
            Arguments: Arguments::<Identity, OFFSET>,
            SetArguments: SetArguments::<Identity, OFFSET>,
            Hotkey: Hotkey::<Identity, OFFSET>,
            SetHotkey: SetHotkey::<Identity, OFFSET>,
            ShowCommand: ShowCommand::<Identity, OFFSET>,
            SetShowCommand: SetShowCommand::<Identity, OFFSET>,
            Resolve: Resolve::<Identity, OFFSET>,
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            SetIconLocation: SetIconLocation::<Identity, OFFSET>,
            Save: Save::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLinkDual as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellLinkDual {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellLinkDual2, IShellLinkDual2_Vtbl, 0x317ee249_f12e_11d2_b1e4_00c04f8eeb3e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellLinkDual2 {
    type Target = IShellLinkDual;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellLinkDual2, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellLinkDual);
#[cfg(feature = "Win32_System_Com")]
impl IShellLinkDual2 {
    pub unsafe fn Target(&self) -> windows_core::Result<FolderItem> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Target)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellLinkDual2_Vtbl {
    pub base__: IShellLinkDual_Vtbl,
    pub Target: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellLinkDual2_Impl: IShellLinkDual_Impl {
    fn Target(&self) -> windows_core::Result<FolderItem>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellLinkDual2_Vtbl {
    pub const fn new<Identity: IShellLinkDual2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Target<Identity: IShellLinkDual2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppfi: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkDual2_Impl::Target(this) {
                    Ok(ok__) => {
                        ppfi.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IShellLinkDual_Vtbl::new::<Identity, OFFSET>(), Target: Target::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLinkDual2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellLinkDual as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellLinkDual2 {}
windows_core::imp::define_interface!(IShellLinkW, IShellLinkW_Vtbl, 0x000214f9_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IShellLinkW, windows_core::IUnknown);
impl IShellLinkW {
    #[cfg(feature = "Win32_Storage_FileSystem")]
    pub unsafe fn GetPath(&self, pszfile: &mut [u16], pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW, fflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPath)(windows_core::Interface::as_raw(self), core::mem::transmute(pszfile.as_ptr()), pszfile.len().try_into().unwrap(), pfd as _, fflags).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetIDList)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SetIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetIDList)(windows_core::Interface::as_raw(self), pidl).ok() }
    }
    pub unsafe fn GetDescription(&self, pszname: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetDescription)(windows_core::Interface::as_raw(self), core::mem::transmute(pszname.as_ptr()), pszname.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SetDescription<P0>(&self, pszname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetDescription)(windows_core::Interface::as_raw(self), pszname.param().abi()).ok() }
    }
    pub unsafe fn GetWorkingDirectory(&self, pszdir: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetWorkingDirectory)(windows_core::Interface::as_raw(self), core::mem::transmute(pszdir.as_ptr()), pszdir.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SetWorkingDirectory<P0>(&self, pszdir: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetWorkingDirectory)(windows_core::Interface::as_raw(self), pszdir.param().abi()).ok() }
    }
    pub unsafe fn GetArguments(&self, pszargs: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetArguments)(windows_core::Interface::as_raw(self), core::mem::transmute(pszargs.as_ptr()), pszargs.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SetArguments<P0>(&self, pszargs: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetArguments)(windows_core::Interface::as_raw(self), pszargs.param().abi()).ok() }
    }
    pub unsafe fn GetHotkey(&self) -> windows_core::Result<u16> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetHotkey)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetHotkey(&self, whotkey: u16) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetHotkey)(windows_core::Interface::as_raw(self), whotkey).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn GetShowCmd(&self) -> windows_core::Result<super::WindowsAndMessaging::SHOW_WINDOW_CMD> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetShowCmd)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn SetShowCmd(&self, ishowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetShowCmd)(windows_core::Interface::as_raw(self), ishowcmd).ok() }
    }
    pub unsafe fn GetIconLocation(&self, psziconpath: &mut [u16], piicon: *mut i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetIconLocation)(windows_core::Interface::as_raw(self), core::mem::transmute(psziconpath.as_ptr()), psziconpath.len().try_into().unwrap(), piicon as _).ok() }
    }
    pub unsafe fn SetIconLocation<P0>(&self, psziconpath: P0, iicon: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetIconLocation)(windows_core::Interface::as_raw(self), psziconpath.param().abi(), iicon).ok() }
    }
    pub unsafe fn SetRelativePath<P0>(&self, pszpathrel: P0, dwreserved: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetRelativePath)(windows_core::Interface::as_raw(self), pszpathrel.param().abi(), dwreserved).ok() }
    }
    pub unsafe fn Resolve(&self, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Resolve)(windows_core::Interface::as_raw(self), hwnd, fflags).ok() }
    }
    pub unsafe fn SetPath<P0>(&self, pszfile: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetPath)(windows_core::Interface::as_raw(self), pszfile.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellLinkW_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Storage_FileSystem")]
    pub GetPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32, *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Storage_FileSystem"))]
    GetPath: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetIDList: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SetIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SetIDList: usize,
    pub GetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32) -> windows_core::HRESULT,
    pub SetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetWorkingDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32) -> windows_core::HRESULT,
    pub SetWorkingDirectory: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetArguments: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32) -> windows_core::HRESULT,
    pub SetArguments: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetHotkey: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u16) -> windows_core::HRESULT,
    pub SetHotkey: unsafe extern "system" fn(*mut core::ffi::c_void, u16) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub GetShowCmd: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    GetShowCmd: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub SetShowCmd: unsafe extern "system" fn(*mut core::ffi::c_void, super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    SetShowCmd: usize,
    pub GetIconLocation: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, i32, *mut i32) -> windows_core::HRESULT,
    pub SetIconLocation: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, i32) -> windows_core::HRESULT,
    pub SetRelativePath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub Resolve: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32) -> windows_core::HRESULT,
    pub SetPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellLinkW_Impl: windows_core::IUnknownImpl {
    fn GetPath(&self, pszfile: windows_core::PWSTR, cch: i32, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW, fflags: u32) -> windows_core::Result<()>;
    fn GetIDList(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
    fn SetIDList(&self, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn GetDescription(&self, pszname: windows_core::PWSTR, cch: i32) -> windows_core::Result<()>;
    fn SetDescription(&self, pszname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetWorkingDirectory(&self, pszdir: windows_core::PWSTR, cch: i32) -> windows_core::Result<()>;
    fn SetWorkingDirectory(&self, pszdir: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetArguments(&self, pszargs: windows_core::PWSTR, cch: i32) -> windows_core::Result<()>;
    fn SetArguments(&self, pszargs: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetHotkey(&self) -> windows_core::Result<u16>;
    fn SetHotkey(&self, whotkey: u16) -> windows_core::Result<()>;
    fn GetShowCmd(&self) -> windows_core::Result<super::WindowsAndMessaging::SHOW_WINDOW_CMD>;
    fn SetShowCmd(&self, ishowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::Result<()>;
    fn GetIconLocation(&self, psziconpath: windows_core::PWSTR, cch: i32, piicon: *mut i32) -> windows_core::Result<()>;
    fn SetIconLocation(&self, psziconpath: &windows_core::PCWSTR, iicon: i32) -> windows_core::Result<()>;
    fn SetRelativePath(&self, pszpathrel: &windows_core::PCWSTR, dwreserved: u32) -> windows_core::Result<()>;
    fn Resolve(&self, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::Result<()>;
    fn SetPath(&self, pszfile: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellLinkW_Vtbl {
    pub const fn new<Identity: IShellLinkW_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetPath<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PWSTR, cch: i32, pfd: *mut super::super::Storage::FileSystem::WIN32_FIND_DATAW, fflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::GetPath(this, core::mem::transmute_copy(&pszfile), core::mem::transmute_copy(&cch), core::mem::transmute_copy(&pfd), core::mem::transmute_copy(&fflags)).into()
            }
        }
        unsafe extern "system" fn GetIDList<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkW_Impl::GetIDList(this) {
                    Ok(ok__) => {
                        ppidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetIDList<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::SetIDList(this, core::mem::transmute_copy(&pidl)).into()
            }
        }
        unsafe extern "system" fn GetDescription<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PWSTR, cch: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::GetDescription(this, core::mem::transmute_copy(&pszname), core::mem::transmute_copy(&cch)).into()
            }
        }
        unsafe extern "system" fn SetDescription<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::SetDescription(this, core::mem::transmute(&pszname)).into()
            }
        }
        unsafe extern "system" fn GetWorkingDirectory<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdir: windows_core::PWSTR, cch: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::GetWorkingDirectory(this, core::mem::transmute_copy(&pszdir), core::mem::transmute_copy(&cch)).into()
            }
        }
        unsafe extern "system" fn SetWorkingDirectory<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszdir: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::SetWorkingDirectory(this, core::mem::transmute(&pszdir)).into()
            }
        }
        unsafe extern "system" fn GetArguments<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszargs: windows_core::PWSTR, cch: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::GetArguments(this, core::mem::transmute_copy(&pszargs), core::mem::transmute_copy(&cch)).into()
            }
        }
        unsafe extern "system" fn SetArguments<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszargs: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::SetArguments(this, core::mem::transmute(&pszargs)).into()
            }
        }
        unsafe extern "system" fn GetHotkey<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwhotkey: *mut u16) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkW_Impl::GetHotkey(this) {
                    Ok(ok__) => {
                        pwhotkey.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetHotkey<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, whotkey: u16) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::SetHotkey(this, core::mem::transmute_copy(&whotkey)).into()
            }
        }
        unsafe extern "system" fn GetShowCmd<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pishowcmd: *mut super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellLinkW_Impl::GetShowCmd(this) {
                    Ok(ok__) => {
                        pishowcmd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetShowCmd<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ishowcmd: super::WindowsAndMessaging::SHOW_WINDOW_CMD) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::SetShowCmd(this, core::mem::transmute_copy(&ishowcmd)).into()
            }
        }
        unsafe extern "system" fn GetIconLocation<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psziconpath: windows_core::PWSTR, cch: i32, piicon: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::GetIconLocation(this, core::mem::transmute_copy(&psziconpath), core::mem::transmute_copy(&cch), core::mem::transmute_copy(&piicon)).into()
            }
        }
        unsafe extern "system" fn SetIconLocation<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psziconpath: windows_core::PCWSTR, iicon: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::SetIconLocation(this, core::mem::transmute(&psziconpath), core::mem::transmute_copy(&iicon)).into()
            }
        }
        unsafe extern "system" fn SetRelativePath<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszpathrel: windows_core::PCWSTR, dwreserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::SetRelativePath(this, core::mem::transmute(&pszpathrel), core::mem::transmute_copy(&dwreserved)).into()
            }
        }
        unsafe extern "system" fn Resolve<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, fflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::Resolve(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&fflags)).into()
            }
        }
        unsafe extern "system" fn SetPath<Identity: IShellLinkW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszfile: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellLinkW_Impl::SetPath(this, core::mem::transmute(&pszfile)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPath: GetPath::<Identity, OFFSET>,
            GetIDList: GetIDList::<Identity, OFFSET>,
            SetIDList: SetIDList::<Identity, OFFSET>,
            GetDescription: GetDescription::<Identity, OFFSET>,
            SetDescription: SetDescription::<Identity, OFFSET>,
            GetWorkingDirectory: GetWorkingDirectory::<Identity, OFFSET>,
            SetWorkingDirectory: SetWorkingDirectory::<Identity, OFFSET>,
            GetArguments: GetArguments::<Identity, OFFSET>,
            SetArguments: SetArguments::<Identity, OFFSET>,
            GetHotkey: GetHotkey::<Identity, OFFSET>,
            SetHotkey: SetHotkey::<Identity, OFFSET>,
            GetShowCmd: GetShowCmd::<Identity, OFFSET>,
            SetShowCmd: SetShowCmd::<Identity, OFFSET>,
            GetIconLocation: GetIconLocation::<Identity, OFFSET>,
            SetIconLocation: SetIconLocation::<Identity, OFFSET>,
            SetRelativePath: SetRelativePath::<Identity, OFFSET>,
            Resolve: Resolve::<Identity, OFFSET>,
            SetPath: SetPath::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellLinkW as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_Storage_FileSystem", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellLinkW {}
windows_core::imp::define_interface!(IShellMenu, IShellMenu_Vtbl, 0xee1f7637_e138_11d1_8379_00c04fd918d0);
windows_core::imp::interface_hierarchy!(IShellMenu, windows_core::IUnknown);
impl IShellMenu {
    pub unsafe fn Initialize<P0>(&self, psmc: P0, uid: u32, uidancestor: u32, dwflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellMenuCallback>,
    {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), psmc.param().abi(), uid, uidancestor, dwflags).ok() }
    }
    pub unsafe fn GetMenuInfo(&self, ppsmc: Option<*mut Option<IShellMenuCallback>>, puid: Option<*mut u32>, puidancestor: Option<*mut u32>, pdwflags: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetMenuInfo)(windows_core::Interface::as_raw(self), ppsmc.unwrap_or(core::mem::zeroed()) as _, puid.unwrap_or(core::mem::zeroed()) as _, puidancestor.unwrap_or(core::mem::zeroed()) as _, pdwflags.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn SetShellFolder<P0>(&self, psf: P0, pidlfolder: Option<*const Common::ITEMIDLIST>, hkey: Option<super::super::System::Registry::HKEY>, dwflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellFolder>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetShellFolder)(windows_core::Interface::as_raw(self), psf.param().abi(), pidlfolder.unwrap_or(core::mem::zeroed()) as _, hkey.unwrap_or(core::mem::zeroed()) as _, dwflags).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetShellFolder(&self, pdwflags: *mut u32, ppidl: *mut *mut Common::ITEMIDLIST, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetShellFolder)(windows_core::Interface::as_raw(self), pdwflags as _, ppidl as _, riid, ppv as _).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn SetMenu(&self, hmenu: Option<super::WindowsAndMessaging::HMENU>, hwnd: Option<super::super::Foundation::HWND>, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetMenu)(windows_core::Interface::as_raw(self), hmenu.unwrap_or(core::mem::zeroed()) as _, hwnd.unwrap_or(core::mem::zeroed()) as _, dwflags).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn GetMenu(&self, phmenu: Option<*mut super::WindowsAndMessaging::HMENU>, phwnd: Option<*mut super::super::Foundation::HWND>, pdwflags: Option<*mut u32>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetMenu)(windows_core::Interface::as_raw(self), phmenu.unwrap_or(core::mem::zeroed()) as _, phwnd.unwrap_or(core::mem::zeroed()) as _, pdwflags.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
    pub unsafe fn InvalidateItem(&self, psmd: Option<*const SMDATA>, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InvalidateItem)(windows_core::Interface::as_raw(self), psmd.unwrap_or(core::mem::zeroed()) as _, dwflags).ok() }
    }
    #[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
    pub unsafe fn GetState(&self, psmd: *mut SMDATA) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetState)(windows_core::Interface::as_raw(self), core::mem::transmute(psmd)).ok() }
    }
    pub unsafe fn SetMenuToolbar<P0>(&self, punk: P0, dwflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetMenuToolbar)(windows_core::Interface::as_raw(self), punk.param().abi(), dwflags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellMenu_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    pub GetMenuInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common"))]
    pub SetShellFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST, super::super::System::Registry::HKEY, u32) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common")))]
    SetShellFolder: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetShellFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut *mut Common::ITEMIDLIST, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetShellFolder: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub SetMenu: unsafe extern "system" fn(*mut core::ffi::c_void, super::WindowsAndMessaging::HMENU, super::super::Foundation::HWND, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    SetMenu: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub GetMenu: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::WindowsAndMessaging::HMENU, *mut super::super::Foundation::HWND, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    GetMenu: usize,
    #[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
    pub InvalidateItem: unsafe extern "system" fn(*mut core::ffi::c_void, *const SMDATA, u32) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging")))]
    InvalidateItem: usize,
    #[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
    pub GetState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SMDATA) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging")))]
    GetState: usize,
    pub SetMenuToolbar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellMenu_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, psmc: windows_core::Ref<IShellMenuCallback>, uid: u32, uidancestor: u32, dwflags: u32) -> windows_core::Result<()>;
    fn GetMenuInfo(&self, ppsmc: windows_core::OutRef<IShellMenuCallback>, puid: *mut u32, puidancestor: *mut u32, pdwflags: *mut u32) -> windows_core::Result<()>;
    fn SetShellFolder(&self, psf: windows_core::Ref<IShellFolder>, pidlfolder: *const Common::ITEMIDLIST, hkey: super::super::System::Registry::HKEY, dwflags: u32) -> windows_core::Result<()>;
    fn GetShellFolder(&self, pdwflags: *mut u32, ppidl: *mut *mut Common::ITEMIDLIST, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn SetMenu(&self, hmenu: super::WindowsAndMessaging::HMENU, hwnd: super::super::Foundation::HWND, dwflags: u32) -> windows_core::Result<()>;
    fn GetMenu(&self, phmenu: *mut super::WindowsAndMessaging::HMENU, phwnd: *mut super::super::Foundation::HWND, pdwflags: *mut u32) -> windows_core::Result<()>;
    fn InvalidateItem(&self, psmd: *const SMDATA, dwflags: u32) -> windows_core::Result<()>;
    fn GetState(&self, psmd: *mut SMDATA) -> windows_core::Result<()>;
    fn SetMenuToolbar(&self, punk: windows_core::Ref<windows_core::IUnknown>, dwflags: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellMenu_Vtbl {
    pub const fn new<Identity: IShellMenu_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: IShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psmc: *mut core::ffi::c_void, uid: u32, uidancestor: u32, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellMenu_Impl::Initialize(this, core::mem::transmute_copy(&psmc), core::mem::transmute_copy(&uid), core::mem::transmute_copy(&uidancestor), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn GetMenuInfo<Identity: IShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsmc: *mut *mut core::ffi::c_void, puid: *mut u32, puidancestor: *mut u32, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellMenu_Impl::GetMenuInfo(this, core::mem::transmute_copy(&ppsmc), core::mem::transmute_copy(&puid), core::mem::transmute_copy(&puidancestor), core::mem::transmute_copy(&pdwflags)).into()
            }
        }
        unsafe extern "system" fn SetShellFolder<Identity: IShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psf: *mut core::ffi::c_void, pidlfolder: *const Common::ITEMIDLIST, hkey: super::super::System::Registry::HKEY, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellMenu_Impl::SetShellFolder(this, core::mem::transmute_copy(&psf), core::mem::transmute_copy(&pidlfolder), core::mem::transmute_copy(&hkey), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn GetShellFolder<Identity: IShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32, ppidl: *mut *mut Common::ITEMIDLIST, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellMenu_Impl::GetShellFolder(this, core::mem::transmute_copy(&pdwflags), core::mem::transmute_copy(&ppidl), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn SetMenu<Identity: IShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hmenu: super::WindowsAndMessaging::HMENU, hwnd: super::super::Foundation::HWND, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellMenu_Impl::SetMenu(this, core::mem::transmute_copy(&hmenu), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn GetMenu<Identity: IShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phmenu: *mut super::WindowsAndMessaging::HMENU, phwnd: *mut super::super::Foundation::HWND, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellMenu_Impl::GetMenu(this, core::mem::transmute_copy(&phmenu), core::mem::transmute_copy(&phwnd), core::mem::transmute_copy(&pdwflags)).into()
            }
        }
        unsafe extern "system" fn InvalidateItem<Identity: IShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psmd: *const SMDATA, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellMenu_Impl::InvalidateItem(this, core::mem::transmute_copy(&psmd), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn GetState<Identity: IShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psmd: *mut SMDATA) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellMenu_Impl::GetState(this, core::mem::transmute_copy(&psmd)).into()
            }
        }
        unsafe extern "system" fn SetMenuToolbar<Identity: IShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellMenu_Impl::SetMenuToolbar(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetMenuInfo: GetMenuInfo::<Identity, OFFSET>,
            SetShellFolder: SetShellFolder::<Identity, OFFSET>,
            GetShellFolder: GetShellFolder::<Identity, OFFSET>,
            SetMenu: SetMenu::<Identity, OFFSET>,
            GetMenu: GetMenu::<Identity, OFFSET>,
            InvalidateItem: InvalidateItem::<Identity, OFFSET>,
            GetState: GetState::<Identity, OFFSET>,
            SetMenuToolbar: SetMenuToolbar::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellMenu as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellMenu {}
windows_core::imp::define_interface!(IShellMenuCallback, IShellMenuCallback_Vtbl, 0x4ca300a1_9b8d_11d1_8b22_00c04fd918d0);
windows_core::imp::interface_hierarchy!(IShellMenuCallback, windows_core::IUnknown);
impl IShellMenuCallback {
    #[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
    pub unsafe fn CallbackSM(&self, psmd: *mut SMDATA, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CallbackSM)(windows_core::Interface::as_raw(self), core::mem::transmute(psmd), umsg, wparam, lparam).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellMenuCallback_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
    pub CallbackSM: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SMDATA, u32, super::super::Foundation::WPARAM, super::super::Foundation::LPARAM) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging")))]
    CallbackSM: usize,
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellMenuCallback_Impl: windows_core::IUnknownImpl {
    fn CallbackSM(&self, psmd: *mut SMDATA, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellMenuCallback_Vtbl {
    pub const fn new<Identity: IShellMenuCallback_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CallbackSM<Identity: IShellMenuCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psmd: *mut SMDATA, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellMenuCallback_Impl::CallbackSM(this, core::mem::transmute_copy(&psmd), core::mem::transmute_copy(&umsg), core::mem::transmute_copy(&wparam), core::mem::transmute_copy(&lparam)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CallbackSM: CallbackSM::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellMenuCallback as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellMenuCallback {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellNameSpace, IShellNameSpace_Vtbl, 0xe572d3c9_37be_4ae2_825d_d521763e3108);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellNameSpace {
    type Target = IShellFavoritesNameSpace;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellNameSpace, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellFavoritesNameSpace);
#[cfg(feature = "Win32_System_Com")]
impl IShellNameSpace {
    pub unsafe fn EnumOptions(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumOptions)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetEnumOptions(&self, lval: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetEnumOptions)(windows_core::Interface::as_raw(self), lval).ok() }
    }
    pub unsafe fn SelectedItem(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SelectedItem)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn SetSelectedItem<P0>(&self, pitem: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IDispatch>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetSelectedItem)(windows_core::Interface::as_raw(self), pitem.param().abi()).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Root(&self) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Root)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn SetRoot(&self, var: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRoot)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(var)).ok() }
    }
    pub unsafe fn Depth(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Depth)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetDepth(&self, idepth: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetDepth)(windows_core::Interface::as_raw(self), idepth).ok() }
    }
    pub unsafe fn Mode(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Mode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetMode(&self, umode: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetMode)(windows_core::Interface::as_raw(self), umode).ok() }
    }
    pub unsafe fn Flags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Flags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetFlags(&self, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFlags)(windows_core::Interface::as_raw(self), dwflags).ok() }
    }
    pub unsafe fn SetTVFlags(&self, dwflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTVFlags)(windows_core::Interface::as_raw(self), dwflags).ok() }
    }
    pub unsafe fn TVFlags(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).TVFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Columns(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Columns)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SetColumns(&self, bstrcolumns: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetColumns)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrcolumns)).ok() }
    }
    pub unsafe fn CountViewTypes(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CountViewTypes)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetViewType(&self, itype: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetViewType)(windows_core::Interface::as_raw(self), itype).ok() }
    }
    pub unsafe fn SelectedItems(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SelectedItems)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Expand(&self, var: &super::super::System::Variant::VARIANT, idepth: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Expand)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(var), idepth).ok() }
    }
    pub unsafe fn UnselectAll(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UnselectAll)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellNameSpace_Vtbl {
    pub base__: IShellFavoritesNameSpace_Vtbl,
    pub EnumOptions: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetEnumOptions: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SelectedItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetSelectedItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Root: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Root: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub SetRoot: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    SetRoot: usize,
    pub Depth: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetDepth: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Mode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetMode: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Flags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub SetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub SetTVFlags: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub TVFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Columns: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetColumns: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CountViewTypes: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetViewType: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub SelectedItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Expand: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, i32) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Expand: usize,
    pub UnselectAll: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellNameSpace_Impl: IShellFavoritesNameSpace_Impl {
    fn EnumOptions(&self) -> windows_core::Result<i32>;
    fn SetEnumOptions(&self, lval: i32) -> windows_core::Result<()>;
    fn SelectedItem(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn SetSelectedItem(&self, pitem: windows_core::Ref<super::super::System::Com::IDispatch>) -> windows_core::Result<()>;
    fn Root(&self) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn SetRoot(&self, var: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn Depth(&self) -> windows_core::Result<i32>;
    fn SetDepth(&self, idepth: i32) -> windows_core::Result<()>;
    fn Mode(&self) -> windows_core::Result<u32>;
    fn SetMode(&self, umode: u32) -> windows_core::Result<()>;
    fn Flags(&self) -> windows_core::Result<u32>;
    fn SetFlags(&self, dwflags: u32) -> windows_core::Result<()>;
    fn SetTVFlags(&self, dwflags: u32) -> windows_core::Result<()>;
    fn TVFlags(&self) -> windows_core::Result<u32>;
    fn Columns(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetColumns(&self, bstrcolumns: &windows_core::BSTR) -> windows_core::Result<()>;
    fn CountViewTypes(&self) -> windows_core::Result<i32>;
    fn SetViewType(&self, itype: i32) -> windows_core::Result<()>;
    fn SelectedItems(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Expand(&self, var: &super::super::System::Variant::VARIANT, idepth: i32) -> windows_core::Result<()>;
    fn UnselectAll(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellNameSpace_Vtbl {
    pub const fn new<Identity: IShellNameSpace_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn EnumOptions<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pgrfenumflags: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellNameSpace_Impl::EnumOptions(this) {
                    Ok(ok__) => {
                        pgrfenumflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetEnumOptions<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lval: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::SetEnumOptions(this, core::mem::transmute_copy(&lval)).into()
            }
        }
        unsafe extern "system" fn SelectedItem<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitem: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellNameSpace_Impl::SelectedItem(this) {
                    Ok(ok__) => {
                        pitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetSelectedItem<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::SetSelectedItem(this, core::mem::transmute_copy(&pitem)).into()
            }
        }
        unsafe extern "system" fn Root<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvar: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellNameSpace_Impl::Root(this) {
                    Ok(ok__) => {
                        pvar.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRoot<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, var: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::SetRoot(this, core::mem::transmute(&var)).into()
            }
        }
        unsafe extern "system" fn Depth<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidepth: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellNameSpace_Impl::Depth(this) {
                    Ok(ok__) => {
                        pidepth.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetDepth<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, idepth: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::SetDepth(this, core::mem::transmute_copy(&idepth)).into()
            }
        }
        unsafe extern "system" fn Mode<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pumode: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellNameSpace_Impl::Mode(this) {
                    Ok(ok__) => {
                        pumode.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetMode<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, umode: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::SetMode(this, core::mem::transmute_copy(&umode)).into()
            }
        }
        unsafe extern "system" fn Flags<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellNameSpace_Impl::Flags(this) {
                    Ok(ok__) => {
                        pdwflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetFlags<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::SetFlags(this, core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn SetTVFlags<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::SetTVFlags(this, core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn TVFlags<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellNameSpace_Impl::TVFlags(this) {
                    Ok(ok__) => {
                        dwflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Columns<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrcolumns: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellNameSpace_Impl::Columns(this) {
                    Ok(ok__) => {
                        bstrcolumns.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetColumns<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrcolumns: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::SetColumns(this, core::mem::transmute(&bstrcolumns)).into()
            }
        }
        unsafe extern "system" fn CountViewTypes<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitypes: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellNameSpace_Impl::CountViewTypes(this) {
                    Ok(ok__) => {
                        pitypes.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetViewType<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, itype: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::SetViewType(this, core::mem::transmute_copy(&itype)).into()
            }
        }
        unsafe extern "system" fn SelectedItems<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppid: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellNameSpace_Impl::SelectedItems(this) {
                    Ok(ok__) => {
                        ppid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Expand<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, var: super::super::System::Variant::VARIANT, idepth: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::Expand(this, core::mem::transmute(&var), core::mem::transmute_copy(&idepth)).into()
            }
        }
        unsafe extern "system" fn UnselectAll<Identity: IShellNameSpace_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellNameSpace_Impl::UnselectAll(this).into()
            }
        }
        Self {
            base__: IShellFavoritesNameSpace_Vtbl::new::<Identity, OFFSET>(),
            EnumOptions: EnumOptions::<Identity, OFFSET>,
            SetEnumOptions: SetEnumOptions::<Identity, OFFSET>,
            SelectedItem: SelectedItem::<Identity, OFFSET>,
            SetSelectedItem: SetSelectedItem::<Identity, OFFSET>,
            Root: Root::<Identity, OFFSET>,
            SetRoot: SetRoot::<Identity, OFFSET>,
            Depth: Depth::<Identity, OFFSET>,
            SetDepth: SetDepth::<Identity, OFFSET>,
            Mode: Mode::<Identity, OFFSET>,
            SetMode: SetMode::<Identity, OFFSET>,
            Flags: Flags::<Identity, OFFSET>,
            SetFlags: SetFlags::<Identity, OFFSET>,
            SetTVFlags: SetTVFlags::<Identity, OFFSET>,
            TVFlags: TVFlags::<Identity, OFFSET>,
            Columns: Columns::<Identity, OFFSET>,
            SetColumns: SetColumns::<Identity, OFFSET>,
            CountViewTypes: CountViewTypes::<Identity, OFFSET>,
            SetViewType: SetViewType::<Identity, OFFSET>,
            SelectedItems: SelectedItems::<Identity, OFFSET>,
            Expand: Expand::<Identity, OFFSET>,
            UnselectAll: UnselectAll::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellNameSpace as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellFavoritesNameSpace as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellNameSpace {}
windows_core::imp::define_interface!(IShellPropSheetExt, IShellPropSheetExt_Vtbl, 0x000214e9_0000_0000_c000_000000000046);
windows_core::imp::interface_hierarchy!(IShellPropSheetExt, windows_core::IUnknown);
impl IShellPropSheetExt {
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn AddPages(&self, pfnaddpage: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddPages)(windows_core::Interface::as_raw(self), pfnaddpage, lparam).ok() }
    }
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn ReplacePage(&self, upageid: u32, pfnreplacewith: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReplacePage)(windows_core::Interface::as_raw(self), upageid, pfnreplacewith, lparam).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellPropSheetExt_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Controls")]
    pub AddPages: unsafe extern "system" fn(*mut core::ffi::c_void, super::Controls::LPFNSVADDPROPSHEETPAGE, super::super::Foundation::LPARAM) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    AddPages: usize,
    #[cfg(feature = "Win32_UI_Controls")]
    pub ReplacePage: unsafe extern "system" fn(*mut core::ffi::c_void, u32, super::Controls::LPFNSVADDPROPSHEETPAGE, super::super::Foundation::LPARAM) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    ReplacePage: usize,
}
#[cfg(feature = "Win32_UI_Controls")]
pub trait IShellPropSheetExt_Impl: windows_core::IUnknownImpl {
    fn AddPages(&self, pfnaddpage: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
    fn ReplacePage(&self, upageid: u32, pfnreplacewith: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Controls")]
impl IShellPropSheetExt_Vtbl {
    pub const fn new<Identity: IShellPropSheetExt_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddPages<Identity: IShellPropSheetExt_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfnaddpage: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellPropSheetExt_Impl::AddPages(this, core::mem::transmute_copy(&pfnaddpage), core::mem::transmute_copy(&lparam)).into()
            }
        }
        unsafe extern "system" fn ReplacePage<Identity: IShellPropSheetExt_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, upageid: u32, pfnreplacewith: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellPropSheetExt_Impl::ReplacePage(this, core::mem::transmute_copy(&upageid), core::mem::transmute_copy(&pfnreplacewith), core::mem::transmute_copy(&lparam)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddPages: AddPages::<Identity, OFFSET>,
            ReplacePage: ReplacePage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellPropSheetExt as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Controls")]
impl windows_core::RuntimeName for IShellPropSheetExt {}
windows_core::imp::define_interface!(IShellRunDll, IShellRunDll_Vtbl, 0xfce4bde0_4b68_4b80_8e9c_7426315a7388);
windows_core::imp::interface_hierarchy!(IShellRunDll, windows_core::IUnknown);
impl IShellRunDll {
    pub unsafe fn Run<P0>(&self, pszargs: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).Run)(windows_core::Interface::as_raw(self), pszargs.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellRunDll_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Run: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IShellRunDll_Impl: windows_core::IUnknownImpl {
    fn Run(&self, pszargs: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IShellRunDll_Vtbl {
    pub const fn new<Identity: IShellRunDll_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Run<Identity: IShellRunDll_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszargs: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellRunDll_Impl::Run(this, core::mem::transmute(&pszargs)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Run: Run::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellRunDll as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellRunDll {}
windows_core::imp::define_interface!(IShellService, IShellService_Vtbl, 0x5836fb00_8187_11cf_a12b_00aa004ae837);
windows_core::imp::interface_hierarchy!(IShellService, windows_core::IUnknown);
impl IShellService {
    pub unsafe fn SetOwner<P0>(&self, punkowner: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOwner)(windows_core::Interface::as_raw(self), punkowner.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellService_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetOwner: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IShellService_Impl: windows_core::IUnknownImpl {
    fn SetOwner(&self, punkowner: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl IShellService_Vtbl {
    pub const fn new<Identity: IShellService_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetOwner<Identity: IShellService_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punkowner: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellService_Impl::SetOwner(this, core::mem::transmute_copy(&punkowner)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetOwner: SetOwner::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellService as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellService {}
windows_core::imp::define_interface!(IShellTaskScheduler, IShellTaskScheduler_Vtbl, 0x6ccb7be0_6807_11d0_b810_00c04fd706ec);
windows_core::imp::interface_hierarchy!(IShellTaskScheduler, windows_core::IUnknown);
impl IShellTaskScheduler {
    pub unsafe fn AddTask<P0>(&self, prt: P0, rtoid: *const windows_core::GUID, lparam: usize, dwpriority: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IRunnableTask>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddTask)(windows_core::Interface::as_raw(self), prt.param().abi(), rtoid, lparam, dwpriority).ok() }
    }
    pub unsafe fn RemoveTasks(&self, rtoid: *const windows_core::GUID, lparam: usize, bwaitifrunning: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveTasks)(windows_core::Interface::as_raw(self), rtoid, lparam, bwaitifrunning.into()).ok() }
    }
    pub unsafe fn CountTasks(&self, rtoid: *const windows_core::GUID) -> u32 {
        unsafe { (windows_core::Interface::vtable(self).CountTasks)(windows_core::Interface::as_raw(self), rtoid) }
    }
    pub unsafe fn Status(&self, dwreleasestatus: u32, dwthreadtimeout: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Status)(windows_core::Interface::as_raw(self), dwreleasestatus, dwthreadtimeout).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IShellTaskScheduler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AddTask: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const windows_core::GUID, usize, u32) -> windows_core::HRESULT,
    pub RemoveTasks: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, usize, windows_core::BOOL) -> windows_core::HRESULT,
    pub CountTasks: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> u32,
    pub Status: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32) -> windows_core::HRESULT,
}
pub trait IShellTaskScheduler_Impl: windows_core::IUnknownImpl {
    fn AddTask(&self, prt: windows_core::Ref<IRunnableTask>, rtoid: *const windows_core::GUID, lparam: usize, dwpriority: u32) -> windows_core::Result<()>;
    fn RemoveTasks(&self, rtoid: *const windows_core::GUID, lparam: usize, bwaitifrunning: windows_core::BOOL) -> windows_core::Result<()>;
    fn CountTasks(&self, rtoid: *const windows_core::GUID) -> u32;
    fn Status(&self, dwreleasestatus: u32, dwthreadtimeout: u32) -> windows_core::Result<()>;
}
impl IShellTaskScheduler_Vtbl {
    pub const fn new<Identity: IShellTaskScheduler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddTask<Identity: IShellTaskScheduler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prt: *mut core::ffi::c_void, rtoid: *const windows_core::GUID, lparam: usize, dwpriority: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellTaskScheduler_Impl::AddTask(this, core::mem::transmute_copy(&prt), core::mem::transmute_copy(&rtoid), core::mem::transmute_copy(&lparam), core::mem::transmute_copy(&dwpriority)).into()
            }
        }
        unsafe extern "system" fn RemoveTasks<Identity: IShellTaskScheduler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtoid: *const windows_core::GUID, lparam: usize, bwaitifrunning: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellTaskScheduler_Impl::RemoveTasks(this, core::mem::transmute_copy(&rtoid), core::mem::transmute_copy(&lparam), core::mem::transmute_copy(&bwaitifrunning)).into()
            }
        }
        unsafe extern "system" fn CountTasks<Identity: IShellTaskScheduler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rtoid: *const windows_core::GUID) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellTaskScheduler_Impl::CountTasks(this, core::mem::transmute_copy(&rtoid))
            }
        }
        unsafe extern "system" fn Status<Identity: IShellTaskScheduler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwreleasestatus: u32, dwthreadtimeout: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellTaskScheduler_Impl::Status(this, core::mem::transmute_copy(&dwreleasestatus), core::mem::transmute_copy(&dwthreadtimeout)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddTask: AddTask::<Identity, OFFSET>,
            RemoveTasks: RemoveTasks::<Identity, OFFSET>,
            CountTasks: CountTasks::<Identity, OFFSET>,
            Status: Status::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellTaskScheduler as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IShellTaskScheduler {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellUIHelper, IShellUIHelper_Vtbl, 0x729fe2f8_1ea8_11d1_8f85_00c04fc2fbe1);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellUIHelper {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellUIHelper, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper {
    pub unsafe fn ResetFirstBootMode(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetFirstBootMode)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ResetSafeMode(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetSafeMode)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn RefreshOfflineDesktop(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RefreshOfflineDesktop)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn AddFavorite(&self, url: &windows_core::BSTR, title: Option<*const super::super::System::Variant::VARIANT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddFavorite)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url), title.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn AddChannel(&self, url: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddChannel)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn AddDesktopComponent(&self, url: &windows_core::BSTR, r#type: &windows_core::BSTR, left: Option<*const super::super::System::Variant::VARIANT>, top: Option<*const super::super::System::Variant::VARIANT>, width: Option<*const super::super::System::Variant::VARIANT>, height: Option<*const super::super::System::Variant::VARIANT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddDesktopComponent)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url), core::mem::transmute_copy(r#type), left.unwrap_or(core::mem::zeroed()) as _, top.unwrap_or(core::mem::zeroed()) as _, width.unwrap_or(core::mem::zeroed()) as _, height.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn IsSubscribed(&self, url: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsSubscribed)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url), &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn NavigateAndFind(&self, url: &windows_core::BSTR, strquery: &windows_core::BSTR, vartargetframe: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).NavigateAndFind)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url), core::mem::transmute_copy(strquery), core::mem::transmute(vartargetframe)).ok() }
    }
    pub unsafe fn ImportExportFavorites(&self, fimport: super::super::Foundation::VARIANT_BOOL, strimpexppath: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ImportExportFavorites)(windows_core::Interface::as_raw(self), fimport, core::mem::transmute_copy(strimpexppath)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn AutoCompleteSaveForm(&self, form: Option<*const super::super::System::Variant::VARIANT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AutoCompleteSaveForm)(windows_core::Interface::as_raw(self), form.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn AutoScan(&self, strsearch: &windows_core::BSTR, strfailureurl: &windows_core::BSTR, pvartargetframe: Option<*const super::super::System::Variant::VARIANT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AutoScan)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(strsearch), core::mem::transmute_copy(strfailureurl), pvartargetframe.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn AutoCompleteAttach(&self, reserved: Option<*const super::super::System::Variant::VARIANT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AutoCompleteAttach)(windows_core::Interface::as_raw(self), reserved.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn ShowBrowserUI(&self, bstrname: &windows_core::BSTR, pvarin: *const super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ShowBrowserUI)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrname), core::mem::transmute(pvarin), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellUIHelper_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub ResetFirstBootMode: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ResetSafeMode: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RefreshOfflineDesktop: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub AddFavorite: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    AddFavorite: usize,
    pub AddChannel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub AddDesktopComponent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    AddDesktopComponent: usize,
    pub IsSubscribed: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub NavigateAndFind: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    NavigateAndFind: usize,
    pub ImportExportFavorites: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub AutoCompleteSaveForm: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    AutoCompleteSaveForm: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub AutoScan: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    AutoScan: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub AutoCompleteAttach: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    AutoCompleteAttach: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub ShowBrowserUI: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::System::Variant::VARIANT, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    ShowBrowserUI: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellUIHelper_Impl: super::super::System::Com::IDispatch_Impl {
    fn ResetFirstBootMode(&self) -> windows_core::Result<()>;
    fn ResetSafeMode(&self) -> windows_core::Result<()>;
    fn RefreshOfflineDesktop(&self) -> windows_core::Result<()>;
    fn AddFavorite(&self, url: &windows_core::BSTR, title: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn AddChannel(&self, url: &windows_core::BSTR) -> windows_core::Result<()>;
    fn AddDesktopComponent(&self, url: &windows_core::BSTR, r#type: &windows_core::BSTR, left: *const super::super::System::Variant::VARIANT, top: *const super::super::System::Variant::VARIANT, width: *const super::super::System::Variant::VARIANT, height: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn IsSubscribed(&self, url: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn NavigateAndFind(&self, url: &windows_core::BSTR, strquery: &windows_core::BSTR, vartargetframe: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn ImportExportFavorites(&self, fimport: super::super::Foundation::VARIANT_BOOL, strimpexppath: &windows_core::BSTR) -> windows_core::Result<()>;
    fn AutoCompleteSaveForm(&self, form: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn AutoScan(&self, strsearch: &windows_core::BSTR, strfailureurl: &windows_core::BSTR, pvartargetframe: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn AutoCompleteAttach(&self, reserved: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn ShowBrowserUI(&self, bstrname: &windows_core::BSTR, pvarin: *const super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Variant::VARIANT>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellUIHelper_Vtbl {
    pub const fn new<Identity: IShellUIHelper_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ResetFirstBootMode<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::ResetFirstBootMode(this).into()
            }
        }
        unsafe extern "system" fn ResetSafeMode<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::ResetSafeMode(this).into()
            }
        }
        unsafe extern "system" fn RefreshOfflineDesktop<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::RefreshOfflineDesktop(this).into()
            }
        }
        unsafe extern "system" fn AddFavorite<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void, title: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::AddFavorite(this, core::mem::transmute(&url), core::mem::transmute_copy(&title)).into()
            }
        }
        unsafe extern "system" fn AddChannel<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::AddChannel(this, core::mem::transmute(&url)).into()
            }
        }
        unsafe extern "system" fn AddDesktopComponent<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void, r#type: *mut core::ffi::c_void, left: *const super::super::System::Variant::VARIANT, top: *const super::super::System::Variant::VARIANT, width: *const super::super::System::Variant::VARIANT, height: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::AddDesktopComponent(this, core::mem::transmute(&url), core::mem::transmute(&r#type), core::mem::transmute_copy(&left), core::mem::transmute_copy(&top), core::mem::transmute_copy(&width), core::mem::transmute_copy(&height)).into()
            }
        }
        unsafe extern "system" fn IsSubscribed<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper_Impl::IsSubscribed(this, core::mem::transmute(&url)) {
                    Ok(ok__) => {
                        pbool.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn NavigateAndFind<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void, strquery: *mut core::ffi::c_void, vartargetframe: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::NavigateAndFind(this, core::mem::transmute(&url), core::mem::transmute(&strquery), core::mem::transmute_copy(&vartargetframe)).into()
            }
        }
        unsafe extern "system" fn ImportExportFavorites<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fimport: super::super::Foundation::VARIANT_BOOL, strimpexppath: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::ImportExportFavorites(this, core::mem::transmute_copy(&fimport), core::mem::transmute(&strimpexppath)).into()
            }
        }
        unsafe extern "system" fn AutoCompleteSaveForm<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, form: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::AutoCompleteSaveForm(this, core::mem::transmute_copy(&form)).into()
            }
        }
        unsafe extern "system" fn AutoScan<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, strsearch: *mut core::ffi::c_void, strfailureurl: *mut core::ffi::c_void, pvartargetframe: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::AutoScan(this, core::mem::transmute(&strsearch), core::mem::transmute(&strfailureurl), core::mem::transmute_copy(&pvartargetframe)).into()
            }
        }
        unsafe extern "system" fn AutoCompleteAttach<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, reserved: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper_Impl::AutoCompleteAttach(this, core::mem::transmute_copy(&reserved)).into()
            }
        }
        unsafe extern "system" fn ShowBrowserUI<Identity: IShellUIHelper_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrname: *mut core::ffi::c_void, pvarin: *const super::super::System::Variant::VARIANT, pvarout: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper_Impl::ShowBrowserUI(this, core::mem::transmute(&bstrname), core::mem::transmute_copy(&pvarin)) {
                    Ok(ok__) => {
                        pvarout.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            ResetFirstBootMode: ResetFirstBootMode::<Identity, OFFSET>,
            ResetSafeMode: ResetSafeMode::<Identity, OFFSET>,
            RefreshOfflineDesktop: RefreshOfflineDesktop::<Identity, OFFSET>,
            AddFavorite: AddFavorite::<Identity, OFFSET>,
            AddChannel: AddChannel::<Identity, OFFSET>,
            AddDesktopComponent: AddDesktopComponent::<Identity, OFFSET>,
            IsSubscribed: IsSubscribed::<Identity, OFFSET>,
            NavigateAndFind: NavigateAndFind::<Identity, OFFSET>,
            ImportExportFavorites: ImportExportFavorites::<Identity, OFFSET>,
            AutoCompleteSaveForm: AutoCompleteSaveForm::<Identity, OFFSET>,
            AutoScan: AutoScan::<Identity, OFFSET>,
            AutoCompleteAttach: AutoCompleteAttach::<Identity, OFFSET>,
            ShowBrowserUI: ShowBrowserUI::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellUIHelper {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellUIHelper2, IShellUIHelper2_Vtbl, 0xa7fe6eda_1932_4281_b881_87b31b8bc52c);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellUIHelper2 {
    type Target = IShellUIHelper;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellUIHelper2, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellUIHelper);
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper2 {
    pub unsafe fn AddSearchProvider(&self, url: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddSearchProvider)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url)).ok() }
    }
    pub unsafe fn RunOnceShown(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RunOnceShown)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SkipRunOnce(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SkipRunOnce)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn CustomizeSettings(&self, fsqm: super::super::Foundation::VARIANT_BOOL, fphishing: super::super::Foundation::VARIANT_BOOL, bstrlocale: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CustomizeSettings)(windows_core::Interface::as_raw(self), fsqm, fphishing, core::mem::transmute_copy(bstrlocale)).ok() }
    }
    pub unsafe fn SqmEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SqmEnabled)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn PhishingEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).PhishingEnabled)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn BrandImageUri(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).BrandImageUri)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SkipTabsWelcome(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SkipTabsWelcome)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn DiagnoseConnection(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DiagnoseConnection)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn CustomizeClearType(&self, fset: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CustomizeClearType)(windows_core::Interface::as_raw(self), fset).ok() }
    }
    pub unsafe fn IsSearchProviderInstalled(&self, url: &windows_core::BSTR) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsSearchProviderInstalled)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsSearchMigrated(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsSearchMigrated)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DefaultSearchProvider(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).DefaultSearchProvider)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn RunOnceRequiredSettingsComplete(&self, fcomplete: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RunOnceRequiredSettingsComplete)(windows_core::Interface::as_raw(self), fcomplete).ok() }
    }
    pub unsafe fn RunOnceHasShown(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RunOnceHasShown)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SearchGuideUrl(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SearchGuideUrl)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellUIHelper2_Vtbl {
    pub base__: IShellUIHelper_Vtbl,
    pub AddSearchProvider: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RunOnceShown: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SkipRunOnce: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CustomizeSettings: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL, super::super::Foundation::VARIANT_BOOL, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SqmEnabled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub PhishingEnabled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub BrandImageUri: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SkipTabsWelcome: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub DiagnoseConnection: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CustomizeClearType: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub IsSearchProviderInstalled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub IsSearchMigrated: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub DefaultSearchProvider: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RunOnceRequiredSettingsComplete: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub RunOnceHasShown: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SearchGuideUrl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellUIHelper2_Impl: IShellUIHelper_Impl {
    fn AddSearchProvider(&self, url: &windows_core::BSTR) -> windows_core::Result<()>;
    fn RunOnceShown(&self) -> windows_core::Result<()>;
    fn SkipRunOnce(&self) -> windows_core::Result<()>;
    fn CustomizeSettings(&self, fsqm: super::super::Foundation::VARIANT_BOOL, fphishing: super::super::Foundation::VARIANT_BOOL, bstrlocale: &windows_core::BSTR) -> windows_core::Result<()>;
    fn SqmEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn PhishingEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn BrandImageUri(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SkipTabsWelcome(&self) -> windows_core::Result<()>;
    fn DiagnoseConnection(&self) -> windows_core::Result<()>;
    fn CustomizeClearType(&self, fset: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn IsSearchProviderInstalled(&self, url: &windows_core::BSTR) -> windows_core::Result<u32>;
    fn IsSearchMigrated(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn DefaultSearchProvider(&self) -> windows_core::Result<windows_core::BSTR>;
    fn RunOnceRequiredSettingsComplete(&self, fcomplete: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn RunOnceHasShown(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SearchGuideUrl(&self) -> windows_core::Result<windows_core::BSTR>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellUIHelper2_Vtbl {
    pub const fn new<Identity: IShellUIHelper2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddSearchProvider<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper2_Impl::AddSearchProvider(this, core::mem::transmute(&url)).into()
            }
        }
        unsafe extern "system" fn RunOnceShown<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper2_Impl::RunOnceShown(this).into()
            }
        }
        unsafe extern "system" fn SkipRunOnce<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper2_Impl::SkipRunOnce(this).into()
            }
        }
        unsafe extern "system" fn CustomizeSettings<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fsqm: super::super::Foundation::VARIANT_BOOL, fphishing: super::super::Foundation::VARIANT_BOOL, bstrlocale: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper2_Impl::CustomizeSettings(this, core::mem::transmute_copy(&fsqm), core::mem::transmute_copy(&fphishing), core::mem::transmute(&bstrlocale)).into()
            }
        }
        unsafe extern "system" fn SqmEnabled<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper2_Impl::SqmEnabled(this) {
                    Ok(ok__) => {
                        pfenabled.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn PhishingEnabled<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper2_Impl::PhishingEnabled(this) {
                    Ok(ok__) => {
                        pfenabled.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn BrandImageUri<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstruri: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper2_Impl::BrandImageUri(this) {
                    Ok(ok__) => {
                        pbstruri.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SkipTabsWelcome<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper2_Impl::SkipTabsWelcome(this).into()
            }
        }
        unsafe extern "system" fn DiagnoseConnection<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper2_Impl::DiagnoseConnection(this).into()
            }
        }
        unsafe extern "system" fn CustomizeClearType<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fset: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper2_Impl::CustomizeClearType(this, core::mem::transmute_copy(&fset)).into()
            }
        }
        unsafe extern "system" fn IsSearchProviderInstalled<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void, pdwresult: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper2_Impl::IsSearchProviderInstalled(this, core::mem::transmute(&url)) {
                    Ok(ok__) => {
                        pdwresult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsSearchMigrated<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfmigrated: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper2_Impl::IsSearchMigrated(this) {
                    Ok(ok__) => {
                        pfmigrated.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DefaultSearchProvider<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrname: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper2_Impl::DefaultSearchProvider(this) {
                    Ok(ok__) => {
                        pbstrname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RunOnceRequiredSettingsComplete<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fcomplete: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper2_Impl::RunOnceRequiredSettingsComplete(this, core::mem::transmute_copy(&fcomplete)).into()
            }
        }
        unsafe extern "system" fn RunOnceHasShown<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfshown: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper2_Impl::RunOnceHasShown(this) {
                    Ok(ok__) => {
                        pfshown.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SearchGuideUrl<Identity: IShellUIHelper2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrurl: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper2_Impl::SearchGuideUrl(this) {
                    Ok(ok__) => {
                        pbstrurl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IShellUIHelper_Vtbl::new::<Identity, OFFSET>(),
            AddSearchProvider: AddSearchProvider::<Identity, OFFSET>,
            RunOnceShown: RunOnceShown::<Identity, OFFSET>,
            SkipRunOnce: SkipRunOnce::<Identity, OFFSET>,
            CustomizeSettings: CustomizeSettings::<Identity, OFFSET>,
            SqmEnabled: SqmEnabled::<Identity, OFFSET>,
            PhishingEnabled: PhishingEnabled::<Identity, OFFSET>,
            BrandImageUri: BrandImageUri::<Identity, OFFSET>,
            SkipTabsWelcome: SkipTabsWelcome::<Identity, OFFSET>,
            DiagnoseConnection: DiagnoseConnection::<Identity, OFFSET>,
            CustomizeClearType: CustomizeClearType::<Identity, OFFSET>,
            IsSearchProviderInstalled: IsSearchProviderInstalled::<Identity, OFFSET>,
            IsSearchMigrated: IsSearchMigrated::<Identity, OFFSET>,
            DefaultSearchProvider: DefaultSearchProvider::<Identity, OFFSET>,
            RunOnceRequiredSettingsComplete: RunOnceRequiredSettingsComplete::<Identity, OFFSET>,
            RunOnceHasShown: RunOnceHasShown::<Identity, OFFSET>,
            SearchGuideUrl: SearchGuideUrl::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellUIHelper2 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellUIHelper3, IShellUIHelper3_Vtbl, 0x528df2ec_d419_40bc_9b6d_dcdbf9c1b25d);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellUIHelper3 {
    type Target = IShellUIHelper2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellUIHelper3, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellUIHelper, IShellUIHelper2);
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper3 {
    pub unsafe fn AddService(&self, url: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddService)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url)).ok() }
    }
    pub unsafe fn IsServiceInstalled(&self, url: &windows_core::BSTR, verb: &windows_core::BSTR) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsServiceInstalled)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url), core::mem::transmute_copy(verb), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn InPrivateFilteringEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).InPrivateFilteringEnabled)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn AddToFavoritesBar(&self, url: &windows_core::BSTR, title: &windows_core::BSTR, r#type: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddToFavoritesBar)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url), core::mem::transmute_copy(title), core::mem::transmute(r#type)).ok() }
    }
    pub unsafe fn BuildNewTabPage(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).BuildNewTabPage)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetRecentlyClosedVisible(&self, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRecentlyClosedVisible)(windows_core::Interface::as_raw(self), fvisible).ok() }
    }
    pub unsafe fn SetActivitiesVisible(&self, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetActivitiesVisible)(windows_core::Interface::as_raw(self), fvisible).ok() }
    }
    pub unsafe fn ContentDiscoveryReset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ContentDiscoveryReset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsSuggestedSitesEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsSuggestedSitesEnabled)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn EnableSuggestedSites(&self, fenable: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EnableSuggestedSites)(windows_core::Interface::as_raw(self), fenable).ok() }
    }
    pub unsafe fn NavigateToSuggestedSites(&self, bstrrelativeurl: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).NavigateToSuggestedSites)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrrelativeurl)).ok() }
    }
    pub unsafe fn ShowTabsHelp(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowTabsHelp)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ShowInPrivateHelp(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowInPrivateHelp)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellUIHelper3_Vtbl {
    pub base__: IShellUIHelper2_Vtbl,
    pub AddService: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsServiceInstalled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub InPrivateFilteringEnabled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub AddToFavoritesBar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    AddToFavoritesBar: usize,
    pub BuildNewTabPage: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetRecentlyClosedVisible: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetActivitiesVisible: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub ContentDiscoveryReset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsSuggestedSitesEnabled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub EnableSuggestedSites: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub NavigateToSuggestedSites: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ShowTabsHelp: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ShowInPrivateHelp: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellUIHelper3_Impl: IShellUIHelper2_Impl {
    fn AddService(&self, url: &windows_core::BSTR) -> windows_core::Result<()>;
    fn IsServiceInstalled(&self, url: &windows_core::BSTR, verb: &windows_core::BSTR) -> windows_core::Result<u32>;
    fn InPrivateFilteringEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn AddToFavoritesBar(&self, url: &windows_core::BSTR, title: &windows_core::BSTR, r#type: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn BuildNewTabPage(&self) -> windows_core::Result<()>;
    fn SetRecentlyClosedVisible(&self, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetActivitiesVisible(&self, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn ContentDiscoveryReset(&self) -> windows_core::Result<()>;
    fn IsSuggestedSitesEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn EnableSuggestedSites(&self, fenable: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn NavigateToSuggestedSites(&self, bstrrelativeurl: &windows_core::BSTR) -> windows_core::Result<()>;
    fn ShowTabsHelp(&self) -> windows_core::Result<()>;
    fn ShowInPrivateHelp(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellUIHelper3_Vtbl {
    pub const fn new<Identity: IShellUIHelper3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddService<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper3_Impl::AddService(this, core::mem::transmute(&url)).into()
            }
        }
        unsafe extern "system" fn IsServiceInstalled<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void, verb: *mut core::ffi::c_void, pdwresult: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper3_Impl::IsServiceInstalled(this, core::mem::transmute(&url), core::mem::transmute(&verb)) {
                    Ok(ok__) => {
                        pdwresult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn InPrivateFilteringEnabled<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper3_Impl::InPrivateFilteringEnabled(this) {
                    Ok(ok__) => {
                        pfenabled.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddToFavoritesBar<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void, title: *mut core::ffi::c_void, r#type: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper3_Impl::AddToFavoritesBar(this, core::mem::transmute(&url), core::mem::transmute(&title), core::mem::transmute_copy(&r#type)).into()
            }
        }
        unsafe extern "system" fn BuildNewTabPage<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper3_Impl::BuildNewTabPage(this).into()
            }
        }
        unsafe extern "system" fn SetRecentlyClosedVisible<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper3_Impl::SetRecentlyClosedVisible(this, core::mem::transmute_copy(&fvisible)).into()
            }
        }
        unsafe extern "system" fn SetActivitiesVisible<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper3_Impl::SetActivitiesVisible(this, core::mem::transmute_copy(&fvisible)).into()
            }
        }
        unsafe extern "system" fn ContentDiscoveryReset<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper3_Impl::ContentDiscoveryReset(this).into()
            }
        }
        unsafe extern "system" fn IsSuggestedSitesEnabled<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper3_Impl::IsSuggestedSitesEnabled(this) {
                    Ok(ok__) => {
                        pfenabled.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnableSuggestedSites<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper3_Impl::EnableSuggestedSites(this, core::mem::transmute_copy(&fenable)).into()
            }
        }
        unsafe extern "system" fn NavigateToSuggestedSites<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrrelativeurl: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper3_Impl::NavigateToSuggestedSites(this, core::mem::transmute(&bstrrelativeurl)).into()
            }
        }
        unsafe extern "system" fn ShowTabsHelp<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper3_Impl::ShowTabsHelp(this).into()
            }
        }
        unsafe extern "system" fn ShowInPrivateHelp<Identity: IShellUIHelper3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper3_Impl::ShowInPrivateHelp(this).into()
            }
        }
        Self {
            base__: IShellUIHelper2_Vtbl::new::<Identity, OFFSET>(),
            AddService: AddService::<Identity, OFFSET>,
            IsServiceInstalled: IsServiceInstalled::<Identity, OFFSET>,
            InPrivateFilteringEnabled: InPrivateFilteringEnabled::<Identity, OFFSET>,
            AddToFavoritesBar: AddToFavoritesBar::<Identity, OFFSET>,
            BuildNewTabPage: BuildNewTabPage::<Identity, OFFSET>,
            SetRecentlyClosedVisible: SetRecentlyClosedVisible::<Identity, OFFSET>,
            SetActivitiesVisible: SetActivitiesVisible::<Identity, OFFSET>,
            ContentDiscoveryReset: ContentDiscoveryReset::<Identity, OFFSET>,
            IsSuggestedSitesEnabled: IsSuggestedSitesEnabled::<Identity, OFFSET>,
            EnableSuggestedSites: EnableSuggestedSites::<Identity, OFFSET>,
            NavigateToSuggestedSites: NavigateToSuggestedSites::<Identity, OFFSET>,
            ShowTabsHelp: ShowTabsHelp::<Identity, OFFSET>,
            ShowInPrivateHelp: ShowInPrivateHelp::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellUIHelper3 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellUIHelper4, IShellUIHelper4_Vtbl, 0xb36e6a53_8073_499e_824c_d776330a333e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellUIHelper4 {
    type Target = IShellUIHelper3;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellUIHelper4, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellUIHelper, IShellUIHelper2, IShellUIHelper3);
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper4 {
    pub unsafe fn msIsSiteMode(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).msIsSiteMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn msSiteModeShowThumbBar(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeShowThumbBar)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msSiteModeAddThumbBarButton(&self, bstriconurl: &windows_core::BSTR, bstrtooltip: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).msSiteModeAddThumbBarButton)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstriconurl), core::mem::transmute_copy(bstrtooltip), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msSiteModeUpdateThumbBarButton(&self, buttonid: &super::super::System::Variant::VARIANT, fenabled: super::super::Foundation::VARIANT_BOOL, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeUpdateThumbBarButton)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(buttonid), fenabled, fvisible).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msSiteModeSetIconOverlay(&self, iconurl: &windows_core::BSTR, pvardescription: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeSetIconOverlay)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(iconurl), core::mem::transmute(pvardescription)).ok() }
    }
    pub unsafe fn msSiteModeClearIconOverlay(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeClearIconOverlay)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn msAddSiteMode(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msAddSiteMode)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn msSiteModeCreateJumpList(&self, bstrheader: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeCreateJumpList)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrheader)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msSiteModeAddJumpListItem(&self, bstrname: &windows_core::BSTR, bstractionuri: &windows_core::BSTR, bstriconuri: &windows_core::BSTR, pvarwindowtype: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeAddJumpListItem)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrname), core::mem::transmute_copy(bstractionuri), core::mem::transmute_copy(bstriconuri), core::mem::transmute(pvarwindowtype)).ok() }
    }
    pub unsafe fn msSiteModeClearJumpList(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeClearJumpList)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn msSiteModeShowJumpList(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeShowJumpList)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msSiteModeAddButtonStyle(&self, uibuttonid: &super::super::System::Variant::VARIANT, bstriconurl: &windows_core::BSTR, bstrtooltip: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).msSiteModeAddButtonStyle)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(uibuttonid), core::mem::transmute_copy(bstriconurl), core::mem::transmute_copy(bstrtooltip), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msSiteModeShowButtonStyle(&self, uibuttonid: &super::super::System::Variant::VARIANT, uistyleid: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeShowButtonStyle)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(uibuttonid), core::mem::transmute_copy(uistyleid)).ok() }
    }
    pub unsafe fn msSiteModeActivate(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeActivate)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msIsSiteModeFirstRun(&self, fpreservestate: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).msIsSiteModeFirstRun)(windows_core::Interface::as_raw(self), fpreservestate, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn msAddTrackingProtectionList(&self, url: &windows_core::BSTR, bstrfiltername: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msAddTrackingProtectionList)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url), core::mem::transmute_copy(bstrfiltername)).ok() }
    }
    pub unsafe fn msTrackingProtectionEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).msTrackingProtectionEnabled)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn msActiveXFilteringEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).msActiveXFilteringEnabled)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellUIHelper4_Vtbl {
    pub base__: IShellUIHelper3_Vtbl,
    pub msIsSiteMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub msSiteModeShowThumbBar: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msSiteModeAddThumbBarButton: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msSiteModeAddThumbBarButton: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msSiteModeUpdateThumbBarButton: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::Foundation::VARIANT_BOOL, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msSiteModeUpdateThumbBarButton: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msSiteModeSetIconOverlay: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msSiteModeSetIconOverlay: usize,
    pub msSiteModeClearIconOverlay: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msAddSiteMode: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msSiteModeCreateJumpList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msSiteModeAddJumpListItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msSiteModeAddJumpListItem: usize,
    pub msSiteModeClearJumpList: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msSiteModeShowJumpList: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msSiteModeAddButtonStyle: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msSiteModeAddButtonStyle: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msSiteModeShowButtonStyle: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msSiteModeShowButtonStyle: usize,
    pub msSiteModeActivate: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msIsSiteModeFirstRun: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msIsSiteModeFirstRun: usize,
    pub msAddTrackingProtectionList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msTrackingProtectionEnabled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub msActiveXFilteringEnabled: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellUIHelper4_Impl: IShellUIHelper3_Impl {
    fn msIsSiteMode(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn msSiteModeShowThumbBar(&self) -> windows_core::Result<()>;
    fn msSiteModeAddThumbBarButton(&self, bstriconurl: &windows_core::BSTR, bstrtooltip: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn msSiteModeUpdateThumbBarButton(&self, buttonid: &super::super::System::Variant::VARIANT, fenabled: super::super::Foundation::VARIANT_BOOL, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn msSiteModeSetIconOverlay(&self, iconurl: &windows_core::BSTR, pvardescription: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn msSiteModeClearIconOverlay(&self) -> windows_core::Result<()>;
    fn msAddSiteMode(&self) -> windows_core::Result<()>;
    fn msSiteModeCreateJumpList(&self, bstrheader: &windows_core::BSTR) -> windows_core::Result<()>;
    fn msSiteModeAddJumpListItem(&self, bstrname: &windows_core::BSTR, bstractionuri: &windows_core::BSTR, bstriconuri: &windows_core::BSTR, pvarwindowtype: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn msSiteModeClearJumpList(&self) -> windows_core::Result<()>;
    fn msSiteModeShowJumpList(&self) -> windows_core::Result<()>;
    fn msSiteModeAddButtonStyle(&self, uibuttonid: &super::super::System::Variant::VARIANT, bstriconurl: &windows_core::BSTR, bstrtooltip: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn msSiteModeShowButtonStyle(&self, uibuttonid: &super::super::System::Variant::VARIANT, uistyleid: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn msSiteModeActivate(&self) -> windows_core::Result<()>;
    fn msIsSiteModeFirstRun(&self, fpreservestate: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn msAddTrackingProtectionList(&self, url: &windows_core::BSTR, bstrfiltername: &windows_core::BSTR) -> windows_core::Result<()>;
    fn msTrackingProtectionEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn msActiveXFilteringEnabled(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellUIHelper4_Vtbl {
    pub const fn new<Identity: IShellUIHelper4_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn msIsSiteMode<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfsitemode: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper4_Impl::msIsSiteMode(this) {
                    Ok(ok__) => {
                        pfsitemode.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn msSiteModeShowThumbBar<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msSiteModeShowThumbBar(this).into()
            }
        }
        unsafe extern "system" fn msSiteModeAddThumbBarButton<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstriconurl: *mut core::ffi::c_void, bstrtooltip: *mut core::ffi::c_void, pvarbuttonid: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper4_Impl::msSiteModeAddThumbBarButton(this, core::mem::transmute(&bstriconurl), core::mem::transmute(&bstrtooltip)) {
                    Ok(ok__) => {
                        pvarbuttonid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn msSiteModeUpdateThumbBarButton<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, buttonid: super::super::System::Variant::VARIANT, fenabled: super::super::Foundation::VARIANT_BOOL, fvisible: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msSiteModeUpdateThumbBarButton(this, core::mem::transmute(&buttonid), core::mem::transmute_copy(&fenabled), core::mem::transmute_copy(&fvisible)).into()
            }
        }
        unsafe extern "system" fn msSiteModeSetIconOverlay<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iconurl: *mut core::ffi::c_void, pvardescription: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msSiteModeSetIconOverlay(this, core::mem::transmute(&iconurl), core::mem::transmute_copy(&pvardescription)).into()
            }
        }
        unsafe extern "system" fn msSiteModeClearIconOverlay<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msSiteModeClearIconOverlay(this).into()
            }
        }
        unsafe extern "system" fn msAddSiteMode<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msAddSiteMode(this).into()
            }
        }
        unsafe extern "system" fn msSiteModeCreateJumpList<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrheader: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msSiteModeCreateJumpList(this, core::mem::transmute(&bstrheader)).into()
            }
        }
        unsafe extern "system" fn msSiteModeAddJumpListItem<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrname: *mut core::ffi::c_void, bstractionuri: *mut core::ffi::c_void, bstriconuri: *mut core::ffi::c_void, pvarwindowtype: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msSiteModeAddJumpListItem(this, core::mem::transmute(&bstrname), core::mem::transmute(&bstractionuri), core::mem::transmute(&bstriconuri), core::mem::transmute_copy(&pvarwindowtype)).into()
            }
        }
        unsafe extern "system" fn msSiteModeClearJumpList<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msSiteModeClearJumpList(this).into()
            }
        }
        unsafe extern "system" fn msSiteModeShowJumpList<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msSiteModeShowJumpList(this).into()
            }
        }
        unsafe extern "system" fn msSiteModeAddButtonStyle<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uibuttonid: super::super::System::Variant::VARIANT, bstriconurl: *mut core::ffi::c_void, bstrtooltip: *mut core::ffi::c_void, pvarstyleid: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper4_Impl::msSiteModeAddButtonStyle(this, core::mem::transmute(&uibuttonid), core::mem::transmute(&bstriconurl), core::mem::transmute(&bstrtooltip)) {
                    Ok(ok__) => {
                        pvarstyleid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn msSiteModeShowButtonStyle<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uibuttonid: super::super::System::Variant::VARIANT, uistyleid: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msSiteModeShowButtonStyle(this, core::mem::transmute(&uibuttonid), core::mem::transmute(&uistyleid)).into()
            }
        }
        unsafe extern "system" fn msSiteModeActivate<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msSiteModeActivate(this).into()
            }
        }
        unsafe extern "system" fn msIsSiteModeFirstRun<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fpreservestate: super::super::Foundation::VARIANT_BOOL, puifirstrun: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper4_Impl::msIsSiteModeFirstRun(this, core::mem::transmute_copy(&fpreservestate)) {
                    Ok(ok__) => {
                        puifirstrun.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn msAddTrackingProtectionList<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void, bstrfiltername: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper4_Impl::msAddTrackingProtectionList(this, core::mem::transmute(&url), core::mem::transmute(&bstrfiltername)).into()
            }
        }
        unsafe extern "system" fn msTrackingProtectionEnabled<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper4_Impl::msTrackingProtectionEnabled(this) {
                    Ok(ok__) => {
                        pfenabled.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn msActiveXFilteringEnabled<Identity: IShellUIHelper4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfenabled: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper4_Impl::msActiveXFilteringEnabled(this) {
                    Ok(ok__) => {
                        pfenabled.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: IShellUIHelper3_Vtbl::new::<Identity, OFFSET>(),
            msIsSiteMode: msIsSiteMode::<Identity, OFFSET>,
            msSiteModeShowThumbBar: msSiteModeShowThumbBar::<Identity, OFFSET>,
            msSiteModeAddThumbBarButton: msSiteModeAddThumbBarButton::<Identity, OFFSET>,
            msSiteModeUpdateThumbBarButton: msSiteModeUpdateThumbBarButton::<Identity, OFFSET>,
            msSiteModeSetIconOverlay: msSiteModeSetIconOverlay::<Identity, OFFSET>,
            msSiteModeClearIconOverlay: msSiteModeClearIconOverlay::<Identity, OFFSET>,
            msAddSiteMode: msAddSiteMode::<Identity, OFFSET>,
            msSiteModeCreateJumpList: msSiteModeCreateJumpList::<Identity, OFFSET>,
            msSiteModeAddJumpListItem: msSiteModeAddJumpListItem::<Identity, OFFSET>,
            msSiteModeClearJumpList: msSiteModeClearJumpList::<Identity, OFFSET>,
            msSiteModeShowJumpList: msSiteModeShowJumpList::<Identity, OFFSET>,
            msSiteModeAddButtonStyle: msSiteModeAddButtonStyle::<Identity, OFFSET>,
            msSiteModeShowButtonStyle: msSiteModeShowButtonStyle::<Identity, OFFSET>,
            msSiteModeActivate: msSiteModeActivate::<Identity, OFFSET>,
            msIsSiteModeFirstRun: msIsSiteModeFirstRun::<Identity, OFFSET>,
            msAddTrackingProtectionList: msAddTrackingProtectionList::<Identity, OFFSET>,
            msTrackingProtectionEnabled: msTrackingProtectionEnabled::<Identity, OFFSET>,
            msActiveXFilteringEnabled: msActiveXFilteringEnabled::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper4 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellUIHelper4 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellUIHelper5, IShellUIHelper5_Vtbl, 0xa2a08b09_103d_4d3f_b91c_ea455ca82efa);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellUIHelper5 {
    type Target = IShellUIHelper4;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellUIHelper5, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellUIHelper, IShellUIHelper2, IShellUIHelper3, IShellUIHelper4);
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper5 {
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msProvisionNetworks(&self, bstrprovisioningxml: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).msProvisionNetworks)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrprovisioningxml), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn msReportSafeUrl(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msReportSafeUrl)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn msSiteModeRefreshBadge(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeRefreshBadge)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn msSiteModeClearBadge(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msSiteModeClearBadge)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn msDiagnoseConnectionUILess(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msDiagnoseConnectionUILess)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn msLaunchNetworkClientHelp(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msLaunchNetworkClientHelp)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn msChangeDefaultBrowser(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msChangeDefaultBrowser)(windows_core::Interface::as_raw(self), fchange).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellUIHelper5_Vtbl {
    pub base__: IShellUIHelper4_Vtbl,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msProvisionNetworks: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msProvisionNetworks: usize,
    pub msReportSafeUrl: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msSiteModeRefreshBadge: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msSiteModeClearBadge: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msDiagnoseConnectionUILess: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msLaunchNetworkClientHelp: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msChangeDefaultBrowser: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellUIHelper5_Impl: IShellUIHelper4_Impl {
    fn msProvisionNetworks(&self, bstrprovisioningxml: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn msReportSafeUrl(&self) -> windows_core::Result<()>;
    fn msSiteModeRefreshBadge(&self) -> windows_core::Result<()>;
    fn msSiteModeClearBadge(&self) -> windows_core::Result<()>;
    fn msDiagnoseConnectionUILess(&self) -> windows_core::Result<()>;
    fn msLaunchNetworkClientHelp(&self) -> windows_core::Result<()>;
    fn msChangeDefaultBrowser(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellUIHelper5_Vtbl {
    pub const fn new<Identity: IShellUIHelper5_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn msProvisionNetworks<Identity: IShellUIHelper5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrprovisioningxml: *mut core::ffi::c_void, puiresult: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper5_Impl::msProvisionNetworks(this, core::mem::transmute(&bstrprovisioningxml)) {
                    Ok(ok__) => {
                        puiresult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn msReportSafeUrl<Identity: IShellUIHelper5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper5_Impl::msReportSafeUrl(this).into()
            }
        }
        unsafe extern "system" fn msSiteModeRefreshBadge<Identity: IShellUIHelper5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper5_Impl::msSiteModeRefreshBadge(this).into()
            }
        }
        unsafe extern "system" fn msSiteModeClearBadge<Identity: IShellUIHelper5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper5_Impl::msSiteModeClearBadge(this).into()
            }
        }
        unsafe extern "system" fn msDiagnoseConnectionUILess<Identity: IShellUIHelper5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper5_Impl::msDiagnoseConnectionUILess(this).into()
            }
        }
        unsafe extern "system" fn msLaunchNetworkClientHelp<Identity: IShellUIHelper5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper5_Impl::msLaunchNetworkClientHelp(this).into()
            }
        }
        unsafe extern "system" fn msChangeDefaultBrowser<Identity: IShellUIHelper5_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper5_Impl::msChangeDefaultBrowser(this, core::mem::transmute_copy(&fchange)).into()
            }
        }
        Self {
            base__: IShellUIHelper4_Vtbl::new::<Identity, OFFSET>(),
            msProvisionNetworks: msProvisionNetworks::<Identity, OFFSET>,
            msReportSafeUrl: msReportSafeUrl::<Identity, OFFSET>,
            msSiteModeRefreshBadge: msSiteModeRefreshBadge::<Identity, OFFSET>,
            msSiteModeClearBadge: msSiteModeClearBadge::<Identity, OFFSET>,
            msDiagnoseConnectionUILess: msDiagnoseConnectionUILess::<Identity, OFFSET>,
            msLaunchNetworkClientHelp: msLaunchNetworkClientHelp::<Identity, OFFSET>,
            msChangeDefaultBrowser: msChangeDefaultBrowser::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper5 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<IShellUIHelper4 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellUIHelper5 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellUIHelper6, IShellUIHelper6_Vtbl, 0x987a573e_46ee_4e89_96ab_ddf7f8fdc98c);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellUIHelper6 {
    type Target = IShellUIHelper5;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellUIHelper6, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellUIHelper, IShellUIHelper2, IShellUIHelper3, IShellUIHelper4, IShellUIHelper5);
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper6 {
    pub unsafe fn msStopPeriodicTileUpdate(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msStopPeriodicTileUpdate)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msStartPeriodicTileUpdate(&self, pollinguris: &super::super::System::Variant::VARIANT, starttime: &super::super::System::Variant::VARIANT, uiupdaterecurrence: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msStartPeriodicTileUpdate)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(pollinguris), core::mem::transmute_copy(starttime), core::mem::transmute_copy(uiupdaterecurrence)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msStartPeriodicTileUpdateBatch(&self, pollinguris: &super::super::System::Variant::VARIANT, starttime: &super::super::System::Variant::VARIANT, uiupdaterecurrence: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msStartPeriodicTileUpdateBatch)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(pollinguris), core::mem::transmute_copy(starttime), core::mem::transmute_copy(uiupdaterecurrence)).ok() }
    }
    pub unsafe fn msClearTile(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msClearTile)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn msEnableTileNotificationQueue(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msEnableTileNotificationQueue)(windows_core::Interface::as_raw(self), fchange).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msPinnedSiteState(&self) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).msPinnedSiteState)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn msEnableTileNotificationQueueForSquare150x150(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msEnableTileNotificationQueueForSquare150x150)(windows_core::Interface::as_raw(self), fchange).ok() }
    }
    pub unsafe fn msEnableTileNotificationQueueForWide310x150(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msEnableTileNotificationQueueForWide310x150)(windows_core::Interface::as_raw(self), fchange).ok() }
    }
    pub unsafe fn msEnableTileNotificationQueueForSquare310x310(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msEnableTileNotificationQueueForSquare310x310)(windows_core::Interface::as_raw(self), fchange).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msScheduledTileNotification(&self, bstrnotificationxml: &windows_core::BSTR, bstrnotificationid: &windows_core::BSTR, bstrnotificationtag: &windows_core::BSTR, starttime: &super::super::System::Variant::VARIANT, expirationtime: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msScheduledTileNotification)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrnotificationxml), core::mem::transmute_copy(bstrnotificationid), core::mem::transmute_copy(bstrnotificationtag), core::mem::transmute_copy(starttime), core::mem::transmute_copy(expirationtime)).ok() }
    }
    pub unsafe fn msRemoveScheduledTileNotification(&self, bstrnotificationid: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msRemoveScheduledTileNotification)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrnotificationid)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn msStartPeriodicBadgeUpdate(&self, pollinguri: &windows_core::BSTR, starttime: &super::super::System::Variant::VARIANT, uiupdaterecurrence: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msStartPeriodicBadgeUpdate)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(pollinguri), core::mem::transmute_copy(starttime), core::mem::transmute_copy(uiupdaterecurrence)).ok() }
    }
    pub unsafe fn msStopPeriodicBadgeUpdate(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msStopPeriodicBadgeUpdate)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn msLaunchInternetOptions(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).msLaunchInternetOptions)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellUIHelper6_Vtbl {
    pub base__: IShellUIHelper5_Vtbl,
    pub msStopPeriodicTileUpdate: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msStartPeriodicTileUpdate: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msStartPeriodicTileUpdate: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msStartPeriodicTileUpdateBatch: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msStartPeriodicTileUpdateBatch: usize,
    pub msClearTile: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msEnableTileNotificationQueue: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msPinnedSiteState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msPinnedSiteState: usize,
    pub msEnableTileNotificationQueueForSquare150x150: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub msEnableTileNotificationQueueForWide310x150: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub msEnableTileNotificationQueueForSquare310x310: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msScheduledTileNotification: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msScheduledTileNotification: usize,
    pub msRemoveScheduledTileNotification: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub msStartPeriodicBadgeUpdate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::System::Variant::VARIANT, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    msStartPeriodicBadgeUpdate: usize,
    pub msStopPeriodicBadgeUpdate: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub msLaunchInternetOptions: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellUIHelper6_Impl: IShellUIHelper5_Impl {
    fn msStopPeriodicTileUpdate(&self) -> windows_core::Result<()>;
    fn msStartPeriodicTileUpdate(&self, pollinguris: &super::super::System::Variant::VARIANT, starttime: &super::super::System::Variant::VARIANT, uiupdaterecurrence: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn msStartPeriodicTileUpdateBatch(&self, pollinguris: &super::super::System::Variant::VARIANT, starttime: &super::super::System::Variant::VARIANT, uiupdaterecurrence: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn msClearTile(&self) -> windows_core::Result<()>;
    fn msEnableTileNotificationQueue(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn msPinnedSiteState(&self) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn msEnableTileNotificationQueueForSquare150x150(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn msEnableTileNotificationQueueForWide310x150(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn msEnableTileNotificationQueueForSquare310x310(&self, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn msScheduledTileNotification(&self, bstrnotificationxml: &windows_core::BSTR, bstrnotificationid: &windows_core::BSTR, bstrnotificationtag: &windows_core::BSTR, starttime: &super::super::System::Variant::VARIANT, expirationtime: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn msRemoveScheduledTileNotification(&self, bstrnotificationid: &windows_core::BSTR) -> windows_core::Result<()>;
    fn msStartPeriodicBadgeUpdate(&self, pollinguri: &windows_core::BSTR, starttime: &super::super::System::Variant::VARIANT, uiupdaterecurrence: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn msStopPeriodicBadgeUpdate(&self) -> windows_core::Result<()>;
    fn msLaunchInternetOptions(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellUIHelper6_Vtbl {
    pub const fn new<Identity: IShellUIHelper6_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn msStopPeriodicTileUpdate<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msStopPeriodicTileUpdate(this).into()
            }
        }
        unsafe extern "system" fn msStartPeriodicTileUpdate<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pollinguris: super::super::System::Variant::VARIANT, starttime: super::super::System::Variant::VARIANT, uiupdaterecurrence: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msStartPeriodicTileUpdate(this, core::mem::transmute(&pollinguris), core::mem::transmute(&starttime), core::mem::transmute(&uiupdaterecurrence)).into()
            }
        }
        unsafe extern "system" fn msStartPeriodicTileUpdateBatch<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pollinguris: super::super::System::Variant::VARIANT, starttime: super::super::System::Variant::VARIANT, uiupdaterecurrence: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msStartPeriodicTileUpdateBatch(this, core::mem::transmute(&pollinguris), core::mem::transmute(&starttime), core::mem::transmute(&uiupdaterecurrence)).into()
            }
        }
        unsafe extern "system" fn msClearTile<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msClearTile(this).into()
            }
        }
        unsafe extern "system" fn msEnableTileNotificationQueue<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msEnableTileNotificationQueue(this, core::mem::transmute_copy(&fchange)).into()
            }
        }
        unsafe extern "system" fn msPinnedSiteState<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarsitestate: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper6_Impl::msPinnedSiteState(this) {
                    Ok(ok__) => {
                        pvarsitestate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn msEnableTileNotificationQueueForSquare150x150<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msEnableTileNotificationQueueForSquare150x150(this, core::mem::transmute_copy(&fchange)).into()
            }
        }
        unsafe extern "system" fn msEnableTileNotificationQueueForWide310x150<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msEnableTileNotificationQueueForWide310x150(this, core::mem::transmute_copy(&fchange)).into()
            }
        }
        unsafe extern "system" fn msEnableTileNotificationQueueForSquare310x310<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fchange: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msEnableTileNotificationQueueForSquare310x310(this, core::mem::transmute_copy(&fchange)).into()
            }
        }
        unsafe extern "system" fn msScheduledTileNotification<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrnotificationxml: *mut core::ffi::c_void, bstrnotificationid: *mut core::ffi::c_void, bstrnotificationtag: *mut core::ffi::c_void, starttime: super::super::System::Variant::VARIANT, expirationtime: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msScheduledTileNotification(this, core::mem::transmute(&bstrnotificationxml), core::mem::transmute(&bstrnotificationid), core::mem::transmute(&bstrnotificationtag), core::mem::transmute(&starttime), core::mem::transmute(&expirationtime)).into()
            }
        }
        unsafe extern "system" fn msRemoveScheduledTileNotification<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrnotificationid: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msRemoveScheduledTileNotification(this, core::mem::transmute(&bstrnotificationid)).into()
            }
        }
        unsafe extern "system" fn msStartPeriodicBadgeUpdate<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pollinguri: *mut core::ffi::c_void, starttime: super::super::System::Variant::VARIANT, uiupdaterecurrence: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msStartPeriodicBadgeUpdate(this, core::mem::transmute(&pollinguri), core::mem::transmute(&starttime), core::mem::transmute(&uiupdaterecurrence)).into()
            }
        }
        unsafe extern "system" fn msStopPeriodicBadgeUpdate<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msStopPeriodicBadgeUpdate(this).into()
            }
        }
        unsafe extern "system" fn msLaunchInternetOptions<Identity: IShellUIHelper6_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper6_Impl::msLaunchInternetOptions(this).into()
            }
        }
        Self {
            base__: IShellUIHelper5_Vtbl::new::<Identity, OFFSET>(),
            msStopPeriodicTileUpdate: msStopPeriodicTileUpdate::<Identity, OFFSET>,
            msStartPeriodicTileUpdate: msStartPeriodicTileUpdate::<Identity, OFFSET>,
            msStartPeriodicTileUpdateBatch: msStartPeriodicTileUpdateBatch::<Identity, OFFSET>,
            msClearTile: msClearTile::<Identity, OFFSET>,
            msEnableTileNotificationQueue: msEnableTileNotificationQueue::<Identity, OFFSET>,
            msPinnedSiteState: msPinnedSiteState::<Identity, OFFSET>,
            msEnableTileNotificationQueueForSquare150x150: msEnableTileNotificationQueueForSquare150x150::<Identity, OFFSET>,
            msEnableTileNotificationQueueForWide310x150: msEnableTileNotificationQueueForWide310x150::<Identity, OFFSET>,
            msEnableTileNotificationQueueForSquare310x310: msEnableTileNotificationQueueForSquare310x310::<Identity, OFFSET>,
            msScheduledTileNotification: msScheduledTileNotification::<Identity, OFFSET>,
            msRemoveScheduledTileNotification: msRemoveScheduledTileNotification::<Identity, OFFSET>,
            msStartPeriodicBadgeUpdate: msStartPeriodicBadgeUpdate::<Identity, OFFSET>,
            msStopPeriodicBadgeUpdate: msStopPeriodicBadgeUpdate::<Identity, OFFSET>,
            msLaunchInternetOptions: msLaunchInternetOptions::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper6 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<IShellUIHelper4 as windows_core::Interface>::IID || iid == &<IShellUIHelper5 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellUIHelper6 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellUIHelper7, IShellUIHelper7_Vtbl, 0x60e567c8_9573_4ab2_a264_637c6c161cb1);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellUIHelper7 {
    type Target = IShellUIHelper6;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellUIHelper7, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellUIHelper, IShellUIHelper2, IShellUIHelper3, IShellUIHelper4, IShellUIHelper5, IShellUIHelper6);
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper7 {
    pub unsafe fn SetExperimentalFlag(&self, bstrflagstring: &windows_core::BSTR, vfflag: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExperimentalFlag)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrflagstring), vfflag).ok() }
    }
    pub unsafe fn GetExperimentalFlag(&self, bstrflagstring: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExperimentalFlag)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrflagstring), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetExperimentalValue(&self, bstrvaluestring: &windows_core::BSTR, dwvalue: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetExperimentalValue)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrvaluestring), dwvalue).ok() }
    }
    pub unsafe fn GetExperimentalValue(&self, bstrvaluestring: &windows_core::BSTR) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetExperimentalValue)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrvaluestring), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn ResetAllExperimentalFlagsAndValues(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ResetAllExperimentalFlagsAndValues)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetNeedIEAutoLaunchFlag(&self, bstrurl: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNeedIEAutoLaunchFlag)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrurl), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetNeedIEAutoLaunchFlag(&self, bstrurl: &windows_core::BSTR, flag: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetNeedIEAutoLaunchFlag)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrurl), flag).ok() }
    }
    pub unsafe fn HasNeedIEAutoLaunchFlag(&self, bstrurl: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).HasNeedIEAutoLaunchFlag)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrurl), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn LaunchIE(&self, bstrurl: &windows_core::BSTR, automated: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).LaunchIE)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrurl), automated).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellUIHelper7_Vtbl {
    pub base__: IShellUIHelper6_Vtbl,
    pub SetExperimentalFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub GetExperimentalFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetExperimentalValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub GetExperimentalValue: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub ResetAllExperimentalFlagsAndValues: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetNeedIEAutoLaunchFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetNeedIEAutoLaunchFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub HasNeedIEAutoLaunchFlag: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub LaunchIE: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellUIHelper7_Impl: IShellUIHelper6_Impl {
    fn SetExperimentalFlag(&self, bstrflagstring: &windows_core::BSTR, vfflag: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn GetExperimentalFlag(&self, bstrflagstring: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetExperimentalValue(&self, bstrvaluestring: &windows_core::BSTR, dwvalue: u32) -> windows_core::Result<()>;
    fn GetExperimentalValue(&self, bstrvaluestring: &windows_core::BSTR) -> windows_core::Result<u32>;
    fn ResetAllExperimentalFlagsAndValues(&self) -> windows_core::Result<()>;
    fn GetNeedIEAutoLaunchFlag(&self, bstrurl: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetNeedIEAutoLaunchFlag(&self, bstrurl: &windows_core::BSTR, flag: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn HasNeedIEAutoLaunchFlag(&self, bstrurl: &windows_core::BSTR) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn LaunchIE(&self, bstrurl: &windows_core::BSTR, automated: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellUIHelper7_Vtbl {
    pub const fn new<Identity: IShellUIHelper7_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetExperimentalFlag<Identity: IShellUIHelper7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrflagstring: *mut core::ffi::c_void, vfflag: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper7_Impl::SetExperimentalFlag(this, core::mem::transmute(&bstrflagstring), core::mem::transmute_copy(&vfflag)).into()
            }
        }
        unsafe extern "system" fn GetExperimentalFlag<Identity: IShellUIHelper7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrflagstring: *mut core::ffi::c_void, vfflag: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper7_Impl::GetExperimentalFlag(this, core::mem::transmute(&bstrflagstring)) {
                    Ok(ok__) => {
                        vfflag.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetExperimentalValue<Identity: IShellUIHelper7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrvaluestring: *mut core::ffi::c_void, dwvalue: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper7_Impl::SetExperimentalValue(this, core::mem::transmute(&bstrvaluestring), core::mem::transmute_copy(&dwvalue)).into()
            }
        }
        unsafe extern "system" fn GetExperimentalValue<Identity: IShellUIHelper7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrvaluestring: *mut core::ffi::c_void, pdwvalue: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper7_Impl::GetExperimentalValue(this, core::mem::transmute(&bstrvaluestring)) {
                    Ok(ok__) => {
                        pdwvalue.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ResetAllExperimentalFlagsAndValues<Identity: IShellUIHelper7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper7_Impl::ResetAllExperimentalFlagsAndValues(this).into()
            }
        }
        unsafe extern "system" fn GetNeedIEAutoLaunchFlag<Identity: IShellUIHelper7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrurl: *mut core::ffi::c_void, flag: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper7_Impl::GetNeedIEAutoLaunchFlag(this, core::mem::transmute(&bstrurl)) {
                    Ok(ok__) => {
                        flag.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetNeedIEAutoLaunchFlag<Identity: IShellUIHelper7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrurl: *mut core::ffi::c_void, flag: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper7_Impl::SetNeedIEAutoLaunchFlag(this, core::mem::transmute(&bstrurl), core::mem::transmute_copy(&flag)).into()
            }
        }
        unsafe extern "system" fn HasNeedIEAutoLaunchFlag<Identity: IShellUIHelper7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrurl: *mut core::ffi::c_void, exists: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper7_Impl::HasNeedIEAutoLaunchFlag(this, core::mem::transmute(&bstrurl)) {
                    Ok(ok__) => {
                        exists.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn LaunchIE<Identity: IShellUIHelper7_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrurl: *mut core::ffi::c_void, automated: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper7_Impl::LaunchIE(this, core::mem::transmute(&bstrurl), core::mem::transmute_copy(&automated)).into()
            }
        }
        Self {
            base__: IShellUIHelper6_Vtbl::new::<Identity, OFFSET>(),
            SetExperimentalFlag: SetExperimentalFlag::<Identity, OFFSET>,
            GetExperimentalFlag: GetExperimentalFlag::<Identity, OFFSET>,
            SetExperimentalValue: SetExperimentalValue::<Identity, OFFSET>,
            GetExperimentalValue: GetExperimentalValue::<Identity, OFFSET>,
            ResetAllExperimentalFlagsAndValues: ResetAllExperimentalFlagsAndValues::<Identity, OFFSET>,
            GetNeedIEAutoLaunchFlag: GetNeedIEAutoLaunchFlag::<Identity, OFFSET>,
            SetNeedIEAutoLaunchFlag: SetNeedIEAutoLaunchFlag::<Identity, OFFSET>,
            HasNeedIEAutoLaunchFlag: HasNeedIEAutoLaunchFlag::<Identity, OFFSET>,
            LaunchIE: LaunchIE::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper7 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<IShellUIHelper4 as windows_core::Interface>::IID || iid == &<IShellUIHelper5 as windows_core::Interface>::IID || iid == &<IShellUIHelper6 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellUIHelper7 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellUIHelper8, IShellUIHelper8_Vtbl, 0x66debcf2_05b0_4f07_b49b_b96241a65db2);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellUIHelper8 {
    type Target = IShellUIHelper7;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellUIHelper8, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellUIHelper, IShellUIHelper2, IShellUIHelper3, IShellUIHelper4, IShellUIHelper5, IShellUIHelper6, IShellUIHelper7);
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper8 {
    pub unsafe fn GetCVListData(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCVListData)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetCVListLocalData(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCVListLocalData)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetEMIEListData(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEMIEListData)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn GetEMIEListLocalData(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEMIEListLocalData)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn OpenFavoritesPane(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OpenFavoritesPane)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn OpenFavoritesSettings(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OpenFavoritesSettings)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn LaunchInHVSI(&self, bstrurl: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).LaunchInHVSI)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrurl)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellUIHelper8_Vtbl {
    pub base__: IShellUIHelper7_Vtbl,
    pub GetCVListData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCVListLocalData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetEMIEListData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetEMIEListLocalData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OpenFavoritesPane: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub OpenFavoritesSettings: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub LaunchInHVSI: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellUIHelper8_Impl: IShellUIHelper7_Impl {
    fn GetCVListData(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetCVListLocalData(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetEMIEListData(&self) -> windows_core::Result<windows_core::BSTR>;
    fn GetEMIEListLocalData(&self) -> windows_core::Result<windows_core::BSTR>;
    fn OpenFavoritesPane(&self) -> windows_core::Result<()>;
    fn OpenFavoritesSettings(&self) -> windows_core::Result<()>;
    fn LaunchInHVSI(&self, bstrurl: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellUIHelper8_Vtbl {
    pub const fn new<Identity: IShellUIHelper8_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCVListData<Identity: IShellUIHelper8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrresult: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper8_Impl::GetCVListData(this) {
                    Ok(ok__) => {
                        pbstrresult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCVListLocalData<Identity: IShellUIHelper8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrresult: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper8_Impl::GetCVListLocalData(this) {
                    Ok(ok__) => {
                        pbstrresult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEMIEListData<Identity: IShellUIHelper8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrresult: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper8_Impl::GetEMIEListData(this) {
                    Ok(ok__) => {
                        pbstrresult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEMIEListLocalData<Identity: IShellUIHelper8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrresult: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper8_Impl::GetEMIEListLocalData(this) {
                    Ok(ok__) => {
                        pbstrresult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OpenFavoritesPane<Identity: IShellUIHelper8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper8_Impl::OpenFavoritesPane(this).into()
            }
        }
        unsafe extern "system" fn OpenFavoritesSettings<Identity: IShellUIHelper8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper8_Impl::OpenFavoritesSettings(this).into()
            }
        }
        unsafe extern "system" fn LaunchInHVSI<Identity: IShellUIHelper8_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrurl: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellUIHelper8_Impl::LaunchInHVSI(this, core::mem::transmute(&bstrurl)).into()
            }
        }
        Self {
            base__: IShellUIHelper7_Vtbl::new::<Identity, OFFSET>(),
            GetCVListData: GetCVListData::<Identity, OFFSET>,
            GetCVListLocalData: GetCVListLocalData::<Identity, OFFSET>,
            GetEMIEListData: GetEMIEListData::<Identity, OFFSET>,
            GetEMIEListLocalData: GetEMIEListLocalData::<Identity, OFFSET>,
            OpenFavoritesPane: OpenFavoritesPane::<Identity, OFFSET>,
            OpenFavoritesSettings: OpenFavoritesSettings::<Identity, OFFSET>,
            LaunchInHVSI: LaunchInHVSI::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper8 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<IShellUIHelper4 as windows_core::Interface>::IID || iid == &<IShellUIHelper5 as windows_core::Interface>::IID || iid == &<IShellUIHelper6 as windows_core::Interface>::IID || iid == &<IShellUIHelper7 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellUIHelper8 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellUIHelper9, IShellUIHelper9_Vtbl, 0x6cdf73b0_7f2f_451f_bc0f_63e0f3284e54);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellUIHelper9 {
    type Target = IShellUIHelper8;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellUIHelper9, windows_core::IUnknown, super::super::System::Com::IDispatch, IShellUIHelper, IShellUIHelper2, IShellUIHelper3, IShellUIHelper4, IShellUIHelper5, IShellUIHelper6, IShellUIHelper7, IShellUIHelper8);
#[cfg(feature = "Win32_System_Com")]
impl IShellUIHelper9 {
    pub unsafe fn GetOSSku(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetOSSku)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellUIHelper9_Vtbl {
    pub base__: IShellUIHelper8_Vtbl,
    pub GetOSSku: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellUIHelper9_Impl: IShellUIHelper8_Impl {
    fn GetOSSku(&self) -> windows_core::Result<u32>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellUIHelper9_Vtbl {
    pub const fn new<Identity: IShellUIHelper9_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetOSSku<Identity: IShellUIHelper9_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwresult: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellUIHelper9_Impl::GetOSSku(this) {
                    Ok(ok__) => {
                        pdwresult.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IShellUIHelper8_Vtbl::new::<Identity, OFFSET>(), GetOSSku: GetOSSku::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellUIHelper9 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IShellUIHelper as windows_core::Interface>::IID || iid == &<IShellUIHelper2 as windows_core::Interface>::IID || iid == &<IShellUIHelper3 as windows_core::Interface>::IID || iid == &<IShellUIHelper4 as windows_core::Interface>::IID || iid == &<IShellUIHelper5 as windows_core::Interface>::IID || iid == &<IShellUIHelper6 as windows_core::Interface>::IID || iid == &<IShellUIHelper7 as windows_core::Interface>::IID || iid == &<IShellUIHelper8 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellUIHelper9 {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IShellView, IShellView_Vtbl, 0x000214e3_0000_0000_c000_000000000046);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IShellView {
    type Target = super::super::System::Ole::IOleWindow;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IShellView, windows_core::IUnknown, super::super::System::Ole::IOleWindow);
#[cfg(feature = "Win32_System_Ole")]
impl IShellView {
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn TranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).TranslateAccelerator)(windows_core::Interface::as_raw(self), pmsg) }
    }
    pub unsafe fn EnableModeless(&self, fenable: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EnableModeless)(windows_core::Interface::as_raw(self), fenable.into()).ok() }
    }
    pub unsafe fn UIActivate(&self, ustate: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UIActivate)(windows_core::Interface::as_raw(self), ustate).ok() }
    }
    pub unsafe fn Refresh(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Refresh)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn CreateViewWindow<P0, P2>(&self, psvprevious: P0, pfs: *const FOLDERSETTINGS, psb: P2, prcview: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::HWND>
    where
        P0: windows_core::Param<IShellView>,
        P2: windows_core::Param<IShellBrowser>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateViewWindow)(windows_core::Interface::as_raw(self), psvprevious.param().abi(), pfs, psb.param().abi(), prcview, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn DestroyViewWindow(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DestroyViewWindow)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GetCurrentInfo(&self) -> windows_core::Result<FOLDERSETTINGS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCurrentInfo)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn AddPropertySheetPages(&self, dwreserved: u32, pfn: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddPropertySheetPages)(windows_core::Interface::as_raw(self), dwreserved, pfn, lparam).ok() }
    }
    pub unsafe fn SaveViewState(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SaveViewState)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SelectItem(&self, pidlitem: *const Common::ITEMIDLIST, uflags: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SelectItem)(windows_core::Interface::as_raw(self), pidlitem, uflags).ok() }
    }
    pub unsafe fn GetItemObject<T>(&self, uitem: _SVGIO) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetItemObject)(windows_core::Interface::as_raw(self), uitem.0 as _, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellView_Vtbl {
    pub base__: super::super::System::Ole::IOleWindow_Vtbl,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub TranslateAccelerator: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    TranslateAccelerator: usize,
    pub EnableModeless: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub UIActivate: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Refresh: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CreateViewWindow: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const FOLDERSETTINGS, *mut core::ffi::c_void, *const super::super::Foundation::RECT, *mut super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub DestroyViewWindow: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCurrentInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut FOLDERSETTINGS) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Controls")]
    pub AddPropertySheetPages: unsafe extern "system" fn(*mut core::ffi::c_void, u32, super::Controls::LPFNSVADDPROPSHEETPAGE, super::super::Foundation::LPARAM) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    AddPropertySheetPages: usize,
    pub SaveViewState: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SelectItem: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SelectItem: usize,
    pub GetItemObject: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellView_Impl: super::super::System::Ole::IOleWindow_Impl {
    fn TranslateAccelerator(&self, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT;
    fn EnableModeless(&self, fenable: windows_core::BOOL) -> windows_core::Result<()>;
    fn UIActivate(&self, ustate: u32) -> windows_core::Result<()>;
    fn Refresh(&self) -> windows_core::Result<()>;
    fn CreateViewWindow(&self, psvprevious: windows_core::Ref<IShellView>, pfs: *const FOLDERSETTINGS, psb: windows_core::Ref<IShellBrowser>, prcview: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::HWND>;
    fn DestroyViewWindow(&self) -> windows_core::Result<()>;
    fn GetCurrentInfo(&self) -> windows_core::Result<FOLDERSETTINGS>;
    fn AddPropertySheetPages(&self, dwreserved: u32, pfn: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::Result<()>;
    fn SaveViewState(&self) -> windows_core::Result<()>;
    fn SelectItem(&self, pidlitem: *const Common::ITEMIDLIST, uflags: u32) -> windows_core::Result<()>;
    fn GetItemObject(&self, uitem: &_SVGIO, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellView_Vtbl {
    pub const fn new<Identity: IShellView_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn TranslateAccelerator<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmsg: *const super::WindowsAndMessaging::MSG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView_Impl::TranslateAccelerator(this, core::mem::transmute_copy(&pmsg))
            }
        }
        unsafe extern "system" fn EnableModeless<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView_Impl::EnableModeless(this, core::mem::transmute_copy(&fenable)).into()
            }
        }
        unsafe extern "system" fn UIActivate<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ustate: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView_Impl::UIActivate(this, core::mem::transmute_copy(&ustate)).into()
            }
        }
        unsafe extern "system" fn Refresh<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView_Impl::Refresh(this).into()
            }
        }
        unsafe extern "system" fn CreateViewWindow<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psvprevious: *mut core::ffi::c_void, pfs: *const FOLDERSETTINGS, psb: *mut core::ffi::c_void, prcview: *const super::super::Foundation::RECT, phwnd: *mut super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellView_Impl::CreateViewWindow(this, core::mem::transmute_copy(&psvprevious), core::mem::transmute_copy(&pfs), core::mem::transmute_copy(&psb), core::mem::transmute_copy(&prcview)) {
                    Ok(ok__) => {
                        phwnd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn DestroyViewWindow<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView_Impl::DestroyViewWindow(this).into()
            }
        }
        unsafe extern "system" fn GetCurrentInfo<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfs: *mut FOLDERSETTINGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellView_Impl::GetCurrentInfo(this) {
                    Ok(ok__) => {
                        pfs.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn AddPropertySheetPages<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwreserved: u32, pfn: super::Controls::LPFNSVADDPROPSHEETPAGE, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView_Impl::AddPropertySheetPages(this, core::mem::transmute_copy(&dwreserved), core::mem::transmute_copy(&pfn), core::mem::transmute_copy(&lparam)).into()
            }
        }
        unsafe extern "system" fn SaveViewState<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView_Impl::SaveViewState(this).into()
            }
        }
        unsafe extern "system" fn SelectItem<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlitem: *const Common::ITEMIDLIST, uflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView_Impl::SelectItem(this, core::mem::transmute_copy(&pidlitem), core::mem::transmute_copy(&uflags)).into()
            }
        }
        unsafe extern "system" fn GetItemObject<Identity: IShellView_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uitem: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView_Impl::GetItemObject(this, core::mem::transmute(&uitem), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self {
            base__: super::super::System::Ole::IOleWindow_Vtbl::new::<Identity, OFFSET>(),
            TranslateAccelerator: TranslateAccelerator::<Identity, OFFSET>,
            EnableModeless: EnableModeless::<Identity, OFFSET>,
            UIActivate: UIActivate::<Identity, OFFSET>,
            Refresh: Refresh::<Identity, OFFSET>,
            CreateViewWindow: CreateViewWindow::<Identity, OFFSET>,
            DestroyViewWindow: DestroyViewWindow::<Identity, OFFSET>,
            GetCurrentInfo: GetCurrentInfo::<Identity, OFFSET>,
            AddPropertySheetPages: AddPropertySheetPages::<Identity, OFFSET>,
            SaveViewState: SaveViewState::<Identity, OFFSET>,
            SelectItem: SelectItem::<Identity, OFFSET>,
            GetItemObject: GetItemObject::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellView as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellView {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IShellView2, IShellView2_Vtbl, 0x88e39e80_3578_11cf_ae69_08002b2e1262);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IShellView2 {
    type Target = IShellView;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IShellView2, windows_core::IUnknown, super::super::System::Ole::IOleWindow, IShellView);
#[cfg(feature = "Win32_System_Ole")]
impl IShellView2 {
    pub unsafe fn GetView(&self, pvid: *mut windows_core::GUID, uview: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetView)(windows_core::Interface::as_raw(self), pvid as _, uview).ok() }
    }
    pub unsafe fn CreateViewWindow2(&self, lpparams: *const SV2CVW2_PARAMS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CreateViewWindow2)(windows_core::Interface::as_raw(self), core::mem::transmute(lpparams)).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn HandleRename(&self, pidlnew: *const Common::ITEMIDLIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).HandleRename)(windows_core::Interface::as_raw(self), pidlnew).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn SelectAndPositionItem(&self, pidlitem: *const Common::ITEMIDLIST, uflags: u32, ppt: *const super::super::Foundation::POINT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SelectAndPositionItem)(windows_core::Interface::as_raw(self), pidlitem, uflags, ppt).ok() }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellView2_Vtbl {
    pub base__: IShellView_Vtbl,
    pub GetView: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID, u32) -> windows_core::HRESULT,
    pub CreateViewWindow2: unsafe extern "system" fn(*mut core::ffi::c_void, *const SV2CVW2_PARAMS) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub HandleRename: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    HandleRename: usize,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub SelectAndPositionItem: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, u32, *const super::super::Foundation::POINT) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    SelectAndPositionItem: usize,
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellView2_Impl: IShellView_Impl {
    fn GetView(&self, pvid: *mut windows_core::GUID, uview: u32) -> windows_core::Result<()>;
    fn CreateViewWindow2(&self, lpparams: *const SV2CVW2_PARAMS) -> windows_core::Result<()>;
    fn HandleRename(&self, pidlnew: *const Common::ITEMIDLIST) -> windows_core::Result<()>;
    fn SelectAndPositionItem(&self, pidlitem: *const Common::ITEMIDLIST, uflags: u32, ppt: *const super::super::Foundation::POINT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellView2_Vtbl {
    pub const fn new<Identity: IShellView2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetView<Identity: IShellView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvid: *mut windows_core::GUID, uview: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView2_Impl::GetView(this, core::mem::transmute_copy(&pvid), core::mem::transmute_copy(&uview)).into()
            }
        }
        unsafe extern "system" fn CreateViewWindow2<Identity: IShellView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpparams: *const SV2CVW2_PARAMS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView2_Impl::CreateViewWindow2(this, core::mem::transmute_copy(&lpparams)).into()
            }
        }
        unsafe extern "system" fn HandleRename<Identity: IShellView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlnew: *const Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView2_Impl::HandleRename(this, core::mem::transmute_copy(&pidlnew)).into()
            }
        }
        unsafe extern "system" fn SelectAndPositionItem<Identity: IShellView2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlitem: *const Common::ITEMIDLIST, uflags: u32, ppt: *const super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellView2_Impl::SelectAndPositionItem(this, core::mem::transmute_copy(&pidlitem), core::mem::transmute_copy(&uflags), core::mem::transmute_copy(&ppt)).into()
            }
        }
        Self {
            base__: IShellView_Vtbl::new::<Identity, OFFSET>(),
            GetView: GetView::<Identity, OFFSET>,
            CreateViewWindow2: CreateViewWindow2::<Identity, OFFSET>,
            HandleRename: HandleRename::<Identity, OFFSET>,
            SelectAndPositionItem: SelectAndPositionItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellView2 as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID || iid == &<IShellView as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellView2 {}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::define_interface!(IShellView3, IShellView3_Vtbl, 0xec39fa88_f8af_41c5_8421_38bed28f4673);
#[cfg(feature = "Win32_System_Ole")]
impl core::ops::Deref for IShellView3 {
    type Target = IShellView2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Ole")]
windows_core::imp::interface_hierarchy!(IShellView3, windows_core::IUnknown, super::super::System::Ole::IOleWindow, IShellView, IShellView2);
#[cfg(feature = "Win32_System_Ole")]
impl IShellView3 {
    pub unsafe fn CreateViewWindow3<P0, P1>(&self, psbowner: P0, psvprev: P1, dwviewflags: u32, dwmask: FOLDERFLAGS, dwflags: FOLDERFLAGS, fvmode: FOLDERVIEWMODE, pvid: *const windows_core::GUID, prcview: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::HWND>
    where
        P0: windows_core::Param<IShellBrowser>,
        P1: windows_core::Param<IShellView>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateViewWindow3)(windows_core::Interface::as_raw(self), psbowner.param().abi(), psvprev.param().abi(), dwviewflags, dwmask, dwflags, fvmode, pvid, prcview, &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Ole")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellView3_Vtbl {
    pub base__: IShellView2_Vtbl,
    pub CreateViewWindow3: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, u32, FOLDERFLAGS, FOLDERFLAGS, FOLDERVIEWMODE, *const windows_core::GUID, *const super::super::Foundation::RECT, *mut super::super::Foundation::HWND) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait IShellView3_Impl: IShellView2_Impl {
    fn CreateViewWindow3(&self, psbowner: windows_core::Ref<IShellBrowser>, psvprev: windows_core::Ref<IShellView>, dwviewflags: u32, dwmask: FOLDERFLAGS, dwflags: FOLDERFLAGS, fvmode: FOLDERVIEWMODE, pvid: *const windows_core::GUID, prcview: *const super::super::Foundation::RECT) -> windows_core::Result<super::super::Foundation::HWND>;
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl IShellView3_Vtbl {
    pub const fn new<Identity: IShellView3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CreateViewWindow3<Identity: IShellView3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psbowner: *mut core::ffi::c_void, psvprev: *mut core::ffi::c_void, dwviewflags: u32, dwmask: FOLDERFLAGS, dwflags: FOLDERFLAGS, fvmode: FOLDERVIEWMODE, pvid: *const windows_core::GUID, prcview: *const super::super::Foundation::RECT, phwndview: *mut super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellView3_Impl::CreateViewWindow3(this, core::mem::transmute_copy(&psbowner), core::mem::transmute_copy(&psvprev), core::mem::transmute_copy(&dwviewflags), core::mem::transmute_copy(&dwmask), core::mem::transmute_copy(&dwflags), core::mem::transmute_copy(&fvmode), core::mem::transmute_copy(&pvid), core::mem::transmute_copy(&prcview)) {
                    Ok(ok__) => {
                        phwndview.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IShellView2_Vtbl::new::<Identity, OFFSET>(), CreateViewWindow3: CreateViewWindow3::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellView3 as windows_core::Interface>::IID || iid == &<super::super::System::Ole::IOleWindow as windows_core::Interface>::IID || iid == &<IShellView as windows_core::Interface>::IID || iid == &<IShellView2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Ole", feature = "Win32_UI_Controls", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for IShellView3 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IShellWindows, IShellWindows_Vtbl, 0x85cb6900_4d95_11cf_960c_0080c7f4ee85);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IShellWindows {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IShellWindows, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IShellWindows {
    pub unsafe fn Count(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Count)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Item(&self, index: &super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Item)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(index), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn _NewEnum(&self) -> windows_core::Result<windows_core::IUnknown> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self)._NewEnum)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Register<P0>(&self, pid: P0, hwnd: i32, swclass: ShellWindowTypeConstants) -> windows_core::Result<i32>
    where
        P0: windows_core::Param<super::super::System::Com::IDispatch>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Register)(windows_core::Interface::as_raw(self), pid.param().abi(), hwnd, swclass, &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn RegisterPending(&self, lthreadid: i32, pvarloc: *const super::super::System::Variant::VARIANT, pvarlocroot: *const super::super::System::Variant::VARIANT, swclass: ShellWindowTypeConstants) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RegisterPending)(windows_core::Interface::as_raw(self), lthreadid, core::mem::transmute(pvarloc), core::mem::transmute(pvarlocroot), swclass, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Revoke(&self, lcookie: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Revoke)(windows_core::Interface::as_raw(self), lcookie).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn OnNavigate(&self, lcookie: i32, pvarloc: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnNavigate)(windows_core::Interface::as_raw(self), lcookie, core::mem::transmute(pvarloc)).ok() }
    }
    pub unsafe fn OnActivated(&self, lcookie: i32, factive: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnActivated)(windows_core::Interface::as_raw(self), lcookie, factive).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn FindWindowSW(&self, pvarloc: *const super::super::System::Variant::VARIANT, pvarlocroot: *const super::super::System::Variant::VARIANT, swclass: ShellWindowTypeConstants, phwnd: *mut i32, swfwoptions: ShellWindowFindWindowOptions) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindWindowSW)(windows_core::Interface::as_raw(self), core::mem::transmute(pvarloc), core::mem::transmute(pvarlocroot), swclass, phwnd as _, swfwoptions, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn OnCreated<P1>(&self, lcookie: i32, punk: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnCreated)(windows_core::Interface::as_raw(self), lcookie, punk.param().abi()).ok() }
    }
    pub unsafe fn ProcessAttachDetach(&self, fattach: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ProcessAttachDetach)(windows_core::Interface::as_raw(self), fattach).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IShellWindows_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub Count: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Item: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Variant::VARIANT, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Item: usize,
    pub _NewEnum: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Register: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32, ShellWindowTypeConstants, *mut i32) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub RegisterPending: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT, ShellWindowTypeConstants, *mut i32) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    RegisterPending: usize,
    pub Revoke: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub OnNavigate: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    OnNavigate: usize,
    pub OnActivated: unsafe extern "system" fn(*mut core::ffi::c_void, i32, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub FindWindowSW: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT, ShellWindowTypeConstants, *mut i32, ShellWindowFindWindowOptions, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    FindWindowSW: usize,
    pub OnCreated: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ProcessAttachDetach: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IShellWindows_Impl: super::super::System::Com::IDispatch_Impl {
    fn Count(&self) -> windows_core::Result<i32>;
    fn Item(&self, index: &super::super::System::Variant::VARIANT) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn _NewEnum(&self) -> windows_core::Result<windows_core::IUnknown>;
    fn Register(&self, pid: windows_core::Ref<super::super::System::Com::IDispatch>, hwnd: i32, swclass: ShellWindowTypeConstants) -> windows_core::Result<i32>;
    fn RegisterPending(&self, lthreadid: i32, pvarloc: *const super::super::System::Variant::VARIANT, pvarlocroot: *const super::super::System::Variant::VARIANT, swclass: ShellWindowTypeConstants) -> windows_core::Result<i32>;
    fn Revoke(&self, lcookie: i32) -> windows_core::Result<()>;
    fn OnNavigate(&self, lcookie: i32, pvarloc: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn OnActivated(&self, lcookie: i32, factive: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn FindWindowSW(&self, pvarloc: *const super::super::System::Variant::VARIANT, pvarlocroot: *const super::super::System::Variant::VARIANT, swclass: ShellWindowTypeConstants, phwnd: *mut i32, swfwoptions: ShellWindowFindWindowOptions) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn OnCreated(&self, lcookie: i32, punk: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn ProcessAttachDetach(&self, fattach: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IShellWindows_Vtbl {
    pub const fn new<Identity: IShellWindows_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Count<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, count: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellWindows_Impl::Count(this) {
                    Ok(ok__) => {
                        count.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Item<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: super::super::System::Variant::VARIANT, folder: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellWindows_Impl::Item(this, core::mem::transmute(&index)) {
                    Ok(ok__) => {
                        folder.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn _NewEnum<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellWindows_Impl::_NewEnum(this) {
                    Ok(ok__) => {
                        ppunk.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Register<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pid: *mut core::ffi::c_void, hwnd: i32, swclass: ShellWindowTypeConstants, plcookie: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellWindows_Impl::Register(this, core::mem::transmute_copy(&pid), core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&swclass)) {
                    Ok(ok__) => {
                        plcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RegisterPending<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lthreadid: i32, pvarloc: *const super::super::System::Variant::VARIANT, pvarlocroot: *const super::super::System::Variant::VARIANT, swclass: ShellWindowTypeConstants, plcookie: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellWindows_Impl::RegisterPending(this, core::mem::transmute_copy(&lthreadid), core::mem::transmute_copy(&pvarloc), core::mem::transmute_copy(&pvarlocroot), core::mem::transmute_copy(&swclass)) {
                    Ok(ok__) => {
                        plcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Revoke<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcookie: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellWindows_Impl::Revoke(this, core::mem::transmute_copy(&lcookie)).into()
            }
        }
        unsafe extern "system" fn OnNavigate<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcookie: i32, pvarloc: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellWindows_Impl::OnNavigate(this, core::mem::transmute_copy(&lcookie), core::mem::transmute_copy(&pvarloc)).into()
            }
        }
        unsafe extern "system" fn OnActivated<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcookie: i32, factive: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellWindows_Impl::OnActivated(this, core::mem::transmute_copy(&lcookie), core::mem::transmute_copy(&factive)).into()
            }
        }
        unsafe extern "system" fn FindWindowSW<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvarloc: *const super::super::System::Variant::VARIANT, pvarlocroot: *const super::super::System::Variant::VARIANT, swclass: ShellWindowTypeConstants, phwnd: *mut i32, swfwoptions: ShellWindowFindWindowOptions, ppdispout: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IShellWindows_Impl::FindWindowSW(this, core::mem::transmute_copy(&pvarloc), core::mem::transmute_copy(&pvarlocroot), core::mem::transmute_copy(&swclass), core::mem::transmute_copy(&phwnd), core::mem::transmute_copy(&swfwoptions)) {
                    Ok(ok__) => {
                        ppdispout.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn OnCreated<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lcookie: i32, punk: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellWindows_Impl::OnCreated(this, core::mem::transmute_copy(&lcookie), core::mem::transmute_copy(&punk)).into()
            }
        }
        unsafe extern "system" fn ProcessAttachDetach<Identity: IShellWindows_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fattach: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IShellWindows_Impl::ProcessAttachDetach(this, core::mem::transmute_copy(&fattach)).into()
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            Count: Count::<Identity, OFFSET>,
            Item: Item::<Identity, OFFSET>,
            _NewEnum: _NewEnum::<Identity, OFFSET>,
            Register: Register::<Identity, OFFSET>,
            RegisterPending: RegisterPending::<Identity, OFFSET>,
            Revoke: Revoke::<Identity, OFFSET>,
            OnNavigate: OnNavigate::<Identity, OFFSET>,
            OnActivated: OnActivated::<Identity, OFFSET>,
            FindWindowSW: FindWindowSW::<Identity, OFFSET>,
            OnCreated: OnCreated::<Identity, OFFSET>,
            ProcessAttachDetach: ProcessAttachDetach::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IShellWindows as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IShellWindows {}
windows_core::imp::define_interface!(ISortColumnArray, ISortColumnArray_Vtbl, 0x6dfc60fb_f2e9_459b_beb5_288f1a7c7d54);
windows_core::imp::interface_hierarchy!(ISortColumnArray, windows_core::IUnknown);
impl ISortColumnArray {
    pub unsafe fn GetCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetAt(&self, index: u32, sortcolumn: *mut SORTCOLUMN) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetAt)(windows_core::Interface::as_raw(self), index, sortcolumn as _).ok() }
    }
    pub unsafe fn GetSortType(&self) -> windows_core::Result<SORT_ORDER_TYPE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSortType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISortColumnArray_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetAt: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut SORTCOLUMN) -> windows_core::HRESULT,
    pub GetSortType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SORT_ORDER_TYPE) -> windows_core::HRESULT,
}
pub trait ISortColumnArray_Impl: windows_core::IUnknownImpl {
    fn GetCount(&self) -> windows_core::Result<u32>;
    fn GetAt(&self, index: u32, sortcolumn: *mut SORTCOLUMN) -> windows_core::Result<()>;
    fn GetSortType(&self) -> windows_core::Result<SORT_ORDER_TYPE>;
}
impl ISortColumnArray_Vtbl {
    pub const fn new<Identity: ISortColumnArray_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCount<Identity: ISortColumnArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, columncount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISortColumnArray_Impl::GetCount(this) {
                    Ok(ok__) => {
                        columncount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetAt<Identity: ISortColumnArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, index: u32, sortcolumn: *mut SORTCOLUMN) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISortColumnArray_Impl::GetAt(this, core::mem::transmute_copy(&index), core::mem::transmute_copy(&sortcolumn)).into()
            }
        }
        unsafe extern "system" fn GetSortType<Identity: ISortColumnArray_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut SORT_ORDER_TYPE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISortColumnArray_Impl::GetSortType(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetCount: GetCount::<Identity, OFFSET>,
            GetAt: GetAt::<Identity, OFFSET>,
            GetSortType: GetSortType::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISortColumnArray as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISortColumnArray {}
windows_core::imp::define_interface!(IStartMenuPinnedList, IStartMenuPinnedList_Vtbl, 0x4cd19ada_25a5_4a32_b3b7_347bee5be36b);
windows_core::imp::interface_hierarchy!(IStartMenuPinnedList, windows_core::IUnknown);
impl IStartMenuPinnedList {
    pub unsafe fn RemoveFromList<P0>(&self, pitem: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveFromList)(windows_core::Interface::as_raw(self), pitem.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IStartMenuPinnedList_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub RemoveFromList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IStartMenuPinnedList_Impl: windows_core::IUnknownImpl {
    fn RemoveFromList(&self, pitem: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
}
impl IStartMenuPinnedList_Vtbl {
    pub const fn new<Identity: IStartMenuPinnedList_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn RemoveFromList<Identity: IStartMenuPinnedList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IStartMenuPinnedList_Impl::RemoveFromList(this, core::mem::transmute_copy(&pitem)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), RemoveFromList: RemoveFromList::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStartMenuPinnedList as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IStartMenuPinnedList {}
windows_core::imp::define_interface!(IStorageProviderBanners, IStorageProviderBanners_Vtbl, 0x5efb46d7_47c0_4b68_acda_ded47c90ec91);
windows_core::imp::interface_hierarchy!(IStorageProviderBanners, windows_core::IUnknown);
impl IStorageProviderBanners {
    pub unsafe fn SetBanner<P0, P1, P2>(&self, provideridentity: P0, subscriptionid: P1, contentid: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetBanner)(windows_core::Interface::as_raw(self), provideridentity.param().abi(), subscriptionid.param().abi(), contentid.param().abi()).ok() }
    }
    pub unsafe fn ClearBanner<P0, P1>(&self, provideridentity: P0, subscriptionid: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ClearBanner)(windows_core::Interface::as_raw(self), provideridentity.param().abi(), subscriptionid.param().abi()).ok() }
    }
    pub unsafe fn ClearAllBanners<P0>(&self, provideridentity: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ClearAllBanners)(windows_core::Interface::as_raw(self), provideridentity.param().abi()).ok() }
    }
    pub unsafe fn GetBanner<P0, P1>(&self, provideridentity: P0, subscriptionid: P1) -> windows_core::Result<windows_core::PWSTR>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetBanner)(windows_core::Interface::as_raw(self), provideridentity.param().abi(), subscriptionid.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IStorageProviderBanners_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetBanner: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ClearBanner: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ClearAllBanners: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub GetBanner: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait IStorageProviderBanners_Impl: windows_core::IUnknownImpl {
    fn SetBanner(&self, provideridentity: &windows_core::PCWSTR, subscriptionid: &windows_core::PCWSTR, contentid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ClearBanner(&self, provideridentity: &windows_core::PCWSTR, subscriptionid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ClearAllBanners(&self, provideridentity: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn GetBanner(&self, provideridentity: &windows_core::PCWSTR, subscriptionid: &windows_core::PCWSTR) -> windows_core::Result<windows_core::PWSTR>;
}
impl IStorageProviderBanners_Vtbl {
    pub const fn new<Identity: IStorageProviderBanners_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetBanner<Identity: IStorageProviderBanners_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, provideridentity: windows_core::PCWSTR, subscriptionid: windows_core::PCWSTR, contentid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IStorageProviderBanners_Impl::SetBanner(this, core::mem::transmute(&provideridentity), core::mem::transmute(&subscriptionid), core::mem::transmute(&contentid)).into()
            }
        }
        unsafe extern "system" fn ClearBanner<Identity: IStorageProviderBanners_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, provideridentity: windows_core::PCWSTR, subscriptionid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IStorageProviderBanners_Impl::ClearBanner(this, core::mem::transmute(&provideridentity), core::mem::transmute(&subscriptionid)).into()
            }
        }
        unsafe extern "system" fn ClearAllBanners<Identity: IStorageProviderBanners_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, provideridentity: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IStorageProviderBanners_Impl::ClearAllBanners(this, core::mem::transmute(&provideridentity)).into()
            }
        }
        unsafe extern "system" fn GetBanner<Identity: IStorageProviderBanners_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, provideridentity: windows_core::PCWSTR, subscriptionid: windows_core::PCWSTR, contentid: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IStorageProviderBanners_Impl::GetBanner(this, core::mem::transmute(&provideridentity), core::mem::transmute(&subscriptionid)) {
                    Ok(ok__) => {
                        contentid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBanner: SetBanner::<Identity, OFFSET>,
            ClearBanner: ClearBanner::<Identity, OFFSET>,
            ClearAllBanners: ClearAllBanners::<Identity, OFFSET>,
            GetBanner: GetBanner::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStorageProviderBanners as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IStorageProviderBanners {}
windows_core::imp::define_interface!(IStorageProviderCopyHook, IStorageProviderCopyHook_Vtbl, 0x7bf992a9_af7a_4dba_b2e5_4d080b1ecbc6);
windows_core::imp::interface_hierarchy!(IStorageProviderCopyHook, windows_core::IUnknown);
impl IStorageProviderCopyHook {
    pub unsafe fn CopyCallback<P3, P5>(&self, hwnd: super::super::Foundation::HWND, operation: u32, flags: u32, srcfile: P3, srcattribs: u32, destfile: P5, destattribs: u32) -> windows_core::Result<u32>
    where
        P3: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CopyCallback)(windows_core::Interface::as_raw(self), hwnd, operation, flags, srcfile.param().abi(), srcattribs, destfile.param().abi(), destattribs, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IStorageProviderCopyHook_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CopyCallback: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32, u32, windows_core::PCWSTR, u32, windows_core::PCWSTR, u32, *mut u32) -> windows_core::HRESULT,
}
pub trait IStorageProviderCopyHook_Impl: windows_core::IUnknownImpl {
    fn CopyCallback(&self, hwnd: super::super::Foundation::HWND, operation: u32, flags: u32, srcfile: &windows_core::PCWSTR, srcattribs: u32, destfile: &windows_core::PCWSTR, destattribs: u32) -> windows_core::Result<u32>;
}
impl IStorageProviderCopyHook_Vtbl {
    pub const fn new<Identity: IStorageProviderCopyHook_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CopyCallback<Identity: IStorageProviderCopyHook_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, operation: u32, flags: u32, srcfile: windows_core::PCWSTR, srcattribs: u32, destfile: windows_core::PCWSTR, destattribs: u32, result: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IStorageProviderCopyHook_Impl::CopyCallback(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&operation), core::mem::transmute_copy(&flags), core::mem::transmute(&srcfile), core::mem::transmute_copy(&srcattribs), core::mem::transmute(&destfile), core::mem::transmute_copy(&destattribs)) {
                    Ok(ok__) => {
                        result.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CopyCallback: CopyCallback::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStorageProviderCopyHook as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IStorageProviderCopyHook {}
windows_core::imp::define_interface!(IStorageProviderHandler, IStorageProviderHandler_Vtbl, 0x162c6fb5_44d3_435b_903d_e613fa093fb5);
windows_core::imp::interface_hierarchy!(IStorageProviderHandler, windows_core::IUnknown);
impl IStorageProviderHandler {
    pub unsafe fn GetPropertyHandlerFromPath<P0>(&self, path: P0) -> windows_core::Result<IStorageProviderPropertyHandler>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPropertyHandlerFromPath)(windows_core::Interface::as_raw(self), path.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetPropertyHandlerFromUri<P0>(&self, uri: P0) -> windows_core::Result<IStorageProviderPropertyHandler>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPropertyHandlerFromUri)(windows_core::Interface::as_raw(self), uri.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetPropertyHandlerFromFileId<P0>(&self, fileid: P0) -> windows_core::Result<IStorageProviderPropertyHandler>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPropertyHandlerFromFileId)(windows_core::Interface::as_raw(self), fileid.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IStorageProviderHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetPropertyHandlerFromPath: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetPropertyHandlerFromUri: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetPropertyHandlerFromFileId: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IStorageProviderHandler_Impl: windows_core::IUnknownImpl {
    fn GetPropertyHandlerFromPath(&self, path: &windows_core::PCWSTR) -> windows_core::Result<IStorageProviderPropertyHandler>;
    fn GetPropertyHandlerFromUri(&self, uri: &windows_core::PCWSTR) -> windows_core::Result<IStorageProviderPropertyHandler>;
    fn GetPropertyHandlerFromFileId(&self, fileid: &windows_core::PCWSTR) -> windows_core::Result<IStorageProviderPropertyHandler>;
}
impl IStorageProviderHandler_Vtbl {
    pub const fn new<Identity: IStorageProviderHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetPropertyHandlerFromPath<Identity: IStorageProviderHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, propertyhandler: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IStorageProviderHandler_Impl::GetPropertyHandlerFromPath(this, core::mem::transmute(&path)) {
                    Ok(ok__) => {
                        propertyhandler.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPropertyHandlerFromUri<Identity: IStorageProviderHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, uri: windows_core::PCWSTR, propertyhandler: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IStorageProviderHandler_Impl::GetPropertyHandlerFromUri(this, core::mem::transmute(&uri)) {
                    Ok(ok__) => {
                        propertyhandler.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPropertyHandlerFromFileId<Identity: IStorageProviderHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fileid: windows_core::PCWSTR, propertyhandler: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IStorageProviderHandler_Impl::GetPropertyHandlerFromFileId(this, core::mem::transmute(&fileid)) {
                    Ok(ok__) => {
                        propertyhandler.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPropertyHandlerFromPath: GetPropertyHandlerFromPath::<Identity, OFFSET>,
            GetPropertyHandlerFromUri: GetPropertyHandlerFromUri::<Identity, OFFSET>,
            GetPropertyHandlerFromFileId: GetPropertyHandlerFromFileId::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStorageProviderHandler as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IStorageProviderHandler {}
windows_core::imp::define_interface!(IStorageProviderPropertyHandler, IStorageProviderPropertyHandler_Vtbl, 0x301dfbe5_524c_4b0f_8b2d_21c40b3a2988);
windows_core::imp::interface_hierarchy!(IStorageProviderPropertyHandler, windows_core::IUnknown);
impl IStorageProviderPropertyHandler {
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn RetrieveProperties(&self, propertiestoretrieve: &[super::super::Foundation::PROPERTYKEY]) -> windows_core::Result<PropertiesSystem::IPropertyStore> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RetrieveProperties)(windows_core::Interface::as_raw(self), core::mem::transmute(propertiestoretrieve.as_ptr()), propertiestoretrieve.len().try_into().unwrap(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn SaveProperties<P0>(&self, propertiestosave: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<PropertiesSystem::IPropertyStore>,
    {
        unsafe { (windows_core::Interface::vtable(self).SaveProperties)(windows_core::Interface::as_raw(self), propertiestosave.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IStorageProviderPropertyHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub RetrieveProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    RetrieveProperties: usize,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub SaveProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    SaveProperties: usize,
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait IStorageProviderPropertyHandler_Impl: windows_core::IUnknownImpl {
    fn RetrieveProperties(&self, propertiestoretrieve: *const super::super::Foundation::PROPERTYKEY, propertiestoretrievecount: u32) -> windows_core::Result<PropertiesSystem::IPropertyStore>;
    fn SaveProperties(&self, propertiestosave: windows_core::Ref<PropertiesSystem::IPropertyStore>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl IStorageProviderPropertyHandler_Vtbl {
    pub const fn new<Identity: IStorageProviderPropertyHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn RetrieveProperties<Identity: IStorageProviderPropertyHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, propertiestoretrieve: *const super::super::Foundation::PROPERTYKEY, propertiestoretrievecount: u32, retrievedproperties: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IStorageProviderPropertyHandler_Impl::RetrieveProperties(this, core::mem::transmute_copy(&propertiestoretrieve), core::mem::transmute_copy(&propertiestoretrievecount)) {
                    Ok(ok__) => {
                        retrievedproperties.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SaveProperties<Identity: IStorageProviderPropertyHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, propertiestosave: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IStorageProviderPropertyHandler_Impl::SaveProperties(this, core::mem::transmute_copy(&propertiestosave)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RetrieveProperties: RetrieveProperties::<Identity, OFFSET>,
            SaveProperties: SaveProperties::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStorageProviderPropertyHandler as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for IStorageProviderPropertyHandler {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IStreamAsync, IStreamAsync_Vtbl, 0xfe0b6665_e0ca_49b9_a178_2b5cb48d92a5);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IStreamAsync {
    type Target = super::super::System::Com::IStream;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IStreamAsync, windows_core::IUnknown, super::super::System::Com::ISequentialStream, super::super::System::Com::IStream);
#[cfg(feature = "Win32_System_Com")]
impl IStreamAsync {
    #[cfg(feature = "Win32_System_IO")]
    pub unsafe fn ReadAsync(&self, pv: *mut core::ffi::c_void, cb: u32, pcbread: Option<*mut u32>, lpoverlapped: *const super::super::System::IO::OVERLAPPED) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReadAsync)(windows_core::Interface::as_raw(self), pv as _, cb, pcbread.unwrap_or(core::mem::zeroed()) as _, lpoverlapped).ok() }
    }
    #[cfg(feature = "Win32_System_IO")]
    pub unsafe fn WriteAsync(&self, lpbuffer: *const core::ffi::c_void, cb: u32, pcbwritten: Option<*mut u32>, lpoverlapped: *const super::super::System::IO::OVERLAPPED) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).WriteAsync)(windows_core::Interface::as_raw(self), lpbuffer, cb, pcbwritten.unwrap_or(core::mem::zeroed()) as _, lpoverlapped).ok() }
    }
    #[cfg(feature = "Win32_System_IO")]
    pub unsafe fn OverlappedResult(&self, lpoverlapped: *const super::super::System::IO::OVERLAPPED, lpnumberofbytestransferred: *mut u32, bwait: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OverlappedResult)(windows_core::Interface::as_raw(self), lpoverlapped, lpnumberofbytestransferred as _, bwait.into()).ok() }
    }
    pub unsafe fn CancelIo(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).CancelIo)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IStreamAsync_Vtbl {
    pub base__: super::super::System::Com::IStream_Vtbl,
    #[cfg(feature = "Win32_System_IO")]
    pub ReadAsync: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, *mut u32, *const super::super::System::IO::OVERLAPPED) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_IO"))]
    ReadAsync: usize,
    #[cfg(feature = "Win32_System_IO")]
    pub WriteAsync: unsafe extern "system" fn(*mut core::ffi::c_void, *const core::ffi::c_void, u32, *mut u32, *const super::super::System::IO::OVERLAPPED) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_IO"))]
    WriteAsync: usize,
    #[cfg(feature = "Win32_System_IO")]
    pub OverlappedResult: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::System::IO::OVERLAPPED, *mut u32, windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_IO"))]
    OverlappedResult: usize,
    pub CancelIo: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_IO"))]
pub trait IStreamAsync_Impl: super::super::System::Com::IStream_Impl {
    fn ReadAsync(&self, pv: *mut core::ffi::c_void, cb: u32, pcbread: *mut u32, lpoverlapped: *const super::super::System::IO::OVERLAPPED) -> windows_core::Result<()>;
    fn WriteAsync(&self, lpbuffer: *const core::ffi::c_void, cb: u32, pcbwritten: *mut u32, lpoverlapped: *const super::super::System::IO::OVERLAPPED) -> windows_core::Result<()>;
    fn OverlappedResult(&self, lpoverlapped: *const super::super::System::IO::OVERLAPPED, lpnumberofbytestransferred: *mut u32, bwait: windows_core::BOOL) -> windows_core::Result<()>;
    fn CancelIo(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_IO"))]
impl IStreamAsync_Vtbl {
    pub const fn new<Identity: IStreamAsync_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ReadAsync<Identity: IStreamAsync_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pv: *mut core::ffi::c_void, cb: u32, pcbread: *mut u32, lpoverlapped: *const super::super::System::IO::OVERLAPPED) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IStreamAsync_Impl::ReadAsync(this, core::mem::transmute_copy(&pv), core::mem::transmute_copy(&cb), core::mem::transmute_copy(&pcbread), core::mem::transmute_copy(&lpoverlapped)).into()
            }
        }
        unsafe extern "system" fn WriteAsync<Identity: IStreamAsync_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpbuffer: *const core::ffi::c_void, cb: u32, pcbwritten: *mut u32, lpoverlapped: *const super::super::System::IO::OVERLAPPED) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IStreamAsync_Impl::WriteAsync(this, core::mem::transmute_copy(&lpbuffer), core::mem::transmute_copy(&cb), core::mem::transmute_copy(&pcbwritten), core::mem::transmute_copy(&lpoverlapped)).into()
            }
        }
        unsafe extern "system" fn OverlappedResult<Identity: IStreamAsync_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpoverlapped: *const super::super::System::IO::OVERLAPPED, lpnumberofbytestransferred: *mut u32, bwait: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IStreamAsync_Impl::OverlappedResult(this, core::mem::transmute_copy(&lpoverlapped), core::mem::transmute_copy(&lpnumberofbytestransferred), core::mem::transmute_copy(&bwait)).into()
            }
        }
        unsafe extern "system" fn CancelIo<Identity: IStreamAsync_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IStreamAsync_Impl::CancelIo(this).into()
            }
        }
        Self {
            base__: super::super::System::Com::IStream_Vtbl::new::<Identity, OFFSET>(),
            ReadAsync: ReadAsync::<Identity, OFFSET>,
            WriteAsync: WriteAsync::<Identity, OFFSET>,
            OverlappedResult: OverlappedResult::<Identity, OFFSET>,
            CancelIo: CancelIo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamAsync as windows_core::Interface>::IID || iid == &<super::super::System::Com::ISequentialStream as windows_core::Interface>::IID || iid == &<super::super::System::Com::IStream as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_IO"))]
impl windows_core::RuntimeName for IStreamAsync {}
windows_core::imp::define_interface!(IStreamUnbufferedInfo, IStreamUnbufferedInfo_Vtbl, 0x8a68fdda_1fdc_4c20_8ceb_416643b5a625);
windows_core::imp::interface_hierarchy!(IStreamUnbufferedInfo, windows_core::IUnknown);
impl IStreamUnbufferedInfo {
    pub unsafe fn GetSectorSize(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSectorSize)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IStreamUnbufferedInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSectorSize: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait IStreamUnbufferedInfo_Impl: windows_core::IUnknownImpl {
    fn GetSectorSize(&self) -> windows_core::Result<u32>;
}
impl IStreamUnbufferedInfo_Vtbl {
    pub const fn new<Identity: IStreamUnbufferedInfo_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSectorSize<Identity: IStreamUnbufferedInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcbsectorsize: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IStreamUnbufferedInfo_Impl::GetSectorSize(this) {
                    Ok(ok__) => {
                        pcbsectorsize.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetSectorSize: GetSectorSize::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IStreamUnbufferedInfo as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IStreamUnbufferedInfo {}
windows_core::imp::define_interface!(ISuspensionDependencyManager, ISuspensionDependencyManager_Vtbl, 0x52b83a42_2543_416a_81d9_c0de7969c8b3);
windows_core::imp::interface_hierarchy!(ISuspensionDependencyManager, windows_core::IUnknown);
impl ISuspensionDependencyManager {
    pub unsafe fn RegisterAsChild(&self, processhandle: super::super::Foundation::HANDLE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RegisterAsChild)(windows_core::Interface::as_raw(self), processhandle).ok() }
    }
    pub unsafe fn GroupChildWithParent(&self, childprocesshandle: super::super::Foundation::HANDLE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GroupChildWithParent)(windows_core::Interface::as_raw(self), childprocesshandle).ok() }
    }
    pub unsafe fn UngroupChildFromParent(&self, childprocesshandle: super::super::Foundation::HANDLE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UngroupChildFromParent)(windows_core::Interface::as_raw(self), childprocesshandle).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISuspensionDependencyManager_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub RegisterAsChild: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub GroupChildWithParent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HANDLE) -> windows_core::HRESULT,
    pub UngroupChildFromParent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HANDLE) -> windows_core::HRESULT,
}
pub trait ISuspensionDependencyManager_Impl: windows_core::IUnknownImpl {
    fn RegisterAsChild(&self, processhandle: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn GroupChildWithParent(&self, childprocesshandle: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
    fn UngroupChildFromParent(&self, childprocesshandle: super::super::Foundation::HANDLE) -> windows_core::Result<()>;
}
impl ISuspensionDependencyManager_Vtbl {
    pub const fn new<Identity: ISuspensionDependencyManager_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn RegisterAsChild<Identity: ISuspensionDependencyManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, processhandle: super::super::Foundation::HANDLE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISuspensionDependencyManager_Impl::RegisterAsChild(this, core::mem::transmute_copy(&processhandle)).into()
            }
        }
        unsafe extern "system" fn GroupChildWithParent<Identity: ISuspensionDependencyManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, childprocesshandle: super::super::Foundation::HANDLE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISuspensionDependencyManager_Impl::GroupChildWithParent(this, core::mem::transmute_copy(&childprocesshandle)).into()
            }
        }
        unsafe extern "system" fn UngroupChildFromParent<Identity: ISuspensionDependencyManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, childprocesshandle: super::super::Foundation::HANDLE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISuspensionDependencyManager_Impl::UngroupChildFromParent(this, core::mem::transmute_copy(&childprocesshandle)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RegisterAsChild: RegisterAsChild::<Identity, OFFSET>,
            GroupChildWithParent: GroupChildWithParent::<Identity, OFFSET>,
            UngroupChildFromParent: UngroupChildFromParent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISuspensionDependencyManager as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISuspensionDependencyManager {}
windows_core::imp::define_interface!(ISyncMgrConflict, ISyncMgrConflict_Vtbl, 0x9c204249_c443_4ba4_85ed_c972681db137);
windows_core::imp::interface_hierarchy!(ISyncMgrConflict, windows_core::IUnknown);
impl ISyncMgrConflict {
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
    pub unsafe fn GetProperty(&self, propkey: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Com::StructuredStorage::PROPVARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProperty)(windows_core::Interface::as_raw(self), propkey, &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetConflictIdInfo(&self) -> windows_core::Result<SYNCMGR_CONFLICT_ID_INFO> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetConflictIdInfo)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetItemsArray(&self) -> windows_core::Result<ISyncMgrConflictItems> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemsArray)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Resolve<P0>(&self, presolveinfo: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISyncMgrConflictResolveInfo>,
    {
        unsafe { (windows_core::Interface::vtable(self).Resolve)(windows_core::Interface::as_raw(self), presolveinfo.param().abi()).ok() }
    }
    pub unsafe fn GetResolutionHandler<T>(&self) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetResolutionHandler)(windows_core::Interface::as_raw(self), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrConflict_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
    pub GetProperty: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant")))]
    GetProperty: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub GetConflictIdInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_CONFLICT_ID_INFO) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetConflictIdInfo: usize,
    pub GetItemsArray: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Resolve: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetResolutionHandler: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
pub trait ISyncMgrConflict_Impl: windows_core::IUnknownImpl {
    fn GetProperty(&self, propkey: *const super::super::Foundation::PROPERTYKEY) -> windows_core::Result<super::super::System::Com::StructuredStorage::PROPVARIANT>;
    fn GetConflictIdInfo(&self) -> windows_core::Result<SYNCMGR_CONFLICT_ID_INFO>;
    fn GetItemsArray(&self) -> windows_core::Result<ISyncMgrConflictItems>;
    fn Resolve(&self, presolveinfo: windows_core::Ref<ISyncMgrConflictResolveInfo>) -> windows_core::Result<()>;
    fn GetResolutionHandler(&self, riid: *const windows_core::GUID, ppvresolutionhandler: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
impl ISyncMgrConflict_Vtbl {
    pub const fn new<Identity: ISyncMgrConflict_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetProperty<Identity: ISyncMgrConflict_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, propkey: *const super::super::Foundation::PROPERTYKEY, ppropvar: *mut super::super::System::Com::StructuredStorage::PROPVARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflict_Impl::GetProperty(this, core::mem::transmute_copy(&propkey)) {
                    Ok(ok__) => {
                        ppropvar.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetConflictIdInfo<Identity: ISyncMgrConflict_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pconflictidinfo: *mut SYNCMGR_CONFLICT_ID_INFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflict_Impl::GetConflictIdInfo(this) {
                    Ok(ok__) => {
                        pconflictidinfo.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItemsArray<Identity: ISyncMgrConflict_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pparray: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflict_Impl::GetItemsArray(this) {
                    Ok(ok__) => {
                        pparray.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Resolve<Identity: ISyncMgrConflict_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, presolveinfo: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflict_Impl::Resolve(this, core::mem::transmute_copy(&presolveinfo)).into()
            }
        }
        unsafe extern "system" fn GetResolutionHandler<Identity: ISyncMgrConflict_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppvresolutionhandler: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflict_Impl::GetResolutionHandler(this, core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppvresolutionhandler)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetProperty: GetProperty::<Identity, OFFSET>,
            GetConflictIdInfo: GetConflictIdInfo::<Identity, OFFSET>,
            GetItemsArray: GetItemsArray::<Identity, OFFSET>,
            Resolve: Resolve::<Identity, OFFSET>,
            GetResolutionHandler: GetResolutionHandler::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflict as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com_StructuredStorage", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for ISyncMgrConflict {}
windows_core::imp::define_interface!(ISyncMgrConflictFolder, ISyncMgrConflictFolder_Vtbl, 0x59287f5e_bc81_4fca_a7f1_e5a8ecdb1d69);
windows_core::imp::interface_hierarchy!(ISyncMgrConflictFolder, windows_core::IUnknown);
impl ISyncMgrConflictFolder {
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetConflictIDList<P0>(&self, pconflict: P0) -> windows_core::Result<*mut Common::ITEMIDLIST>
    where
        P0: windows_core::Param<ISyncMgrConflict>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetConflictIDList)(windows_core::Interface::as_raw(self), pconflict.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrConflictFolder_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetConflictIDList: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetConflictIDList: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ISyncMgrConflictFolder_Impl: windows_core::IUnknownImpl {
    fn GetConflictIDList(&self, pconflict: windows_core::Ref<ISyncMgrConflict>) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ISyncMgrConflictFolder_Vtbl {
    pub const fn new<Identity: ISyncMgrConflictFolder_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetConflictIDList<Identity: ISyncMgrConflictFolder_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pconflict: *mut core::ffi::c_void, ppidlconflict: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflictFolder_Impl::GetConflictIDList(this, core::mem::transmute_copy(&pconflict)) {
                    Ok(ok__) => {
                        ppidlconflict.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetConflictIDList: GetConflictIDList::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictFolder as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ISyncMgrConflictFolder {}
windows_core::imp::define_interface!(ISyncMgrConflictItems, ISyncMgrConflictItems_Vtbl, 0x9c7ead52_8023_4936_a4db_d2a9a99e436a);
windows_core::imp::interface_hierarchy!(ISyncMgrConflictItems, windows_core::IUnknown);
impl ISyncMgrConflictItems {
    pub unsafe fn GetCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetItem(&self, iindex: u32, piteminfo: *mut CONFIRM_CONFLICT_ITEM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetItem)(windows_core::Interface::as_raw(self), iindex, core::mem::transmute(piteminfo)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrConflictItems_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut CONFIRM_CONFLICT_ITEM) -> windows_core::HRESULT,
}
pub trait ISyncMgrConflictItems_Impl: windows_core::IUnknownImpl {
    fn GetCount(&self) -> windows_core::Result<u32>;
    fn GetItem(&self, iindex: u32, piteminfo: *mut CONFIRM_CONFLICT_ITEM) -> windows_core::Result<()>;
}
impl ISyncMgrConflictItems_Vtbl {
    pub const fn new<Identity: ISyncMgrConflictItems_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCount<Identity: ISyncMgrConflictItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflictItems_Impl::GetCount(this) {
                    Ok(ok__) => {
                        pcount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItem<Identity: ISyncMgrConflictItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iindex: u32, piteminfo: *mut CONFIRM_CONFLICT_ITEM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflictItems_Impl::GetItem(this, core::mem::transmute_copy(&iindex), core::mem::transmute_copy(&piteminfo)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetCount: GetCount::<Identity, OFFSET>, GetItem: GetItem::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictItems as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrConflictItems {}
windows_core::imp::define_interface!(ISyncMgrConflictPresenter, ISyncMgrConflictPresenter_Vtbl, 0x0b4f5353_fd2b_42cd_8763_4779f2d508a3);
windows_core::imp::interface_hierarchy!(ISyncMgrConflictPresenter, windows_core::IUnknown);
impl ISyncMgrConflictPresenter {
    pub unsafe fn PresentConflict<P0, P1>(&self, pconflict: P0, presolveinfo: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISyncMgrConflict>,
        P1: windows_core::Param<ISyncMgrConflictResolveInfo>,
    {
        unsafe { (windows_core::Interface::vtable(self).PresentConflict)(windows_core::Interface::as_raw(self), pconflict.param().abi(), presolveinfo.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrConflictPresenter_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub PresentConflict: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ISyncMgrConflictPresenter_Impl: windows_core::IUnknownImpl {
    fn PresentConflict(&self, pconflict: windows_core::Ref<ISyncMgrConflict>, presolveinfo: windows_core::Ref<ISyncMgrConflictResolveInfo>) -> windows_core::Result<()>;
}
impl ISyncMgrConflictPresenter_Vtbl {
    pub const fn new<Identity: ISyncMgrConflictPresenter_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn PresentConflict<Identity: ISyncMgrConflictPresenter_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pconflict: *mut core::ffi::c_void, presolveinfo: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflictPresenter_Impl::PresentConflict(this, core::mem::transmute_copy(&pconflict), core::mem::transmute_copy(&presolveinfo)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), PresentConflict: PresentConflict::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictPresenter as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrConflictPresenter {}
windows_core::imp::define_interface!(ISyncMgrConflictResolutionItems, ISyncMgrConflictResolutionItems_Vtbl, 0x458725b9_129d_4135_a998_9ceafec27007);
windows_core::imp::interface_hierarchy!(ISyncMgrConflictResolutionItems, windows_core::IUnknown);
impl ISyncMgrConflictResolutionItems {
    pub unsafe fn GetCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetItem(&self, iindex: u32) -> windows_core::Result<CONFIRM_CONFLICT_RESULT_INFO> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItem)(windows_core::Interface::as_raw(self), iindex, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrConflictResolutionItems_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetItem: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut CONFIRM_CONFLICT_RESULT_INFO) -> windows_core::HRESULT,
}
pub trait ISyncMgrConflictResolutionItems_Impl: windows_core::IUnknownImpl {
    fn GetCount(&self) -> windows_core::Result<u32>;
    fn GetItem(&self, iindex: u32) -> windows_core::Result<CONFIRM_CONFLICT_RESULT_INFO>;
}
impl ISyncMgrConflictResolutionItems_Vtbl {
    pub const fn new<Identity: ISyncMgrConflictResolutionItems_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetCount<Identity: ISyncMgrConflictResolutionItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcount: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflictResolutionItems_Impl::GetCount(this) {
                    Ok(ok__) => {
                        pcount.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItem<Identity: ISyncMgrConflictResolutionItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, iindex: u32, piteminfo: *mut CONFIRM_CONFLICT_RESULT_INFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflictResolutionItems_Impl::GetItem(this, core::mem::transmute_copy(&iindex)) {
                    Ok(ok__) => {
                        piteminfo.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetCount: GetCount::<Identity, OFFSET>, GetItem: GetItem::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictResolutionItems as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrConflictResolutionItems {}
windows_core::imp::define_interface!(ISyncMgrConflictResolveInfo, ISyncMgrConflictResolveInfo_Vtbl, 0xc405a219_25a2_442e_8743_b845a2cee93f);
windows_core::imp::interface_hierarchy!(ISyncMgrConflictResolveInfo, windows_core::IUnknown);
impl ISyncMgrConflictResolveInfo {
    pub unsafe fn GetIterationInfo(&self, pncurrentconflict: *mut u32, pcconflicts: *mut u32, pcremainingforapplytoall: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetIterationInfo)(windows_core::Interface::as_raw(self), pncurrentconflict as _, pcconflicts as _, pcremainingforapplytoall as _).ok() }
    }
    pub unsafe fn GetPresenterNextStep(&self) -> windows_core::Result<SYNCMGR_PRESENTER_NEXT_STEP> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPresenterNextStep)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPresenterChoice(&self, pnpresenterchoice: *mut SYNCMGR_PRESENTER_CHOICE, pfapplytoall: *mut windows_core::BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetPresenterChoice)(windows_core::Interface::as_raw(self), pnpresenterchoice as _, pfapplytoall as _).ok() }
    }
    pub unsafe fn GetItemChoiceCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemChoiceCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetItemChoice(&self, ichoice: u32) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemChoice)(windows_core::Interface::as_raw(self), ichoice, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetPresenterNextStep(&self, npresenternextstep: SYNCMGR_PRESENTER_NEXT_STEP) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetPresenterNextStep)(windows_core::Interface::as_raw(self), npresenternextstep).ok() }
    }
    pub unsafe fn SetPresenterChoice(&self, npresenterchoice: SYNCMGR_PRESENTER_CHOICE, fapplytoall: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetPresenterChoice)(windows_core::Interface::as_raw(self), npresenterchoice, fapplytoall.into()).ok() }
    }
    pub unsafe fn SetItemChoices(&self, prgiconflictitemindexes: *mut u32, cchoices: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetItemChoices)(windows_core::Interface::as_raw(self), prgiconflictitemindexes as _, cchoices).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrConflictResolveInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetIterationInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, *mut u32, *mut u32) -> windows_core::HRESULT,
    pub GetPresenterNextStep: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_PRESENTER_NEXT_STEP) -> windows_core::HRESULT,
    pub GetPresenterChoice: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_PRESENTER_CHOICE, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub GetItemChoiceCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetItemChoice: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut u32) -> windows_core::HRESULT,
    pub SetPresenterNextStep: unsafe extern "system" fn(*mut core::ffi::c_void, SYNCMGR_PRESENTER_NEXT_STEP) -> windows_core::HRESULT,
    pub SetPresenterChoice: unsafe extern "system" fn(*mut core::ffi::c_void, SYNCMGR_PRESENTER_CHOICE, windows_core::BOOL) -> windows_core::HRESULT,
    pub SetItemChoices: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32, u32) -> windows_core::HRESULT,
}
pub trait ISyncMgrConflictResolveInfo_Impl: windows_core::IUnknownImpl {
    fn GetIterationInfo(&self, pncurrentconflict: *mut u32, pcconflicts: *mut u32, pcremainingforapplytoall: *mut u32) -> windows_core::Result<()>;
    fn GetPresenterNextStep(&self) -> windows_core::Result<SYNCMGR_PRESENTER_NEXT_STEP>;
    fn GetPresenterChoice(&self, pnpresenterchoice: *mut SYNCMGR_PRESENTER_CHOICE, pfapplytoall: *mut windows_core::BOOL) -> windows_core::Result<()>;
    fn GetItemChoiceCount(&self) -> windows_core::Result<u32>;
    fn GetItemChoice(&self, ichoice: u32) -> windows_core::Result<u32>;
    fn SetPresenterNextStep(&self, npresenternextstep: SYNCMGR_PRESENTER_NEXT_STEP) -> windows_core::Result<()>;
    fn SetPresenterChoice(&self, npresenterchoice: SYNCMGR_PRESENTER_CHOICE, fapplytoall: windows_core::BOOL) -> windows_core::Result<()>;
    fn SetItemChoices(&self, prgiconflictitemindexes: *mut u32, cchoices: u32) -> windows_core::Result<()>;
}
impl ISyncMgrConflictResolveInfo_Vtbl {
    pub const fn new<Identity: ISyncMgrConflictResolveInfo_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetIterationInfo<Identity: ISyncMgrConflictResolveInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pncurrentconflict: *mut u32, pcconflicts: *mut u32, pcremainingforapplytoall: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflictResolveInfo_Impl::GetIterationInfo(this, core::mem::transmute_copy(&pncurrentconflict), core::mem::transmute_copy(&pcconflicts), core::mem::transmute_copy(&pcremainingforapplytoall)).into()
            }
        }
        unsafe extern "system" fn GetPresenterNextStep<Identity: ISyncMgrConflictResolveInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnpresenternextstep: *mut SYNCMGR_PRESENTER_NEXT_STEP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflictResolveInfo_Impl::GetPresenterNextStep(this) {
                    Ok(ok__) => {
                        pnpresenternextstep.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPresenterChoice<Identity: ISyncMgrConflictResolveInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnpresenterchoice: *mut SYNCMGR_PRESENTER_CHOICE, pfapplytoall: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflictResolveInfo_Impl::GetPresenterChoice(this, core::mem::transmute_copy(&pnpresenterchoice), core::mem::transmute_copy(&pfapplytoall)).into()
            }
        }
        unsafe extern "system" fn GetItemChoiceCount<Identity: ISyncMgrConflictResolveInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcchoices: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflictResolveInfo_Impl::GetItemChoiceCount(this) {
                    Ok(ok__) => {
                        pcchoices.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItemChoice<Identity: ISyncMgrConflictResolveInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ichoice: u32, pichoiceindex: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflictResolveInfo_Impl::GetItemChoice(this, core::mem::transmute_copy(&ichoice)) {
                    Ok(ok__) => {
                        pichoiceindex.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetPresenterNextStep<Identity: ISyncMgrConflictResolveInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, npresenternextstep: SYNCMGR_PRESENTER_NEXT_STEP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflictResolveInfo_Impl::SetPresenterNextStep(this, core::mem::transmute_copy(&npresenternextstep)).into()
            }
        }
        unsafe extern "system" fn SetPresenterChoice<Identity: ISyncMgrConflictResolveInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, npresenterchoice: SYNCMGR_PRESENTER_CHOICE, fapplytoall: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflictResolveInfo_Impl::SetPresenterChoice(this, core::mem::transmute_copy(&npresenterchoice), core::mem::transmute_copy(&fapplytoall)).into()
            }
        }
        unsafe extern "system" fn SetItemChoices<Identity: ISyncMgrConflictResolveInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, prgiconflictitemindexes: *mut u32, cchoices: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflictResolveInfo_Impl::SetItemChoices(this, core::mem::transmute_copy(&prgiconflictitemindexes), core::mem::transmute_copy(&cchoices)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetIterationInfo: GetIterationInfo::<Identity, OFFSET>,
            GetPresenterNextStep: GetPresenterNextStep::<Identity, OFFSET>,
            GetPresenterChoice: GetPresenterChoice::<Identity, OFFSET>,
            GetItemChoiceCount: GetItemChoiceCount::<Identity, OFFSET>,
            GetItemChoice: GetItemChoice::<Identity, OFFSET>,
            SetPresenterNextStep: SetPresenterNextStep::<Identity, OFFSET>,
            SetPresenterChoice: SetPresenterChoice::<Identity, OFFSET>,
            SetItemChoices: SetItemChoices::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictResolveInfo as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrConflictResolveInfo {}
windows_core::imp::define_interface!(ISyncMgrConflictStore, ISyncMgrConflictStore_Vtbl, 0xcf8fc579_c396_4774_85f1_d908a831156e);
windows_core::imp::interface_hierarchy!(ISyncMgrConflictStore, windows_core::IUnknown);
impl ISyncMgrConflictStore {
    pub unsafe fn EnumConflicts<P0, P1>(&self, pszhandlerid: P0, pszitemid: P1) -> windows_core::Result<IEnumSyncMgrConflict>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumConflicts)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), pszitemid.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn BindToConflict<T>(&self, pconflictidinfo: *const SYNCMGR_CONFLICT_ID_INFO) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).BindToConflict)(windows_core::Interface::as_raw(self), pconflictidinfo, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn RemoveConflicts(&self, rgconflictidinfo: &[SYNCMGR_CONFLICT_ID_INFO]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveConflicts)(windows_core::Interface::as_raw(self), core::mem::transmute(rgconflictidinfo.as_ptr()), rgconflictidinfo.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn GetCount<P0, P1>(&self, pszhandlerid: P0, pszitemid: P1) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCount)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), pszitemid.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrConflictStore_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub EnumConflicts: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub BindToConflict: unsafe extern "system" fn(*mut core::ffi::c_void, *const SYNCMGR_CONFLICT_ID_INFO, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    BindToConflict: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub RemoveConflicts: unsafe extern "system" fn(*mut core::ffi::c_void, *const SYNCMGR_CONFLICT_ID_INFO, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    RemoveConflicts: usize,
    pub GetCount: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *mut u32) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait ISyncMgrConflictStore_Impl: windows_core::IUnknownImpl {
    fn EnumConflicts(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<IEnumSyncMgrConflict>;
    fn BindToConflict(&self, pconflictidinfo: *const SYNCMGR_CONFLICT_ID_INFO, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn RemoveConflicts(&self, rgconflictidinfo: *const SYNCMGR_CONFLICT_ID_INFO, cconflicts: u32) -> windows_core::Result<()>;
    fn GetCount(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<u32>;
}
#[cfg(feature = "Win32_System_Com")]
impl ISyncMgrConflictStore_Vtbl {
    pub const fn new<Identity: ISyncMgrConflictStore_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn EnumConflicts<Identity: ISyncMgrConflictStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflictStore_Impl::EnumConflicts(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid)) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn BindToConflict<Identity: ISyncMgrConflictStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pconflictidinfo: *const SYNCMGR_CONFLICT_ID_INFO, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflictStore_Impl::BindToConflict(this, core::mem::transmute_copy(&pconflictidinfo), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn RemoveConflicts<Identity: ISyncMgrConflictStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rgconflictidinfo: *const SYNCMGR_CONFLICT_ID_INFO, cconflicts: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrConflictStore_Impl::RemoveConflicts(this, core::mem::transmute_copy(&rgconflictidinfo), core::mem::transmute_copy(&cconflicts)).into()
            }
        }
        unsafe extern "system" fn GetCount<Identity: ISyncMgrConflictStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, pnconflicts: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrConflictStore_Impl::GetCount(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid)) {
                    Ok(ok__) => {
                        pnconflicts.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            EnumConflicts: EnumConflicts::<Identity, OFFSET>,
            BindToConflict: BindToConflict::<Identity, OFFSET>,
            RemoveConflicts: RemoveConflicts::<Identity, OFFSET>,
            GetCount: GetCount::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrConflictStore as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ISyncMgrConflictStore {}
windows_core::imp::define_interface!(ISyncMgrControl, ISyncMgrControl_Vtbl, 0x9b63616c_36b2_46bc_959f_c1593952d19b);
windows_core::imp::interface_hierarchy!(ISyncMgrControl, windows_core::IUnknown);
impl ISyncMgrControl {
    pub unsafe fn StartHandlerSync<P0, P2, P4>(&self, pszhandlerid: P0, hwndowner: super::super::Foundation::HWND, punk: P2, nsynccontrolflags: SYNCMGR_SYNC_CONTROL_FLAGS, presult: P4) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::IUnknown>,
        P4: windows_core::Param<ISyncMgrSyncResult>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartHandlerSync)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), hwndowner, punk.param().abi(), nsynccontrolflags, presult.param().abi()).ok() }
    }
    pub unsafe fn StartItemSync<P0, P4, P6>(&self, pszhandlerid: P0, ppszitemids: &[windows_core::PCWSTR], hwndowner: super::super::Foundation::HWND, punk: P4, nsynccontrolflags: SYNCMGR_SYNC_CONTROL_FLAGS, presult: P6) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::IUnknown>,
        P6: windows_core::Param<ISyncMgrSyncResult>,
    {
        unsafe { (windows_core::Interface::vtable(self).StartItemSync)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), core::mem::transmute(ppszitemids.as_ptr()), ppszitemids.len().try_into().unwrap(), hwndowner, punk.param().abi(), nsynccontrolflags, presult.param().abi()).ok() }
    }
    pub unsafe fn StartSyncAll(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).StartSyncAll)(windows_core::Interface::as_raw(self), hwndowner).ok() }
    }
    pub unsafe fn StopHandlerSync<P0>(&self, pszhandlerid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StopHandlerSync)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi()).ok() }
    }
    pub unsafe fn StopItemSync<P0>(&self, pszhandlerid: P0, ppszitemids: &[windows_core::PCWSTR]) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).StopItemSync)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), core::mem::transmute(ppszitemids.as_ptr()), ppszitemids.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn StopSyncAll(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).StopSyncAll)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn UpdateHandlerCollection(&self, rclsidcollectionid: *const windows_core::GUID, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateHandlerCollection)(windows_core::Interface::as_raw(self), rclsidcollectionid, ncontrolflags).ok() }
    }
    pub unsafe fn UpdateHandler<P0>(&self, pszhandlerid: P0, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateHandler)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), ncontrolflags).ok() }
    }
    pub unsafe fn UpdateItem<P0, P1>(&self, pszhandlerid: P0, pszitemid: P1, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateItem)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), pszitemid.param().abi(), ncontrolflags).ok() }
    }
    pub unsafe fn UpdateEvents<P0, P1>(&self, pszhandlerid: P0, pszitemid: P1, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateEvents)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), pszitemid.param().abi(), ncontrolflags).ok() }
    }
    pub unsafe fn UpdateConflict<P0, P1, P2>(&self, pszhandlerid: P0, pszitemid: P1, pconflict: P2, nreason: SYNCMGR_UPDATE_REASON) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<ISyncMgrConflict>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateConflict)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), pszitemid.param().abi(), pconflict.param().abi(), nreason).ok() }
    }
    pub unsafe fn UpdateConflicts<P0, P1>(&self, pszhandlerid: P0, pszitemid: P1, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateConflicts)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), pszitemid.param().abi(), ncontrolflags).ok() }
    }
    pub unsafe fn ActivateHandler<P1>(&self, factivate: bool, pszhandlerid: P1, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ActivateHandler)(windows_core::Interface::as_raw(self), factivate.into(), pszhandlerid.param().abi(), hwndowner, ncontrolflags).ok() }
    }
    pub unsafe fn EnableHandler<P1>(&self, fenable: bool, pszhandlerid: P1, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EnableHandler)(windows_core::Interface::as_raw(self), fenable.into(), pszhandlerid.param().abi(), hwndowner, ncontrolflags).ok() }
    }
    pub unsafe fn EnableItem<P1, P2>(&self, fenable: bool, pszhandlerid: P1, pszitemid: P2, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EnableItem)(windows_core::Interface::as_raw(self), fenable.into(), pszhandlerid.param().abi(), pszitemid.param().abi(), hwndowner, ncontrolflags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrControl_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub StartHandlerSync: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, super::super::Foundation::HWND, *mut core::ffi::c_void, SYNCMGR_SYNC_CONTROL_FLAGS, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StartItemSync: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *const windows_core::PCWSTR, u32, super::super::Foundation::HWND, *mut core::ffi::c_void, SYNCMGR_SYNC_CONTROL_FLAGS, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub StartSyncAll: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub StopHandlerSync: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub StopItemSync: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *const windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub StopSyncAll: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub UpdateHandlerCollection: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT,
    pub UpdateHandler: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT,
    pub UpdateItem: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT,
    pub UpdateEvents: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT,
    pub UpdateConflict: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *mut core::ffi::c_void, SYNCMGR_UPDATE_REASON) -> windows_core::HRESULT,
    pub UpdateConflicts: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT,
    pub ActivateHandler: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL, windows_core::PCWSTR, super::super::Foundation::HWND, SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT,
    pub EnableHandler: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL, windows_core::PCWSTR, super::super::Foundation::HWND, SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT,
    pub EnableItem: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL, windows_core::PCWSTR, windows_core::PCWSTR, super::super::Foundation::HWND, SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT,
}
pub trait ISyncMgrControl_Impl: windows_core::IUnknownImpl {
    fn StartHandlerSync(&self, pszhandlerid: &windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, punk: windows_core::Ref<windows_core::IUnknown>, nsynccontrolflags: SYNCMGR_SYNC_CONTROL_FLAGS, presult: windows_core::Ref<ISyncMgrSyncResult>) -> windows_core::Result<()>;
    fn StartItemSync(&self, pszhandlerid: &windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32, hwndowner: super::super::Foundation::HWND, punk: windows_core::Ref<windows_core::IUnknown>, nsynccontrolflags: SYNCMGR_SYNC_CONTROL_FLAGS, presult: windows_core::Ref<ISyncMgrSyncResult>) -> windows_core::Result<()>;
    fn StartSyncAll(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn StopHandlerSync(&self, pszhandlerid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn StopItemSync(&self, pszhandlerid: &windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32) -> windows_core::Result<()>;
    fn StopSyncAll(&self) -> windows_core::Result<()>;
    fn UpdateHandlerCollection(&self, rclsidcollectionid: *const windows_core::GUID, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn UpdateHandler(&self, pszhandlerid: &windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn UpdateItem(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn UpdateEvents(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn UpdateConflict(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR, pconflict: windows_core::Ref<ISyncMgrConflict>, nreason: SYNCMGR_UPDATE_REASON) -> windows_core::Result<()>;
    fn UpdateConflicts(&self, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn ActivateHandler(&self, factivate: windows_core::BOOL, pszhandlerid: &windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn EnableHandler(&self, fenable: windows_core::BOOL, pszhandlerid: &windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
    fn EnableItem(&self, fenable: windows_core::BOOL, pszhandlerid: &windows_core::PCWSTR, pszitemid: &windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::Result<()>;
}
impl ISyncMgrControl_Vtbl {
    pub const fn new<Identity: ISyncMgrControl_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn StartHandlerSync<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, punk: *mut core::ffi::c_void, nsynccontrolflags: SYNCMGR_SYNC_CONTROL_FLAGS, presult: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::StartHandlerSync(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&punk), core::mem::transmute_copy(&nsynccontrolflags), core::mem::transmute_copy(&presult)).into()
            }
        }
        unsafe extern "system" fn StartItemSync<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32, hwndowner: super::super::Foundation::HWND, punk: *mut core::ffi::c_void, nsynccontrolflags: SYNCMGR_SYNC_CONTROL_FLAGS, presult: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::StartItemSync(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&ppszitemids), core::mem::transmute_copy(&citems), core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&punk), core::mem::transmute_copy(&nsynccontrolflags), core::mem::transmute_copy(&presult)).into()
            }
        }
        unsafe extern "system" fn StartSyncAll<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::StartSyncAll(this, core::mem::transmute_copy(&hwndowner)).into()
            }
        }
        unsafe extern "system" fn StopHandlerSync<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::StopHandlerSync(this, core::mem::transmute(&pszhandlerid)).into()
            }
        }
        unsafe extern "system" fn StopItemSync<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::StopItemSync(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&ppszitemids), core::mem::transmute_copy(&citems)).into()
            }
        }
        unsafe extern "system" fn StopSyncAll<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::StopSyncAll(this).into()
            }
        }
        unsafe extern "system" fn UpdateHandlerCollection<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rclsidcollectionid: *const windows_core::GUID, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::UpdateHandlerCollection(this, core::mem::transmute_copy(&rclsidcollectionid), core::mem::transmute_copy(&ncontrolflags)).into()
            }
        }
        unsafe extern "system" fn UpdateHandler<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::UpdateHandler(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&ncontrolflags)).into()
            }
        }
        unsafe extern "system" fn UpdateItem<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::UpdateItem(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid), core::mem::transmute_copy(&ncontrolflags)).into()
            }
        }
        unsafe extern "system" fn UpdateEvents<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::UpdateEvents(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid), core::mem::transmute_copy(&ncontrolflags)).into()
            }
        }
        unsafe extern "system" fn UpdateConflict<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, pconflict: *mut core::ffi::c_void, nreason: SYNCMGR_UPDATE_REASON) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::UpdateConflict(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid), core::mem::transmute_copy(&pconflict), core::mem::transmute_copy(&nreason)).into()
            }
        }
        unsafe extern "system" fn UpdateConflicts<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::UpdateConflicts(this, core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid), core::mem::transmute_copy(&ncontrolflags)).into()
            }
        }
        unsafe extern "system" fn ActivateHandler<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, factivate: windows_core::BOOL, pszhandlerid: windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::ActivateHandler(this, core::mem::transmute_copy(&factivate), core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&ncontrolflags)).into()
            }
        }
        unsafe extern "system" fn EnableHandler<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: windows_core::BOOL, pszhandlerid: windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::EnableHandler(this, core::mem::transmute_copy(&fenable), core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&ncontrolflags)).into()
            }
        }
        unsafe extern "system" fn EnableItem<Identity: ISyncMgrControl_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: windows_core::BOOL, pszhandlerid: windows_core::PCWSTR, pszitemid: windows_core::PCWSTR, hwndowner: super::super::Foundation::HWND, ncontrolflags: SYNCMGR_CONTROL_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrControl_Impl::EnableItem(this, core::mem::transmute_copy(&fenable), core::mem::transmute(&pszhandlerid), core::mem::transmute(&pszitemid), core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&ncontrolflags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            StartHandlerSync: StartHandlerSync::<Identity, OFFSET>,
            StartItemSync: StartItemSync::<Identity, OFFSET>,
            StartSyncAll: StartSyncAll::<Identity, OFFSET>,
            StopHandlerSync: StopHandlerSync::<Identity, OFFSET>,
            StopItemSync: StopItemSync::<Identity, OFFSET>,
            StopSyncAll: StopSyncAll::<Identity, OFFSET>,
            UpdateHandlerCollection: UpdateHandlerCollection::<Identity, OFFSET>,
            UpdateHandler: UpdateHandler::<Identity, OFFSET>,
            UpdateItem: UpdateItem::<Identity, OFFSET>,
            UpdateEvents: UpdateEvents::<Identity, OFFSET>,
            UpdateConflict: UpdateConflict::<Identity, OFFSET>,
            UpdateConflicts: UpdateConflicts::<Identity, OFFSET>,
            ActivateHandler: ActivateHandler::<Identity, OFFSET>,
            EnableHandler: EnableHandler::<Identity, OFFSET>,
            EnableItem: EnableItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrControl as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrControl {}
windows_core::imp::define_interface!(ISyncMgrEnumItems, ISyncMgrEnumItems_Vtbl, 0x6295df2a_35ee_11d1_8707_00c04fd93327);
windows_core::imp::interface_hierarchy!(ISyncMgrEnumItems, windows_core::IUnknown);
impl ISyncMgrEnumItems {
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn Next(&self, rgelt: &mut [SYNCMGRITEM], pceltfetched: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Next)(windows_core::Interface::as_raw(self), rgelt.len().try_into().unwrap(), core::mem::transmute(rgelt.as_ptr()), pceltfetched as _).ok() }
    }
    pub unsafe fn Skip(&self, celt: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Skip)(windows_core::Interface::as_raw(self), celt).ok() }
    }
    pub unsafe fn Reset(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Reset)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<ISyncMgrEnumItems> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrEnumItems_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub Next: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut SYNCMGRITEM, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    Next: usize,
    pub Skip: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Reset: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait ISyncMgrEnumItems_Impl: windows_core::IUnknownImpl {
    fn Next(&self, celt: u32, rgelt: *mut SYNCMGRITEM, pceltfetched: *mut u32) -> windows_core::Result<()>;
    fn Skip(&self, celt: u32) -> windows_core::Result<()>;
    fn Reset(&self) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<ISyncMgrEnumItems>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl ISyncMgrEnumItems_Vtbl {
    pub const fn new<Identity: ISyncMgrEnumItems_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Next<Identity: ISyncMgrEnumItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32, rgelt: *mut SYNCMGRITEM, pceltfetched: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrEnumItems_Impl::Next(this, core::mem::transmute_copy(&celt), core::mem::transmute_copy(&rgelt), core::mem::transmute_copy(&pceltfetched)).into()
            }
        }
        unsafe extern "system" fn Skip<Identity: ISyncMgrEnumItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, celt: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrEnumItems_Impl::Skip(this, core::mem::transmute_copy(&celt)).into()
            }
        }
        unsafe extern "system" fn Reset<Identity: ISyncMgrEnumItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrEnumItems_Impl::Reset(this).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: ISyncMgrEnumItems_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEnumItems_Impl::Clone(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Next: Next::<Identity, OFFSET>,
            Skip: Skip::<Identity, OFFSET>,
            Reset: Reset::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrEnumItems as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for ISyncMgrEnumItems {}
windows_core::imp::define_interface!(ISyncMgrEvent, ISyncMgrEvent_Vtbl, 0xfee0ef8b_46bd_4db4_b7e6_ff2c687313bc);
windows_core::imp::interface_hierarchy!(ISyncMgrEvent, windows_core::IUnknown);
impl ISyncMgrEvent {
    pub unsafe fn GetEventID(&self) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetHandlerID(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetHandlerID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetItemID(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLevel(&self) -> windows_core::Result<SYNCMGR_EVENT_LEVEL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLevel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetFlags(&self) -> windows_core::Result<SYNCMGR_EVENT_FLAGS> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFlags)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTime(&self) -> windows_core::Result<super::super::Foundation::FILETIME> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetName(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetDescription(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDescription)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLinkText(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLinkText)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLinkReference(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLinkReference)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetContext(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetContext)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrEvent_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetEventID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub GetHandlerID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetItemID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetLevel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_EVENT_LEVEL) -> windows_core::HRESULT,
    pub GetFlags: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_EVENT_FLAGS) -> windows_core::HRESULT,
    pub GetTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetDescription: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetLinkText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetLinkReference: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetContext: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait ISyncMgrEvent_Impl: windows_core::IUnknownImpl {
    fn GetEventID(&self) -> windows_core::Result<windows_core::GUID>;
    fn GetHandlerID(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetItemID(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetLevel(&self) -> windows_core::Result<SYNCMGR_EVENT_LEVEL>;
    fn GetFlags(&self) -> windows_core::Result<SYNCMGR_EVENT_FLAGS>;
    fn GetTime(&self) -> windows_core::Result<super::super::Foundation::FILETIME>;
    fn GetName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetDescription(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetLinkText(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetLinkReference(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetContext(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl ISyncMgrEvent_Vtbl {
    pub const fn new<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetEventID<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguideventid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetEventID(this) {
                    Ok(ok__) => {
                        pguideventid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetHandlerID<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszhandlerid: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetHandlerID(this) {
                    Ok(ok__) => {
                        ppszhandlerid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItemID<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszitemid: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetItemID(this) {
                    Ok(ok__) => {
                        ppszitemid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLevel<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnlevel: *mut SYNCMGR_EVENT_LEVEL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetLevel(this) {
                    Ok(ok__) => {
                        pnlevel.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetFlags<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnflags: *mut SYNCMGR_EVENT_FLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetFlags(this) {
                    Ok(ok__) => {
                        pnflags.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTime<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfcreationtime: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetTime(this) {
                    Ok(ok__) => {
                        pfcreationtime.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetName<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetName(this) {
                    Ok(ok__) => {
                        ppszname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDescription<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszdescription: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetDescription(this) {
                    Ok(ok__) => {
                        ppszdescription.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLinkText<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszlinktext: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetLinkText(this) {
                    Ok(ok__) => {
                        ppszlinktext.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLinkReference<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszlinkreference: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetLinkReference(this) {
                    Ok(ok__) => {
                        ppszlinkreference.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetContext<Identity: ISyncMgrEvent_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszcontext: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEvent_Impl::GetContext(this) {
                    Ok(ok__) => {
                        ppszcontext.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetEventID: GetEventID::<Identity, OFFSET>,
            GetHandlerID: GetHandlerID::<Identity, OFFSET>,
            GetItemID: GetItemID::<Identity, OFFSET>,
            GetLevel: GetLevel::<Identity, OFFSET>,
            GetFlags: GetFlags::<Identity, OFFSET>,
            GetTime: GetTime::<Identity, OFFSET>,
            GetName: GetName::<Identity, OFFSET>,
            GetDescription: GetDescription::<Identity, OFFSET>,
            GetLinkText: GetLinkText::<Identity, OFFSET>,
            GetLinkReference: GetLinkReference::<Identity, OFFSET>,
            GetContext: GetContext::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrEvent as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrEvent {}
windows_core::imp::define_interface!(ISyncMgrEventLinkUIOperation, ISyncMgrEventLinkUIOperation_Vtbl, 0x64522e52_848b_4015_89ce_5a36f00b94ff);
impl core::ops::Deref for ISyncMgrEventLinkUIOperation {
    type Target = ISyncMgrUIOperation;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISyncMgrEventLinkUIOperation, windows_core::IUnknown, ISyncMgrUIOperation);
impl ISyncMgrEventLinkUIOperation {
    pub unsafe fn Init<P1>(&self, rguideventid: *const windows_core::GUID, pevent: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<ISyncMgrEvent>,
    {
        unsafe { (windows_core::Interface::vtable(self).Init)(windows_core::Interface::as_raw(self), rguideventid, pevent.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrEventLinkUIOperation_Vtbl {
    pub base__: ISyncMgrUIOperation_Vtbl,
    pub Init: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ISyncMgrEventLinkUIOperation_Impl: ISyncMgrUIOperation_Impl {
    fn Init(&self, rguideventid: *const windows_core::GUID, pevent: windows_core::Ref<ISyncMgrEvent>) -> windows_core::Result<()>;
}
impl ISyncMgrEventLinkUIOperation_Vtbl {
    pub const fn new<Identity: ISyncMgrEventLinkUIOperation_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Init<Identity: ISyncMgrEventLinkUIOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rguideventid: *const windows_core::GUID, pevent: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrEventLinkUIOperation_Impl::Init(this, core::mem::transmute_copy(&rguideventid), core::mem::transmute_copy(&pevent)).into()
            }
        }
        Self { base__: ISyncMgrUIOperation_Vtbl::new::<Identity, OFFSET>(), Init: Init::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrEventLinkUIOperation as windows_core::Interface>::IID || iid == &<ISyncMgrUIOperation as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrEventLinkUIOperation {}
windows_core::imp::define_interface!(ISyncMgrEventStore, ISyncMgrEventStore_Vtbl, 0x37e412f9_016e_44c2_81ff_db3add774266);
windows_core::imp::interface_hierarchy!(ISyncMgrEventStore, windows_core::IUnknown);
impl ISyncMgrEventStore {
    pub unsafe fn GetEventEnumerator(&self) -> windows_core::Result<IEnumSyncMgrEvents> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventEnumerator)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetEventCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEventCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetEvent(&self, rguideventid: *const windows_core::GUID) -> windows_core::Result<ISyncMgrEvent> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetEvent)(windows_core::Interface::as_raw(self), rguideventid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveEvent(&self, pguideventids: &[windows_core::GUID]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RemoveEvent)(windows_core::Interface::as_raw(self), core::mem::transmute(pguideventids.as_ptr()), pguideventids.len().try_into().unwrap()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrEventStore_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetEventEnumerator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetEventCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub GetEvent: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveEvent: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32) -> windows_core::HRESULT,
}
pub trait ISyncMgrEventStore_Impl: windows_core::IUnknownImpl {
    fn GetEventEnumerator(&self) -> windows_core::Result<IEnumSyncMgrEvents>;
    fn GetEventCount(&self) -> windows_core::Result<u32>;
    fn GetEvent(&self, rguideventid: *const windows_core::GUID) -> windows_core::Result<ISyncMgrEvent>;
    fn RemoveEvent(&self, pguideventids: *const windows_core::GUID, cevents: u32) -> windows_core::Result<()>;
}
impl ISyncMgrEventStore_Vtbl {
    pub const fn new<Identity: ISyncMgrEventStore_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetEventEnumerator<Identity: ISyncMgrEventStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEventStore_Impl::GetEventEnumerator(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEventCount<Identity: ISyncMgrEventStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcevents: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEventStore_Impl::GetEventCount(this) {
                    Ok(ok__) => {
                        pcevents.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetEvent<Identity: ISyncMgrEventStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rguideventid: *const windows_core::GUID, ppevent: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrEventStore_Impl::GetEvent(this, core::mem::transmute_copy(&rguideventid)) {
                    Ok(ok__) => {
                        ppevent.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveEvent<Identity: ISyncMgrEventStore_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pguideventids: *const windows_core::GUID, cevents: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrEventStore_Impl::RemoveEvent(this, core::mem::transmute_copy(&pguideventids), core::mem::transmute_copy(&cevents)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetEventEnumerator: GetEventEnumerator::<Identity, OFFSET>,
            GetEventCount: GetEventCount::<Identity, OFFSET>,
            GetEvent: GetEvent::<Identity, OFFSET>,
            RemoveEvent: RemoveEvent::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrEventStore as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrEventStore {}
windows_core::imp::define_interface!(ISyncMgrHandler, ISyncMgrHandler_Vtbl, 0x04ec2e43_ac77_49f9_9b98_0307ef7a72a2);
windows_core::imp::interface_hierarchy!(ISyncMgrHandler, windows_core::IUnknown);
impl ISyncMgrHandler {
    pub unsafe fn GetName(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetHandlerInfo(&self) -> windows_core::Result<ISyncMgrHandlerInfo> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetHandlerInfo)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetObject<T>(&self, rguidobjectid: *const windows_core::GUID) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetObject)(windows_core::Interface::as_raw(self), rguidobjectid, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetCapabilities(&self) -> windows_core::Result<SYNCMGR_HANDLER_CAPABILITIES> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCapabilities)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPolicies(&self) -> windows_core::Result<SYNCMGR_HANDLER_POLICIES> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPolicies)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Activate(&self, factivate: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Activate)(windows_core::Interface::as_raw(self), factivate.into()).ok() }
    }
    pub unsafe fn Enable(&self, fenable: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Enable)(windows_core::Interface::as_raw(self), fenable.into()).ok() }
    }
    pub unsafe fn Synchronize<P3, P4>(&self, ppszitemids: &[windows_core::PCWSTR], hwndowner: super::super::Foundation::HWND, psessioncreator: P3, punk: P4) -> windows_core::Result<()>
    where
        P3: windows_core::Param<ISyncMgrSessionCreator>,
        P4: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).Synchronize)(windows_core::Interface::as_raw(self), core::mem::transmute(ppszitemids.as_ptr()), ppszitemids.len().try_into().unwrap(), hwndowner, psessioncreator.param().abi(), punk.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetHandlerInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCapabilities: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_HANDLER_CAPABILITIES) -> windows_core::HRESULT,
    pub GetPolicies: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_HANDLER_POLICIES) -> windows_core::HRESULT,
    pub Activate: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub Enable: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub Synchronize: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::PCWSTR, u32, super::super::Foundation::HWND, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ISyncMgrHandler_Impl: windows_core::IUnknownImpl {
    fn GetName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetHandlerInfo(&self) -> windows_core::Result<ISyncMgrHandlerInfo>;
    fn GetObject(&self, rguidobjectid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetCapabilities(&self) -> windows_core::Result<SYNCMGR_HANDLER_CAPABILITIES>;
    fn GetPolicies(&self) -> windows_core::Result<SYNCMGR_HANDLER_POLICIES>;
    fn Activate(&self, factivate: windows_core::BOOL) -> windows_core::Result<()>;
    fn Enable(&self, fenable: windows_core::BOOL) -> windows_core::Result<()>;
    fn Synchronize(&self, ppszitemids: *const windows_core::PCWSTR, citems: u32, hwndowner: super::super::Foundation::HWND, psessioncreator: windows_core::Ref<ISyncMgrSessionCreator>, punk: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
}
impl ISyncMgrHandler_Vtbl {
    pub const fn new<Identity: ISyncMgrHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetName<Identity: ISyncMgrHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrHandler_Impl::GetName(this) {
                    Ok(ok__) => {
                        ppszname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetHandlerInfo<Identity: ISyncMgrHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pphandlerinfo: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrHandler_Impl::GetHandlerInfo(this) {
                    Ok(ok__) => {
                        pphandlerinfo.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetObject<Identity: ISyncMgrHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rguidobjectid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrHandler_Impl::GetObject(this, core::mem::transmute_copy(&rguidobjectid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetCapabilities<Identity: ISyncMgrHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmcapabilities: *mut SYNCMGR_HANDLER_CAPABILITIES) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrHandler_Impl::GetCapabilities(this) {
                    Ok(ok__) => {
                        pmcapabilities.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPolicies<Identity: ISyncMgrHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmpolicies: *mut SYNCMGR_HANDLER_POLICIES) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrHandler_Impl::GetPolicies(this) {
                    Ok(ok__) => {
                        pmpolicies.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Activate<Identity: ISyncMgrHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, factivate: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrHandler_Impl::Activate(this, core::mem::transmute_copy(&factivate)).into()
            }
        }
        unsafe extern "system" fn Enable<Identity: ISyncMgrHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrHandler_Impl::Enable(this, core::mem::transmute_copy(&fenable)).into()
            }
        }
        unsafe extern "system" fn Synchronize<Identity: ISyncMgrHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszitemids: *const windows_core::PCWSTR, citems: u32, hwndowner: super::super::Foundation::HWND, psessioncreator: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrHandler_Impl::Synchronize(this, core::mem::transmute_copy(&ppszitemids), core::mem::transmute_copy(&citems), core::mem::transmute_copy(&hwndowner), core::mem::transmute_copy(&psessioncreator), core::mem::transmute_copy(&punk)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetName: GetName::<Identity, OFFSET>,
            GetHandlerInfo: GetHandlerInfo::<Identity, OFFSET>,
            GetObject: GetObject::<Identity, OFFSET>,
            GetCapabilities: GetCapabilities::<Identity, OFFSET>,
            GetPolicies: GetPolicies::<Identity, OFFSET>,
            Activate: Activate::<Identity, OFFSET>,
            Enable: Enable::<Identity, OFFSET>,
            Synchronize: Synchronize::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrHandler as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrHandler {}
windows_core::imp::define_interface!(ISyncMgrHandlerCollection, ISyncMgrHandlerCollection_Vtbl, 0xa7f337a3_d20b_45cb_9ed7_87d094ca5045);
windows_core::imp::interface_hierarchy!(ISyncMgrHandlerCollection, windows_core::IUnknown);
impl ISyncMgrHandlerCollection {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetHandlerEnumerator(&self) -> windows_core::Result<super::super::System::Com::IEnumString> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetHandlerEnumerator)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn BindToHandler<P0, T>(&self, pszhandlerid: P0) -> windows_core::Result<T>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).BindToHandler)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrHandlerCollection_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub GetHandlerEnumerator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetHandlerEnumerator: usize,
    pub BindToHandler: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait ISyncMgrHandlerCollection_Impl: windows_core::IUnknownImpl {
    fn GetHandlerEnumerator(&self) -> windows_core::Result<super::super::System::Com::IEnumString>;
    fn BindToHandler(&self, pszhandlerid: &windows_core::PCWSTR, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl ISyncMgrHandlerCollection_Vtbl {
    pub const fn new<Identity: ISyncMgrHandlerCollection_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetHandlerEnumerator<Identity: ISyncMgrHandlerCollection_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrHandlerCollection_Impl::GetHandlerEnumerator(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn BindToHandler<Identity: ISyncMgrHandlerCollection_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrHandlerCollection_Impl::BindToHandler(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetHandlerEnumerator: GetHandlerEnumerator::<Identity, OFFSET>,
            BindToHandler: BindToHandler::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrHandlerCollection as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ISyncMgrHandlerCollection {}
windows_core::imp::define_interface!(ISyncMgrHandlerInfo, ISyncMgrHandlerInfo_Vtbl, 0x4ff1d798_ecf7_4524_aa81_1e362a0aef3a);
windows_core::imp::interface_hierarchy!(ISyncMgrHandlerInfo, windows_core::IUnknown);
impl ISyncMgrHandlerInfo {
    pub unsafe fn GetType(&self) -> windows_core::Result<SYNCMGR_HANDLER_TYPE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetType)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetTypeLabel(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeLabel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetComment(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetComment)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLastSyncTime(&self) -> windows_core::Result<super::super::Foundation::FILETIME> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLastSyncTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsActive(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsActive)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsEnabled(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsEnabled)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsConnected(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsConnected)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrHandlerInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetType: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_HANDLER_TYPE) -> windows_core::HRESULT,
    pub GetTypeLabel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetComment: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetLastSyncTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT,
    pub IsActive: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsEnabled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsConnected: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ISyncMgrHandlerInfo_Impl: windows_core::IUnknownImpl {
    fn GetType(&self) -> windows_core::Result<SYNCMGR_HANDLER_TYPE>;
    fn GetTypeLabel(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetComment(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetLastSyncTime(&self) -> windows_core::Result<super::super::Foundation::FILETIME>;
    fn IsActive(&self) -> windows_core::Result<()>;
    fn IsEnabled(&self) -> windows_core::Result<()>;
    fn IsConnected(&self) -> windows_core::Result<()>;
}
impl ISyncMgrHandlerInfo_Vtbl {
    pub const fn new<Identity: ISyncMgrHandlerInfo_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetType<Identity: ISyncMgrHandlerInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pntype: *mut SYNCMGR_HANDLER_TYPE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrHandlerInfo_Impl::GetType(this) {
                    Ok(ok__) => {
                        pntype.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetTypeLabel<Identity: ISyncMgrHandlerInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsztypelabel: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrHandlerInfo_Impl::GetTypeLabel(this) {
                    Ok(ok__) => {
                        ppsztypelabel.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetComment<Identity: ISyncMgrHandlerInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszcomment: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrHandlerInfo_Impl::GetComment(this) {
                    Ok(ok__) => {
                        ppszcomment.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLastSyncTime<Identity: ISyncMgrHandlerInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftlastsync: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrHandlerInfo_Impl::GetLastSyncTime(this) {
                    Ok(ok__) => {
                        pftlastsync.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsActive<Identity: ISyncMgrHandlerInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrHandlerInfo_Impl::IsActive(this).into()
            }
        }
        unsafe extern "system" fn IsEnabled<Identity: ISyncMgrHandlerInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrHandlerInfo_Impl::IsEnabled(this).into()
            }
        }
        unsafe extern "system" fn IsConnected<Identity: ISyncMgrHandlerInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrHandlerInfo_Impl::IsConnected(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetType: GetType::<Identity, OFFSET>,
            GetTypeLabel: GetTypeLabel::<Identity, OFFSET>,
            GetComment: GetComment::<Identity, OFFSET>,
            GetLastSyncTime: GetLastSyncTime::<Identity, OFFSET>,
            IsActive: IsActive::<Identity, OFFSET>,
            IsEnabled: IsEnabled::<Identity, OFFSET>,
            IsConnected: IsConnected::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrHandlerInfo as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrHandlerInfo {}
windows_core::imp::define_interface!(ISyncMgrRegister, ISyncMgrRegister_Vtbl, 0x6295df42_35ee_11d1_8707_00c04fd93327);
windows_core::imp::interface_hierarchy!(ISyncMgrRegister, windows_core::IUnknown);
impl ISyncMgrRegister {
    pub unsafe fn RegisterSyncMgrHandler<P1>(&self, clsidhandler: *const windows_core::GUID, pwszdescription: P1, dwsyncmgrregisterflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).RegisterSyncMgrHandler)(windows_core::Interface::as_raw(self), clsidhandler, pwszdescription.param().abi(), dwsyncmgrregisterflags).ok() }
    }
    pub unsafe fn UnregisterSyncMgrHandler(&self, clsidhandler: *const windows_core::GUID, dwreserved: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UnregisterSyncMgrHandler)(windows_core::Interface::as_raw(self), clsidhandler, dwreserved).ok() }
    }
    pub unsafe fn GetHandlerRegistrationInfo(&self, clsidhandler: *const windows_core::GUID, pdwsyncmgrregisterflags: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetHandlerRegistrationInfo)(windows_core::Interface::as_raw(self), clsidhandler, pdwsyncmgrregisterflags as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrRegister_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub RegisterSyncMgrHandler: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub UnregisterSyncMgrHandler: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32) -> windows_core::HRESULT,
    pub GetHandlerRegistrationInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *mut u32) -> windows_core::HRESULT,
}
pub trait ISyncMgrRegister_Impl: windows_core::IUnknownImpl {
    fn RegisterSyncMgrHandler(&self, clsidhandler: *const windows_core::GUID, pwszdescription: &windows_core::PCWSTR, dwsyncmgrregisterflags: u32) -> windows_core::Result<()>;
    fn UnregisterSyncMgrHandler(&self, clsidhandler: *const windows_core::GUID, dwreserved: u32) -> windows_core::Result<()>;
    fn GetHandlerRegistrationInfo(&self, clsidhandler: *const windows_core::GUID, pdwsyncmgrregisterflags: *mut u32) -> windows_core::Result<()>;
}
impl ISyncMgrRegister_Vtbl {
    pub const fn new<Identity: ISyncMgrRegister_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn RegisterSyncMgrHandler<Identity: ISyncMgrRegister_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsidhandler: *const windows_core::GUID, pwszdescription: windows_core::PCWSTR, dwsyncmgrregisterflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrRegister_Impl::RegisterSyncMgrHandler(this, core::mem::transmute_copy(&clsidhandler), core::mem::transmute(&pwszdescription), core::mem::transmute_copy(&dwsyncmgrregisterflags)).into()
            }
        }
        unsafe extern "system" fn UnregisterSyncMgrHandler<Identity: ISyncMgrRegister_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsidhandler: *const windows_core::GUID, dwreserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrRegister_Impl::UnregisterSyncMgrHandler(this, core::mem::transmute_copy(&clsidhandler), core::mem::transmute_copy(&dwreserved)).into()
            }
        }
        unsafe extern "system" fn GetHandlerRegistrationInfo<Identity: ISyncMgrRegister_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsidhandler: *const windows_core::GUID, pdwsyncmgrregisterflags: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrRegister_Impl::GetHandlerRegistrationInfo(this, core::mem::transmute_copy(&clsidhandler), core::mem::transmute_copy(&pdwsyncmgrregisterflags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            RegisterSyncMgrHandler: RegisterSyncMgrHandler::<Identity, OFFSET>,
            UnregisterSyncMgrHandler: UnregisterSyncMgrHandler::<Identity, OFFSET>,
            GetHandlerRegistrationInfo: GetHandlerRegistrationInfo::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrRegister as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrRegister {}
windows_core::imp::define_interface!(ISyncMgrResolutionHandler, ISyncMgrResolutionHandler_Vtbl, 0x40a3d052_8bff_4c4b_a338_d4a395700de9);
windows_core::imp::interface_hierarchy!(ISyncMgrResolutionHandler, windows_core::IUnknown);
impl ISyncMgrResolutionHandler {
    pub unsafe fn QueryAbilities(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).QueryAbilities)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn KeepOther<P0>(&self, psiother: P0) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).KeepOther)(windows_core::Interface::as_raw(self), psiother.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn KeepRecent(&self) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).KeepRecent)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RemoveFromSyncSet(&self) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RemoveFromSyncSet)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn KeepItems<P0>(&self, parray: P0) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK>
    where
        P0: windows_core::Param<ISyncMgrConflictResolutionItems>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).KeepItems)(windows_core::Interface::as_raw(self), parray.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrResolutionHandler_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub QueryAbilities: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub KeepOther: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT,
    pub KeepRecent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT,
    pub RemoveFromSyncSet: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT,
    pub KeepItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT,
}
pub trait ISyncMgrResolutionHandler_Impl: windows_core::IUnknownImpl {
    fn QueryAbilities(&self) -> windows_core::Result<u32>;
    fn KeepOther(&self, psiother: windows_core::Ref<IShellItem>) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK>;
    fn KeepRecent(&self) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK>;
    fn RemoveFromSyncSet(&self) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK>;
    fn KeepItems(&self, parray: windows_core::Ref<ISyncMgrConflictResolutionItems>) -> windows_core::Result<SYNCMGR_RESOLUTION_FEEDBACK>;
}
impl ISyncMgrResolutionHandler_Vtbl {
    pub const fn new<Identity: ISyncMgrResolutionHandler_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn QueryAbilities<Identity: ISyncMgrResolutionHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pdwabilities: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrResolutionHandler_Impl::QueryAbilities(this) {
                    Ok(ok__) => {
                        pdwabilities.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn KeepOther<Identity: ISyncMgrResolutionHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psiother: *mut core::ffi::c_void, pfeedback: *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrResolutionHandler_Impl::KeepOther(this, core::mem::transmute_copy(&psiother)) {
                    Ok(ok__) => {
                        pfeedback.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn KeepRecent<Identity: ISyncMgrResolutionHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfeedback: *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrResolutionHandler_Impl::KeepRecent(this) {
                    Ok(ok__) => {
                        pfeedback.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveFromSyncSet<Identity: ISyncMgrResolutionHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pfeedback: *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrResolutionHandler_Impl::RemoveFromSyncSet(this) {
                    Ok(ok__) => {
                        pfeedback.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn KeepItems<Identity: ISyncMgrResolutionHandler_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, parray: *mut core::ffi::c_void, pfeedback: *mut SYNCMGR_RESOLUTION_FEEDBACK) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrResolutionHandler_Impl::KeepItems(this, core::mem::transmute_copy(&parray)) {
                    Ok(ok__) => {
                        pfeedback.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            QueryAbilities: QueryAbilities::<Identity, OFFSET>,
            KeepOther: KeepOther::<Identity, OFFSET>,
            KeepRecent: KeepRecent::<Identity, OFFSET>,
            RemoveFromSyncSet: RemoveFromSyncSet::<Identity, OFFSET>,
            KeepItems: KeepItems::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrResolutionHandler as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrResolutionHandler {}
windows_core::imp::define_interface!(ISyncMgrScheduleWizardUIOperation, ISyncMgrScheduleWizardUIOperation_Vtbl, 0x459a6c84_21d2_4ddc_8a53_f023a46066f2);
impl core::ops::Deref for ISyncMgrScheduleWizardUIOperation {
    type Target = ISyncMgrUIOperation;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ISyncMgrScheduleWizardUIOperation, windows_core::IUnknown, ISyncMgrUIOperation);
impl ISyncMgrScheduleWizardUIOperation {
    pub unsafe fn InitWizard<P0>(&self, pszhandlerid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).InitWizard)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrScheduleWizardUIOperation_Vtbl {
    pub base__: ISyncMgrUIOperation_Vtbl,
    pub InitWizard: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait ISyncMgrScheduleWizardUIOperation_Impl: ISyncMgrUIOperation_Impl {
    fn InitWizard(&self, pszhandlerid: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl ISyncMgrScheduleWizardUIOperation_Vtbl {
    pub const fn new<Identity: ISyncMgrScheduleWizardUIOperation_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn InitWizard<Identity: ISyncMgrScheduleWizardUIOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrScheduleWizardUIOperation_Impl::InitWizard(this, core::mem::transmute(&pszhandlerid)).into()
            }
        }
        Self { base__: ISyncMgrUIOperation_Vtbl::new::<Identity, OFFSET>(), InitWizard: InitWizard::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrScheduleWizardUIOperation as windows_core::Interface>::IID || iid == &<ISyncMgrUIOperation as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrScheduleWizardUIOperation {}
windows_core::imp::define_interface!(ISyncMgrSessionCreator, ISyncMgrSessionCreator_Vtbl, 0x17f48517_f305_4321_a08d_b25a834918fd);
windows_core::imp::interface_hierarchy!(ISyncMgrSessionCreator, windows_core::IUnknown);
impl ISyncMgrSessionCreator {
    pub unsafe fn CreateSession<P0>(&self, pszhandlerid: P0, ppszitemids: &[windows_core::PCWSTR]) -> windows_core::Result<ISyncMgrSyncCallback>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateSession)(windows_core::Interface::as_raw(self), pszhandlerid.param().abi(), core::mem::transmute(ppszitemids.as_ptr()), ppszitemids.len().try_into().unwrap(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrSessionCreator_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CreateSession: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *const windows_core::PCWSTR, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ISyncMgrSessionCreator_Impl: windows_core::IUnknownImpl {
    fn CreateSession(&self, pszhandlerid: &windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32) -> windows_core::Result<ISyncMgrSyncCallback>;
}
impl ISyncMgrSessionCreator_Vtbl {
    pub const fn new<Identity: ISyncMgrSessionCreator_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CreateSession<Identity: ISyncMgrSessionCreator_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszhandlerid: windows_core::PCWSTR, ppszitemids: *const windows_core::PCWSTR, citems: u32, ppcallback: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSessionCreator_Impl::CreateSession(this, core::mem::transmute(&pszhandlerid), core::mem::transmute_copy(&ppszitemids), core::mem::transmute_copy(&citems)) {
                    Ok(ok__) => {
                        ppcallback.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CreateSession: CreateSession::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSessionCreator as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrSessionCreator {}
windows_core::imp::define_interface!(ISyncMgrSyncCallback, ISyncMgrSyncCallback_Vtbl, 0x884ccd87_b139_4937_a4ba_4f8e19513fbe);
windows_core::imp::interface_hierarchy!(ISyncMgrSyncCallback, windows_core::IUnknown);
impl ISyncMgrSyncCallback {
    pub unsafe fn ReportProgress<P0, P1>(&self, pszitemid: P0, pszprogresstext: P1, nstatus: SYNCMGR_PROGRESS_STATUS, ucurrentstep: u32, umaxstep: u32, pncancelrequest: *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ReportProgress)(windows_core::Interface::as_raw(self), pszitemid.param().abi(), pszprogresstext.param().abi(), nstatus, ucurrentstep, umaxstep, pncancelrequest as _).ok() }
    }
    pub unsafe fn SetHandlerProgressText<P0>(&self, pszprogresstext: P0, pncancelrequest: *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetHandlerProgressText)(windows_core::Interface::as_raw(self), pszprogresstext.param().abi(), pncancelrequest as _).ok() }
    }
    pub unsafe fn ReportEvent<P0, P3, P4, P5, P6, P7>(&self, pszitemid: P0, nlevel: SYNCMGR_EVENT_LEVEL, nflags: SYNCMGR_EVENT_FLAGS, pszname: P3, pszdescription: P4, pszlinktext: P5, pszlinkreference: P6, pszcontext: P7) -> windows_core::Result<windows_core::GUID>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<windows_core::PCWSTR>,
        P4: windows_core::Param<windows_core::PCWSTR>,
        P5: windows_core::Param<windows_core::PCWSTR>,
        P6: windows_core::Param<windows_core::PCWSTR>,
        P7: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ReportEvent)(windows_core::Interface::as_raw(self), pszitemid.param().abi(), nlevel, nflags, pszname.param().abi(), pszdescription.param().abi(), pszlinktext.param().abi(), pszlinkreference.param().abi(), pszcontext.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn CanContinue<P0>(&self, pszitemid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CanContinue)(windows_core::Interface::as_raw(self), pszitemid.param().abi()).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn QueryForAdditionalItems(&self, ppenumitemids: *mut Option<super::super::System::Com::IEnumString>, ppenumpunks: *mut Option<super::super::System::Com::IEnumUnknown>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).QueryForAdditionalItems)(windows_core::Interface::as_raw(self), core::mem::transmute(ppenumitemids), core::mem::transmute(ppenumpunks)).ok() }
    }
    pub unsafe fn AddItemToSession<P0>(&self, pszitemid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddItemToSession)(windows_core::Interface::as_raw(self), pszitemid.param().abi()).ok() }
    }
    pub unsafe fn AddIUnknownToSession<P0>(&self, punk: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddIUnknownToSession)(windows_core::Interface::as_raw(self), punk.param().abi()).ok() }
    }
    pub unsafe fn ProposeItem<P0>(&self, pnewitem: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISyncMgrSyncItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).ProposeItem)(windows_core::Interface::as_raw(self), pnewitem.param().abi()).ok() }
    }
    pub unsafe fn CommitItem<P0>(&self, pszitemid: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CommitItem)(windows_core::Interface::as_raw(self), pszitemid.param().abi()).ok() }
    }
    pub unsafe fn ReportManualSync(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ReportManualSync)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrSyncCallback_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ReportProgress: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, SYNCMGR_PROGRESS_STATUS, u32, u32, *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::HRESULT,
    pub SetHandlerProgressText: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::HRESULT,
    pub ReportEvent: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, SYNCMGR_EVENT_LEVEL, SYNCMGR_EVENT_FLAGS, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, windows_core::PCWSTR, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub CanContinue: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_System_Com")]
    pub QueryForAdditionalItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    QueryForAdditionalItems: usize,
    pub AddItemToSession: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub AddIUnknownToSession: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ProposeItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CommitItem: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ReportManualSync: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_System_Com")]
pub trait ISyncMgrSyncCallback_Impl: windows_core::IUnknownImpl {
    fn ReportProgress(&self, pszitemid: &windows_core::PCWSTR, pszprogresstext: &windows_core::PCWSTR, nstatus: SYNCMGR_PROGRESS_STATUS, ucurrentstep: u32, umaxstep: u32, pncancelrequest: *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::Result<()>;
    fn SetHandlerProgressText(&self, pszprogresstext: &windows_core::PCWSTR, pncancelrequest: *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::Result<()>;
    fn ReportEvent(&self, pszitemid: &windows_core::PCWSTR, nlevel: SYNCMGR_EVENT_LEVEL, nflags: SYNCMGR_EVENT_FLAGS, pszname: &windows_core::PCWSTR, pszdescription: &windows_core::PCWSTR, pszlinktext: &windows_core::PCWSTR, pszlinkreference: &windows_core::PCWSTR, pszcontext: &windows_core::PCWSTR) -> windows_core::Result<windows_core::GUID>;
    fn CanContinue(&self, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn QueryForAdditionalItems(&self, ppenumitemids: windows_core::OutRef<super::super::System::Com::IEnumString>, ppenumpunks: windows_core::OutRef<super::super::System::Com::IEnumUnknown>) -> windows_core::Result<()>;
    fn AddItemToSession(&self, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn AddIUnknownToSession(&self, punk: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn ProposeItem(&self, pnewitem: windows_core::Ref<ISyncMgrSyncItem>) -> windows_core::Result<()>;
    fn CommitItem(&self, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ReportManualSync(&self) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl ISyncMgrSyncCallback_Vtbl {
    pub const fn new<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ReportProgress<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR, pszprogresstext: windows_core::PCWSTR, nstatus: SYNCMGR_PROGRESS_STATUS, ucurrentstep: u32, umaxstep: u32, pncancelrequest: *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncCallback_Impl::ReportProgress(this, core::mem::transmute(&pszitemid), core::mem::transmute(&pszprogresstext), core::mem::transmute_copy(&nstatus), core::mem::transmute_copy(&ucurrentstep), core::mem::transmute_copy(&umaxstep), core::mem::transmute_copy(&pncancelrequest)).into()
            }
        }
        unsafe extern "system" fn SetHandlerProgressText<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszprogresstext: windows_core::PCWSTR, pncancelrequest: *mut SYNCMGR_CANCEL_REQUEST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncCallback_Impl::SetHandlerProgressText(this, core::mem::transmute(&pszprogresstext), core::mem::transmute_copy(&pncancelrequest)).into()
            }
        }
        unsafe extern "system" fn ReportEvent<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR, nlevel: SYNCMGR_EVENT_LEVEL, nflags: SYNCMGR_EVENT_FLAGS, pszname: windows_core::PCWSTR, pszdescription: windows_core::PCWSTR, pszlinktext: windows_core::PCWSTR, pszlinkreference: windows_core::PCWSTR, pszcontext: windows_core::PCWSTR, pguideventid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncCallback_Impl::ReportEvent(this, core::mem::transmute(&pszitemid), core::mem::transmute_copy(&nlevel), core::mem::transmute_copy(&nflags), core::mem::transmute(&pszname), core::mem::transmute(&pszdescription), core::mem::transmute(&pszlinktext), core::mem::transmute(&pszlinkreference), core::mem::transmute(&pszcontext)) {
                    Ok(ok__) => {
                        pguideventid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CanContinue<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncCallback_Impl::CanContinue(this, core::mem::transmute(&pszitemid)).into()
            }
        }
        unsafe extern "system" fn QueryForAdditionalItems<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenumitemids: *mut *mut core::ffi::c_void, ppenumpunks: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncCallback_Impl::QueryForAdditionalItems(this, core::mem::transmute_copy(&ppenumitemids), core::mem::transmute_copy(&ppenumpunks)).into()
            }
        }
        unsafe extern "system" fn AddItemToSession<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncCallback_Impl::AddItemToSession(this, core::mem::transmute(&pszitemid)).into()
            }
        }
        unsafe extern "system" fn AddIUnknownToSession<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncCallback_Impl::AddIUnknownToSession(this, core::mem::transmute_copy(&punk)).into()
            }
        }
        unsafe extern "system" fn ProposeItem<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pnewitem: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncCallback_Impl::ProposeItem(this, core::mem::transmute_copy(&pnewitem)).into()
            }
        }
        unsafe extern "system" fn CommitItem<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncCallback_Impl::CommitItem(this, core::mem::transmute(&pszitemid)).into()
            }
        }
        unsafe extern "system" fn ReportManualSync<Identity: ISyncMgrSyncCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncCallback_Impl::ReportManualSync(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ReportProgress: ReportProgress::<Identity, OFFSET>,
            SetHandlerProgressText: SetHandlerProgressText::<Identity, OFFSET>,
            ReportEvent: ReportEvent::<Identity, OFFSET>,
            CanContinue: CanContinue::<Identity, OFFSET>,
            QueryForAdditionalItems: QueryForAdditionalItems::<Identity, OFFSET>,
            AddItemToSession: AddItemToSession::<Identity, OFFSET>,
            AddIUnknownToSession: AddIUnknownToSession::<Identity, OFFSET>,
            ProposeItem: ProposeItem::<Identity, OFFSET>,
            CommitItem: CommitItem::<Identity, OFFSET>,
            ReportManualSync: ReportManualSync::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSyncCallback as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ISyncMgrSyncCallback {}
windows_core::imp::define_interface!(ISyncMgrSyncItem, ISyncMgrSyncItem_Vtbl, 0xb20b24ce_2593_4f04_bd8b_7ad6c45051cd);
windows_core::imp::interface_hierarchy!(ISyncMgrSyncItem, windows_core::IUnknown);
impl ISyncMgrSyncItem {
    pub unsafe fn GetItemID(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemID)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetName(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetName)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetItemInfo(&self) -> windows_core::Result<ISyncMgrSyncItemInfo> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemInfo)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetObject<T>(&self, rguidobjectid: *const windows_core::GUID) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetObject)(windows_core::Interface::as_raw(self), rguidobjectid, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn GetCapabilities(&self) -> windows_core::Result<SYNCMGR_ITEM_CAPABILITIES> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCapabilities)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetPolicies(&self) -> windows_core::Result<SYNCMGR_ITEM_POLICIES> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPolicies)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Enable(&self, fenable: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Enable)(windows_core::Interface::as_raw(self), fenable.into()).ok() }
    }
    pub unsafe fn Delete(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Delete)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrSyncItem_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetItemID: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetItemInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCapabilities: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_ITEM_CAPABILITIES) -> windows_core::HRESULT,
    pub GetPolicies: unsafe extern "system" fn(*mut core::ffi::c_void, *mut SYNCMGR_ITEM_POLICIES) -> windows_core::HRESULT,
    pub Enable: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub Delete: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ISyncMgrSyncItem_Impl: windows_core::IUnknownImpl {
    fn GetItemID(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetName(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetItemInfo(&self) -> windows_core::Result<ISyncMgrSyncItemInfo>;
    fn GetObject(&self, rguidobjectid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn GetCapabilities(&self) -> windows_core::Result<SYNCMGR_ITEM_CAPABILITIES>;
    fn GetPolicies(&self) -> windows_core::Result<SYNCMGR_ITEM_POLICIES>;
    fn Enable(&self, fenable: windows_core::BOOL) -> windows_core::Result<()>;
    fn Delete(&self) -> windows_core::Result<()>;
}
impl ISyncMgrSyncItem_Vtbl {
    pub const fn new<Identity: ISyncMgrSyncItem_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetItemID<Identity: ISyncMgrSyncItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszitemid: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItem_Impl::GetItemID(this) {
                    Ok(ok__) => {
                        ppszitemid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetName<Identity: ISyncMgrSyncItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszname: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItem_Impl::GetName(this) {
                    Ok(ok__) => {
                        ppszname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItemInfo<Identity: ISyncMgrSyncItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppiteminfo: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItem_Impl::GetItemInfo(this) {
                    Ok(ok__) => {
                        ppiteminfo.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetObject<Identity: ISyncMgrSyncItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, rguidobjectid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncItem_Impl::GetObject(this, core::mem::transmute_copy(&rguidobjectid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn GetCapabilities<Identity: ISyncMgrSyncItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmcapabilities: *mut SYNCMGR_ITEM_CAPABILITIES) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItem_Impl::GetCapabilities(this) {
                    Ok(ok__) => {
                        pmcapabilities.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetPolicies<Identity: ISyncMgrSyncItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmpolicies: *mut SYNCMGR_ITEM_POLICIES) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItem_Impl::GetPolicies(this) {
                    Ok(ok__) => {
                        pmpolicies.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Enable<Identity: ISyncMgrSyncItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncItem_Impl::Enable(this, core::mem::transmute_copy(&fenable)).into()
            }
        }
        unsafe extern "system" fn Delete<Identity: ISyncMgrSyncItem_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncItem_Impl::Delete(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetItemID: GetItemID::<Identity, OFFSET>,
            GetName: GetName::<Identity, OFFSET>,
            GetItemInfo: GetItemInfo::<Identity, OFFSET>,
            GetObject: GetObject::<Identity, OFFSET>,
            GetCapabilities: GetCapabilities::<Identity, OFFSET>,
            GetPolicies: GetPolicies::<Identity, OFFSET>,
            Enable: Enable::<Identity, OFFSET>,
            Delete: Delete::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSyncItem as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrSyncItem {}
windows_core::imp::define_interface!(ISyncMgrSyncItemContainer, ISyncMgrSyncItemContainer_Vtbl, 0x90701133_be32_4129_a65c_99e616cafff4);
windows_core::imp::interface_hierarchy!(ISyncMgrSyncItemContainer, windows_core::IUnknown);
impl ISyncMgrSyncItemContainer {
    pub unsafe fn GetSyncItem<P0>(&self, pszitemid: P0) -> windows_core::Result<ISyncMgrSyncItem>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSyncItem)(windows_core::Interface::as_raw(self), pszitemid.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetSyncItemEnumerator(&self) -> windows_core::Result<IEnumSyncMgrSyncItems> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSyncItemEnumerator)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetSyncItemCount(&self) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetSyncItemCount)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrSyncItemContainer_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetSyncItem: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSyncItemEnumerator: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetSyncItemCount: unsafe extern "system" fn(*mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
}
pub trait ISyncMgrSyncItemContainer_Impl: windows_core::IUnknownImpl {
    fn GetSyncItem(&self, pszitemid: &windows_core::PCWSTR) -> windows_core::Result<ISyncMgrSyncItem>;
    fn GetSyncItemEnumerator(&self) -> windows_core::Result<IEnumSyncMgrSyncItems>;
    fn GetSyncItemCount(&self) -> windows_core::Result<u32>;
}
impl ISyncMgrSyncItemContainer_Vtbl {
    pub const fn new<Identity: ISyncMgrSyncItemContainer_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetSyncItem<Identity: ISyncMgrSyncItemContainer_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszitemid: windows_core::PCWSTR, ppitem: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItemContainer_Impl::GetSyncItem(this, core::mem::transmute(&pszitemid)) {
                    Ok(ok__) => {
                        ppitem.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSyncItemEnumerator<Identity: ISyncMgrSyncItemContainer_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItemContainer_Impl::GetSyncItemEnumerator(this) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetSyncItemCount<Identity: ISyncMgrSyncItemContainer_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcitems: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItemContainer_Impl::GetSyncItemCount(this) {
                    Ok(ok__) => {
                        pcitems.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetSyncItem: GetSyncItem::<Identity, OFFSET>,
            GetSyncItemEnumerator: GetSyncItemEnumerator::<Identity, OFFSET>,
            GetSyncItemCount: GetSyncItemCount::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSyncItemContainer as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrSyncItemContainer {}
windows_core::imp::define_interface!(ISyncMgrSyncItemInfo, ISyncMgrSyncItemInfo_Vtbl, 0xe7fd9502_be0c_4464_90a1_2b5277031232);
windows_core::imp::interface_hierarchy!(ISyncMgrSyncItemInfo, windows_core::IUnknown);
impl ISyncMgrSyncItemInfo {
    pub unsafe fn GetTypeLabel(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTypeLabel)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetComment(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetComment)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetLastSyncTime(&self) -> windows_core::Result<super::super::Foundation::FILETIME> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLastSyncTime)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn IsEnabled(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsEnabled)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn IsConnected(&self) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).IsConnected)(windows_core::Interface::as_raw(self)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrSyncItemInfo_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTypeLabel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetComment: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetLastSyncTime: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT,
    pub IsEnabled: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub IsConnected: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ISyncMgrSyncItemInfo_Impl: windows_core::IUnknownImpl {
    fn GetTypeLabel(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetComment(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetLastSyncTime(&self) -> windows_core::Result<super::super::Foundation::FILETIME>;
    fn IsEnabled(&self) -> windows_core::Result<()>;
    fn IsConnected(&self) -> windows_core::HRESULT;
}
impl ISyncMgrSyncItemInfo_Vtbl {
    pub const fn new<Identity: ISyncMgrSyncItemInfo_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetTypeLabel<Identity: ISyncMgrSyncItemInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsztypelabel: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItemInfo_Impl::GetTypeLabel(this) {
                    Ok(ok__) => {
                        ppsztypelabel.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetComment<Identity: ISyncMgrSyncItemInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszcomment: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItemInfo_Impl::GetComment(this) {
                    Ok(ok__) => {
                        ppszcomment.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLastSyncTime<Identity: ISyncMgrSyncItemInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pftlastsync: *mut super::super::Foundation::FILETIME) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSyncItemInfo_Impl::GetLastSyncTime(this) {
                    Ok(ok__) => {
                        pftlastsync.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn IsEnabled<Identity: ISyncMgrSyncItemInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncItemInfo_Impl::IsEnabled(this).into()
            }
        }
        unsafe extern "system" fn IsConnected<Identity: ISyncMgrSyncItemInfo_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncItemInfo_Impl::IsConnected(this)
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetTypeLabel: GetTypeLabel::<Identity, OFFSET>,
            GetComment: GetComment::<Identity, OFFSET>,
            GetLastSyncTime: GetLastSyncTime::<Identity, OFFSET>,
            IsEnabled: IsEnabled::<Identity, OFFSET>,
            IsConnected: IsConnected::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSyncItemInfo as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrSyncItemInfo {}
windows_core::imp::define_interface!(ISyncMgrSyncResult, ISyncMgrSyncResult_Vtbl, 0x2b90f17e_5a3e_4b33_bb7f_1bc48056b94d);
windows_core::imp::interface_hierarchy!(ISyncMgrSyncResult, windows_core::IUnknown);
impl ISyncMgrSyncResult {
    pub unsafe fn Result(&self, nstatus: SYNCMGR_PROGRESS_STATUS, cerror: u32, cconflicts: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Result)(windows_core::Interface::as_raw(self), nstatus, cerror, cconflicts).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrSyncResult_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Result: unsafe extern "system" fn(*mut core::ffi::c_void, SYNCMGR_PROGRESS_STATUS, u32, u32) -> windows_core::HRESULT,
}
pub trait ISyncMgrSyncResult_Impl: windows_core::IUnknownImpl {
    fn Result(&self, nstatus: SYNCMGR_PROGRESS_STATUS, cerror: u32, cconflicts: u32) -> windows_core::Result<()>;
}
impl ISyncMgrSyncResult_Vtbl {
    pub const fn new<Identity: ISyncMgrSyncResult_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Result<Identity: ISyncMgrSyncResult_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, nstatus: SYNCMGR_PROGRESS_STATUS, cerror: u32, cconflicts: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSyncResult_Impl::Result(this, core::mem::transmute_copy(&nstatus), core::mem::transmute_copy(&cerror), core::mem::transmute_copy(&cconflicts)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Result: Result::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSyncResult as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrSyncResult {}
windows_core::imp::define_interface!(ISyncMgrSynchronize, ISyncMgrSynchronize_Vtbl, 0x6295df40_35ee_11d1_8707_00c04fd93327);
windows_core::imp::interface_hierarchy!(ISyncMgrSynchronize, windows_core::IUnknown);
impl ISyncMgrSynchronize {
    pub unsafe fn Initialize(&self, dwreserved: u32, dwsyncmgrflags: u32, lpcookie: &[u8]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Initialize)(windows_core::Interface::as_raw(self), dwreserved, dwsyncmgrflags, lpcookie.len().try_into().unwrap(), core::mem::transmute(lpcookie.as_ptr())).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn GetHandlerInfo(&self) -> windows_core::Result<*mut SYNCMGRHANDLERINFO> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetHandlerInfo)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn EnumSyncMgrItems(&self) -> windows_core::Result<ISyncMgrEnumItems> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumSyncMgrItems)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetItemObject<T>(&self, itemid: *const windows_core::GUID) -> windows_core::Result<T>
    where
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetItemObject)(windows_core::Interface::as_raw(self), itemid, &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
    pub unsafe fn ShowProperties(&self, hwndparent: super::super::Foundation::HWND, itemid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowProperties)(windows_core::Interface::as_raw(self), hwndparent, itemid).ok() }
    }
    pub unsafe fn SetProgressCallback<P0>(&self, lpcallback: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ISyncMgrSynchronizeCallback>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetProgressCallback)(windows_core::Interface::as_raw(self), lpcallback.param().abi()).ok() }
    }
    pub unsafe fn PrepareForSync(&self, pitemids: &[windows_core::GUID], hwndparent: super::super::Foundation::HWND, dwreserved: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PrepareForSync)(windows_core::Interface::as_raw(self), pitemids.len().try_into().unwrap(), core::mem::transmute(pitemids.as_ptr()), hwndparent, dwreserved).ok() }
    }
    pub unsafe fn Synchronize(&self, hwndparent: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Synchronize)(windows_core::Interface::as_raw(self), hwndparent).ok() }
    }
    pub unsafe fn SetItemStatus(&self, pitemid: *const windows_core::GUID, dwsyncmgrstatus: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetItemStatus)(windows_core::Interface::as_raw(self), pitemid, dwsyncmgrstatus).ok() }
    }
    pub unsafe fn ShowError(&self, hwndparent: super::super::Foundation::HWND, errorid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowError)(windows_core::Interface::as_raw(self), hwndparent, errorid).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrSynchronize_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Initialize: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32, *const u8) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub GetHandlerInfo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut SYNCMGRHANDLERINFO) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    GetHandlerInfo: usize,
    pub EnumSyncMgrItems: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetItemObject: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ShowProperties: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const windows_core::GUID) -> windows_core::HRESULT,
    pub SetProgressCallback: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PrepareForSync: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const windows_core::GUID, super::super::Foundation::HWND, u32) -> windows_core::HRESULT,
    pub Synchronize: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub SetItemStatus: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32) -> windows_core::HRESULT,
    pub ShowError: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const windows_core::GUID) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait ISyncMgrSynchronize_Impl: windows_core::IUnknownImpl {
    fn Initialize(&self, dwreserved: u32, dwsyncmgrflags: u32, cbcookie: u32, lpcookie: *const u8) -> windows_core::Result<()>;
    fn GetHandlerInfo(&self) -> windows_core::Result<*mut SYNCMGRHANDLERINFO>;
    fn EnumSyncMgrItems(&self) -> windows_core::Result<ISyncMgrEnumItems>;
    fn GetItemObject(&self, itemid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn ShowProperties(&self, hwndparent: super::super::Foundation::HWND, itemid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn SetProgressCallback(&self, lpcallback: windows_core::Ref<ISyncMgrSynchronizeCallback>) -> windows_core::Result<()>;
    fn PrepareForSync(&self, cbnumitems: u32, pitemids: *const windows_core::GUID, hwndparent: super::super::Foundation::HWND, dwreserved: u32) -> windows_core::Result<()>;
    fn Synchronize(&self, hwndparent: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetItemStatus(&self, pitemid: *const windows_core::GUID, dwsyncmgrstatus: u32) -> windows_core::Result<()>;
    fn ShowError(&self, hwndparent: super::super::Foundation::HWND, errorid: *const windows_core::GUID) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl ISyncMgrSynchronize_Vtbl {
    pub const fn new<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Initialize<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwreserved: u32, dwsyncmgrflags: u32, cbcookie: u32, lpcookie: *const u8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronize_Impl::Initialize(this, core::mem::transmute_copy(&dwreserved), core::mem::transmute_copy(&dwsyncmgrflags), core::mem::transmute_copy(&cbcookie), core::mem::transmute_copy(&lpcookie)).into()
            }
        }
        unsafe extern "system" fn GetHandlerInfo<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsyncmgrhandlerinfo: *mut *mut SYNCMGRHANDLERINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSynchronize_Impl::GetHandlerInfo(this) {
                    Ok(ok__) => {
                        ppsyncmgrhandlerinfo.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnumSyncMgrItems<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsyncmgrenumitems: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ISyncMgrSynchronize_Impl::EnumSyncMgrItems(this) {
                    Ok(ok__) => {
                        ppsyncmgrenumitems.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetItemObject<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, itemid: *const windows_core::GUID, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronize_Impl::GetItemObject(this, core::mem::transmute_copy(&itemid), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn ShowProperties<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, itemid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronize_Impl::ShowProperties(this, core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&itemid)).into()
            }
        }
        unsafe extern "system" fn SetProgressCallback<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, lpcallback: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronize_Impl::SetProgressCallback(this, core::mem::transmute_copy(&lpcallback)).into()
            }
        }
        unsafe extern "system" fn PrepareForSync<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cbnumitems: u32, pitemids: *const windows_core::GUID, hwndparent: super::super::Foundation::HWND, dwreserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronize_Impl::PrepareForSync(this, core::mem::transmute_copy(&cbnumitems), core::mem::transmute_copy(&pitemids), core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&dwreserved)).into()
            }
        }
        unsafe extern "system" fn Synchronize<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronize_Impl::Synchronize(this, core::mem::transmute_copy(&hwndparent)).into()
            }
        }
        unsafe extern "system" fn SetItemStatus<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pitemid: *const windows_core::GUID, dwsyncmgrstatus: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronize_Impl::SetItemStatus(this, core::mem::transmute_copy(&pitemid), core::mem::transmute_copy(&dwsyncmgrstatus)).into()
            }
        }
        unsafe extern "system" fn ShowError<Identity: ISyncMgrSynchronize_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndparent: super::super::Foundation::HWND, errorid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronize_Impl::ShowError(this, core::mem::transmute_copy(&hwndparent), core::mem::transmute_copy(&errorid)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Initialize: Initialize::<Identity, OFFSET>,
            GetHandlerInfo: GetHandlerInfo::<Identity, OFFSET>,
            EnumSyncMgrItems: EnumSyncMgrItems::<Identity, OFFSET>,
            GetItemObject: GetItemObject::<Identity, OFFSET>,
            ShowProperties: ShowProperties::<Identity, OFFSET>,
            SetProgressCallback: SetProgressCallback::<Identity, OFFSET>,
            PrepareForSync: PrepareForSync::<Identity, OFFSET>,
            Synchronize: Synchronize::<Identity, OFFSET>,
            SetItemStatus: SetItemStatus::<Identity, OFFSET>,
            ShowError: ShowError::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSynchronize as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for ISyncMgrSynchronize {}
windows_core::imp::define_interface!(ISyncMgrSynchronizeCallback, ISyncMgrSynchronizeCallback_Vtbl, 0x6295df41_35ee_11d1_8707_00c04fd93327);
windows_core::imp::interface_hierarchy!(ISyncMgrSynchronizeCallback, windows_core::IUnknown);
impl ISyncMgrSynchronizeCallback {
    pub unsafe fn ShowPropertiesCompleted(&self, hr: windows_core::HRESULT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowPropertiesCompleted)(windows_core::Interface::as_raw(self), hr).ok() }
    }
    pub unsafe fn PrepareForSyncCompleted(&self, hr: windows_core::HRESULT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PrepareForSyncCompleted)(windows_core::Interface::as_raw(self), hr).ok() }
    }
    pub unsafe fn SynchronizeCompleted(&self, hr: windows_core::HRESULT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SynchronizeCompleted)(windows_core::Interface::as_raw(self), hr).ok() }
    }
    pub unsafe fn ShowErrorCompleted(&self, hr: windows_core::HRESULT, pitemids: &[windows_core::GUID]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowErrorCompleted)(windows_core::Interface::as_raw(self), hr, pitemids.len().try_into().unwrap(), core::mem::transmute(pitemids.as_ptr())).ok() }
    }
    pub unsafe fn EnableModeless(&self, fenable: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).EnableModeless)(windows_core::Interface::as_raw(self), fenable.into()).ok() }
    }
    pub unsafe fn Progress(&self, itemid: *const windows_core::GUID, psyncprogressitem: *const SYNCMGRPROGRESSITEM) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Progress)(windows_core::Interface::as_raw(self), itemid, psyncprogressitem).ok() }
    }
    pub unsafe fn LogError<P1>(&self, dwerrorlevel: u32, pszerrortext: P1, psynclogerror: *const SYNCMGRLOGERRORINFO) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LogError)(windows_core::Interface::as_raw(self), dwerrorlevel, pszerrortext.param().abi(), psynclogerror).ok() }
    }
    pub unsafe fn DeleteLogError(&self, errorid: *const windows_core::GUID, dwreserved: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DeleteLogError)(windows_core::Interface::as_raw(self), errorid, dwreserved).ok() }
    }
    pub unsafe fn EstablishConnection<P0>(&self, pwszconnection: P0, dwreserved: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).EstablishConnection)(windows_core::Interface::as_raw(self), pwszconnection.param().abi(), dwreserved).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrSynchronizeCallback_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ShowPropertiesCompleted: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::HRESULT) -> windows_core::HRESULT,
    pub PrepareForSyncCompleted: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::HRESULT) -> windows_core::HRESULT,
    pub SynchronizeCompleted: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::HRESULT) -> windows_core::HRESULT,
    pub ShowErrorCompleted: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::HRESULT, u32, *const windows_core::GUID) -> windows_core::HRESULT,
    pub EnableModeless: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub Progress: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, *const SYNCMGRPROGRESSITEM) -> windows_core::HRESULT,
    pub LogError: unsafe extern "system" fn(*mut core::ffi::c_void, u32, windows_core::PCWSTR, *const SYNCMGRLOGERRORINFO) -> windows_core::HRESULT,
    pub DeleteLogError: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID, u32) -> windows_core::HRESULT,
    pub EstablishConnection: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
}
pub trait ISyncMgrSynchronizeCallback_Impl: windows_core::IUnknownImpl {
    fn ShowPropertiesCompleted(&self, hr: windows_core::HRESULT) -> windows_core::Result<()>;
    fn PrepareForSyncCompleted(&self, hr: windows_core::HRESULT) -> windows_core::Result<()>;
    fn SynchronizeCompleted(&self, hr: windows_core::HRESULT) -> windows_core::Result<()>;
    fn ShowErrorCompleted(&self, hr: windows_core::HRESULT, citems: u32, pitemids: *const windows_core::GUID) -> windows_core::Result<()>;
    fn EnableModeless(&self, fenable: windows_core::BOOL) -> windows_core::Result<()>;
    fn Progress(&self, itemid: *const windows_core::GUID, psyncprogressitem: *const SYNCMGRPROGRESSITEM) -> windows_core::Result<()>;
    fn LogError(&self, dwerrorlevel: u32, pszerrortext: &windows_core::PCWSTR, psynclogerror: *const SYNCMGRLOGERRORINFO) -> windows_core::Result<()>;
    fn DeleteLogError(&self, errorid: *const windows_core::GUID, dwreserved: u32) -> windows_core::Result<()>;
    fn EstablishConnection(&self, pwszconnection: &windows_core::PCWSTR, dwreserved: u32) -> windows_core::Result<()>;
}
impl ISyncMgrSynchronizeCallback_Vtbl {
    pub const fn new<Identity: ISyncMgrSynchronizeCallback_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ShowPropertiesCompleted<Identity: ISyncMgrSynchronizeCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeCallback_Impl::ShowPropertiesCompleted(this, core::mem::transmute_copy(&hr)).into()
            }
        }
        unsafe extern "system" fn PrepareForSyncCompleted<Identity: ISyncMgrSynchronizeCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeCallback_Impl::PrepareForSyncCompleted(this, core::mem::transmute_copy(&hr)).into()
            }
        }
        unsafe extern "system" fn SynchronizeCompleted<Identity: ISyncMgrSynchronizeCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeCallback_Impl::SynchronizeCompleted(this, core::mem::transmute_copy(&hr)).into()
            }
        }
        unsafe extern "system" fn ShowErrorCompleted<Identity: ISyncMgrSynchronizeCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hr: windows_core::HRESULT, citems: u32, pitemids: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeCallback_Impl::ShowErrorCompleted(this, core::mem::transmute_copy(&hr), core::mem::transmute_copy(&citems), core::mem::transmute_copy(&pitemids)).into()
            }
        }
        unsafe extern "system" fn EnableModeless<Identity: ISyncMgrSynchronizeCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fenable: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeCallback_Impl::EnableModeless(this, core::mem::transmute_copy(&fenable)).into()
            }
        }
        unsafe extern "system" fn Progress<Identity: ISyncMgrSynchronizeCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, itemid: *const windows_core::GUID, psyncprogressitem: *const SYNCMGRPROGRESSITEM) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeCallback_Impl::Progress(this, core::mem::transmute_copy(&itemid), core::mem::transmute_copy(&psyncprogressitem)).into()
            }
        }
        unsafe extern "system" fn LogError<Identity: ISyncMgrSynchronizeCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwerrorlevel: u32, pszerrortext: windows_core::PCWSTR, psynclogerror: *const SYNCMGRLOGERRORINFO) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeCallback_Impl::LogError(this, core::mem::transmute_copy(&dwerrorlevel), core::mem::transmute(&pszerrortext), core::mem::transmute_copy(&psynclogerror)).into()
            }
        }
        unsafe extern "system" fn DeleteLogError<Identity: ISyncMgrSynchronizeCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, errorid: *const windows_core::GUID, dwreserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeCallback_Impl::DeleteLogError(this, core::mem::transmute_copy(&errorid), core::mem::transmute_copy(&dwreserved)).into()
            }
        }
        unsafe extern "system" fn EstablishConnection<Identity: ISyncMgrSynchronizeCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszconnection: windows_core::PCWSTR, dwreserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeCallback_Impl::EstablishConnection(this, core::mem::transmute(&pwszconnection), core::mem::transmute_copy(&dwreserved)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ShowPropertiesCompleted: ShowPropertiesCompleted::<Identity, OFFSET>,
            PrepareForSyncCompleted: PrepareForSyncCompleted::<Identity, OFFSET>,
            SynchronizeCompleted: SynchronizeCompleted::<Identity, OFFSET>,
            ShowErrorCompleted: ShowErrorCompleted::<Identity, OFFSET>,
            EnableModeless: EnableModeless::<Identity, OFFSET>,
            Progress: Progress::<Identity, OFFSET>,
            LogError: LogError::<Identity, OFFSET>,
            DeleteLogError: DeleteLogError::<Identity, OFFSET>,
            EstablishConnection: EstablishConnection::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSynchronizeCallback as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrSynchronizeCallback {}
windows_core::imp::define_interface!(ISyncMgrSynchronizeInvoke, ISyncMgrSynchronizeInvoke_Vtbl, 0x6295df2c_35ee_11d1_8707_00c04fd93327);
windows_core::imp::interface_hierarchy!(ISyncMgrSynchronizeInvoke, windows_core::IUnknown);
impl ISyncMgrSynchronizeInvoke {
    pub unsafe fn UpdateItems(&self, dwinvokeflags: u32, clsid: *const windows_core::GUID, pcookie: &[u8]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateItems)(windows_core::Interface::as_raw(self), dwinvokeflags, clsid, pcookie.len().try_into().unwrap(), core::mem::transmute(pcookie.as_ptr())).ok() }
    }
    pub unsafe fn UpdateAll(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateAll)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrSynchronizeInvoke_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub UpdateItems: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *const windows_core::GUID, u32, *const u8) -> windows_core::HRESULT,
    pub UpdateAll: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ISyncMgrSynchronizeInvoke_Impl: windows_core::IUnknownImpl {
    fn UpdateItems(&self, dwinvokeflags: u32, clsid: *const windows_core::GUID, cbcookie: u32, pcookie: *const u8) -> windows_core::Result<()>;
    fn UpdateAll(&self) -> windows_core::Result<()>;
}
impl ISyncMgrSynchronizeInvoke_Vtbl {
    pub const fn new<Identity: ISyncMgrSynchronizeInvoke_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn UpdateItems<Identity: ISyncMgrSynchronizeInvoke_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwinvokeflags: u32, clsid: *const windows_core::GUID, cbcookie: u32, pcookie: *const u8) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeInvoke_Impl::UpdateItems(this, core::mem::transmute_copy(&dwinvokeflags), core::mem::transmute_copy(&clsid), core::mem::transmute_copy(&cbcookie), core::mem::transmute_copy(&pcookie)).into()
            }
        }
        unsafe extern "system" fn UpdateAll<Identity: ISyncMgrSynchronizeInvoke_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrSynchronizeInvoke_Impl::UpdateAll(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            UpdateItems: UpdateItems::<Identity, OFFSET>,
            UpdateAll: UpdateAll::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrSynchronizeInvoke as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrSynchronizeInvoke {}
windows_core::imp::define_interface!(ISyncMgrUIOperation, ISyncMgrUIOperation_Vtbl, 0xfc7cfa47_dfe1_45b5_a049_8cfd82bec271);
windows_core::imp::interface_hierarchy!(ISyncMgrUIOperation, windows_core::IUnknown);
impl ISyncMgrUIOperation {
    pub unsafe fn Run(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT {
        unsafe { (windows_core::Interface::vtable(self).Run)(windows_core::Interface::as_raw(self), hwndowner) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ISyncMgrUIOperation_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Run: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
}
pub trait ISyncMgrUIOperation_Impl: windows_core::IUnknownImpl {
    fn Run(&self, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT;
}
impl ISyncMgrUIOperation_Vtbl {
    pub const fn new<Identity: ISyncMgrUIOperation_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Run<Identity: ISyncMgrUIOperation_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndowner: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ISyncMgrUIOperation_Impl::Run(this, core::mem::transmute_copy(&hwndowner))
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Run: Run::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ISyncMgrUIOperation as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ISyncMgrUIOperation {}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct ITEMSPACING {
    pub cxSmall: i32,
    pub cySmall: i32,
    pub cxLarge: i32,
    pub cyLarge: i32,
}
pub const ITSAT_DEFAULT_PRIORITY: u32 = 268435456u32;
pub const ITSAT_MAX_PRIORITY: u32 = 2147483647u32;
pub const ITSAT_MIN_PRIORITY: u32 = 0u32;
pub const ITSSFLAG_COMPLETE_ON_DESTROY: u32 = 0u32;
pub const ITSSFLAG_FLAGS_MASK: u32 = 3u32;
pub const ITSSFLAG_KILL_ON_DESTROY: u32 = 1u32;
pub const ITSS_THREAD_TIMEOUT_NO_CHANGE: u32 = 4294967294u32;
windows_core::imp::define_interface!(ITaskbarList, ITaskbarList_Vtbl, 0x56fdf342_fd6d_11d0_958a_006097c9a090);
windows_core::imp::interface_hierarchy!(ITaskbarList, windows_core::IUnknown);
impl ITaskbarList {
    pub unsafe fn HrInit(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).HrInit)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn AddTab(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddTab)(windows_core::Interface::as_raw(self), hwnd).ok() }
    }
    pub unsafe fn DeleteTab(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DeleteTab)(windows_core::Interface::as_raw(self), hwnd).ok() }
    }
    pub unsafe fn ActivateTab(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ActivateTab)(windows_core::Interface::as_raw(self), hwnd).ok() }
    }
    pub unsafe fn SetActiveAlt(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetActiveAlt)(windows_core::Interface::as_raw(self), hwnd).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITaskbarList_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub HrInit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub AddTab: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub DeleteTab: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub ActivateTab: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub SetActiveAlt: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
}
pub trait ITaskbarList_Impl: windows_core::IUnknownImpl {
    fn HrInit(&self) -> windows_core::Result<()>;
    fn AddTab(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn DeleteTab(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn ActivateTab(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetActiveAlt(&self, hwnd: super::super::Foundation::HWND) -> windows_core::Result<()>;
}
impl ITaskbarList_Vtbl {
    pub const fn new<Identity: ITaskbarList_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn HrInit<Identity: ITaskbarList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList_Impl::HrInit(this).into()
            }
        }
        unsafe extern "system" fn AddTab<Identity: ITaskbarList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList_Impl::AddTab(this, core::mem::transmute_copy(&hwnd)).into()
            }
        }
        unsafe extern "system" fn DeleteTab<Identity: ITaskbarList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList_Impl::DeleteTab(this, core::mem::transmute_copy(&hwnd)).into()
            }
        }
        unsafe extern "system" fn ActivateTab<Identity: ITaskbarList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList_Impl::ActivateTab(this, core::mem::transmute_copy(&hwnd)).into()
            }
        }
        unsafe extern "system" fn SetActiveAlt<Identity: ITaskbarList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList_Impl::SetActiveAlt(this, core::mem::transmute_copy(&hwnd)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            HrInit: HrInit::<Identity, OFFSET>,
            AddTab: AddTab::<Identity, OFFSET>,
            DeleteTab: DeleteTab::<Identity, OFFSET>,
            ActivateTab: ActivateTab::<Identity, OFFSET>,
            SetActiveAlt: SetActiveAlt::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITaskbarList as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ITaskbarList {}
windows_core::imp::define_interface!(ITaskbarList2, ITaskbarList2_Vtbl, 0x602d4995_b13a_429b_a66e_1935e44f4317);
impl core::ops::Deref for ITaskbarList2 {
    type Target = ITaskbarList;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITaskbarList2, windows_core::IUnknown, ITaskbarList);
impl ITaskbarList2 {
    pub unsafe fn MarkFullscreenWindow(&self, hwnd: super::super::Foundation::HWND, ffullscreen: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MarkFullscreenWindow)(windows_core::Interface::as_raw(self), hwnd, ffullscreen.into()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITaskbarList2_Vtbl {
    pub base__: ITaskbarList_Vtbl,
    pub MarkFullscreenWindow: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, windows_core::BOOL) -> windows_core::HRESULT,
}
pub trait ITaskbarList2_Impl: ITaskbarList_Impl {
    fn MarkFullscreenWindow(&self, hwnd: super::super::Foundation::HWND, ffullscreen: windows_core::BOOL) -> windows_core::Result<()>;
}
impl ITaskbarList2_Vtbl {
    pub const fn new<Identity: ITaskbarList2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn MarkFullscreenWindow<Identity: ITaskbarList2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, ffullscreen: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList2_Impl::MarkFullscreenWindow(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&ffullscreen)).into()
            }
        }
        Self { base__: ITaskbarList_Vtbl::new::<Identity, OFFSET>(), MarkFullscreenWindow: MarkFullscreenWindow::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITaskbarList2 as windows_core::Interface>::IID || iid == &<ITaskbarList as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ITaskbarList2 {}
windows_core::imp::define_interface!(ITaskbarList3, ITaskbarList3_Vtbl, 0xea1afb91_9e28_4b86_90e9_9e9f8a5eefaf);
impl core::ops::Deref for ITaskbarList3 {
    type Target = ITaskbarList2;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITaskbarList3, windows_core::IUnknown, ITaskbarList, ITaskbarList2);
impl ITaskbarList3 {
    pub unsafe fn SetProgressValue(&self, hwnd: super::super::Foundation::HWND, ullcompleted: u64, ulltotal: u64) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetProgressValue)(windows_core::Interface::as_raw(self), hwnd, ullcompleted, ulltotal).ok() }
    }
    pub unsafe fn SetProgressState(&self, hwnd: super::super::Foundation::HWND, tbpflags: TBPFLAG) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetProgressState)(windows_core::Interface::as_raw(self), hwnd, tbpflags).ok() }
    }
    pub unsafe fn RegisterTab(&self, hwndtab: super::super::Foundation::HWND, hwndmdi: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).RegisterTab)(windows_core::Interface::as_raw(self), hwndtab, hwndmdi).ok() }
    }
    pub unsafe fn UnregisterTab(&self, hwndtab: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UnregisterTab)(windows_core::Interface::as_raw(self), hwndtab).ok() }
    }
    pub unsafe fn SetTabOrder(&self, hwndtab: super::super::Foundation::HWND, hwndinsertbefore: super::super::Foundation::HWND) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTabOrder)(windows_core::Interface::as_raw(self), hwndtab, hwndinsertbefore).ok() }
    }
    pub unsafe fn SetTabActive(&self, hwndtab: super::super::Foundation::HWND, hwndmdi: super::super::Foundation::HWND, dwreserved: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTabActive)(windows_core::Interface::as_raw(self), hwndtab, hwndmdi, dwreserved).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn ThumbBarAddButtons(&self, hwnd: super::super::Foundation::HWND, pbutton: &[THUMBBUTTON]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ThumbBarAddButtons)(windows_core::Interface::as_raw(self), hwnd, pbutton.len().try_into().unwrap(), core::mem::transmute(pbutton.as_ptr())).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn ThumbBarUpdateButtons(&self, hwnd: super::super::Foundation::HWND, pbutton: &[THUMBBUTTON]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ThumbBarUpdateButtons)(windows_core::Interface::as_raw(self), hwnd, pbutton.len().try_into().unwrap(), core::mem::transmute(pbutton.as_ptr())).ok() }
    }
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn ThumbBarSetImageList(&self, hwnd: super::super::Foundation::HWND, himl: super::Controls::HIMAGELIST) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ThumbBarSetImageList)(windows_core::Interface::as_raw(self), hwnd, himl).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn SetOverlayIcon<P2>(&self, hwnd: super::super::Foundation::HWND, hicon: super::WindowsAndMessaging::HICON, pszdescription: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetOverlayIcon)(windows_core::Interface::as_raw(self), hwnd, hicon, pszdescription.param().abi()).ok() }
    }
    pub unsafe fn SetThumbnailTooltip<P1>(&self, hwnd: super::super::Foundation::HWND, psztip: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetThumbnailTooltip)(windows_core::Interface::as_raw(self), hwnd, psztip.param().abi()).ok() }
    }
    pub unsafe fn SetThumbnailClip(&self, hwnd: super::super::Foundation::HWND, prcclip: *const super::super::Foundation::RECT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetThumbnailClip)(windows_core::Interface::as_raw(self), hwnd, prcclip).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITaskbarList3_Vtbl {
    pub base__: ITaskbarList2_Vtbl,
    pub SetProgressValue: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u64, u64) -> windows_core::HRESULT,
    pub SetProgressState: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, TBPFLAG) -> windows_core::HRESULT,
    pub RegisterTab: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub UnregisterTab: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub SetTabOrder: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, super::super::Foundation::HWND) -> windows_core::HRESULT,
    pub SetTabActive: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, super::super::Foundation::HWND, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub ThumbBarAddButtons: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32, *const THUMBBUTTON) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    ThumbBarAddButtons: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub ThumbBarUpdateButtons: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, u32, *const THUMBBUTTON) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    ThumbBarUpdateButtons: usize,
    #[cfg(feature = "Win32_UI_Controls")]
    pub ThumbBarSetImageList: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, super::Controls::HIMAGELIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    ThumbBarSetImageList: usize,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub SetOverlayIcon: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, super::WindowsAndMessaging::HICON, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    SetOverlayIcon: usize,
    pub SetThumbnailTooltip: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetThumbnailClip: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const super::super::Foundation::RECT) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait ITaskbarList3_Impl: ITaskbarList2_Impl {
    fn SetProgressValue(&self, hwnd: super::super::Foundation::HWND, ullcompleted: u64, ulltotal: u64) -> windows_core::Result<()>;
    fn SetProgressState(&self, hwnd: super::super::Foundation::HWND, tbpflags: TBPFLAG) -> windows_core::Result<()>;
    fn RegisterTab(&self, hwndtab: super::super::Foundation::HWND, hwndmdi: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn UnregisterTab(&self, hwndtab: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetTabOrder(&self, hwndtab: super::super::Foundation::HWND, hwndinsertbefore: super::super::Foundation::HWND) -> windows_core::Result<()>;
    fn SetTabActive(&self, hwndtab: super::super::Foundation::HWND, hwndmdi: super::super::Foundation::HWND, dwreserved: u32) -> windows_core::Result<()>;
    fn ThumbBarAddButtons(&self, hwnd: super::super::Foundation::HWND, cbuttons: u32, pbutton: *const THUMBBUTTON) -> windows_core::Result<()>;
    fn ThumbBarUpdateButtons(&self, hwnd: super::super::Foundation::HWND, cbuttons: u32, pbutton: *const THUMBBUTTON) -> windows_core::Result<()>;
    fn ThumbBarSetImageList(&self, hwnd: super::super::Foundation::HWND, himl: super::Controls::HIMAGELIST) -> windows_core::Result<()>;
    fn SetOverlayIcon(&self, hwnd: super::super::Foundation::HWND, hicon: super::WindowsAndMessaging::HICON, pszdescription: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetThumbnailTooltip(&self, hwnd: super::super::Foundation::HWND, psztip: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetThumbnailClip(&self, hwnd: super::super::Foundation::HWND, prcclip: *const super::super::Foundation::RECT) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
impl ITaskbarList3_Vtbl {
    pub const fn new<Identity: ITaskbarList3_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetProgressValue<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, ullcompleted: u64, ulltotal: u64) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::SetProgressValue(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&ullcompleted), core::mem::transmute_copy(&ulltotal)).into()
            }
        }
        unsafe extern "system" fn SetProgressState<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, tbpflags: TBPFLAG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::SetProgressState(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&tbpflags)).into()
            }
        }
        unsafe extern "system" fn RegisterTab<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtab: super::super::Foundation::HWND, hwndmdi: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::RegisterTab(this, core::mem::transmute_copy(&hwndtab), core::mem::transmute_copy(&hwndmdi)).into()
            }
        }
        unsafe extern "system" fn UnregisterTab<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtab: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::UnregisterTab(this, core::mem::transmute_copy(&hwndtab)).into()
            }
        }
        unsafe extern "system" fn SetTabOrder<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtab: super::super::Foundation::HWND, hwndinsertbefore: super::super::Foundation::HWND) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::SetTabOrder(this, core::mem::transmute_copy(&hwndtab), core::mem::transmute_copy(&hwndinsertbefore)).into()
            }
        }
        unsafe extern "system" fn SetTabActive<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtab: super::super::Foundation::HWND, hwndmdi: super::super::Foundation::HWND, dwreserved: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::SetTabActive(this, core::mem::transmute_copy(&hwndtab), core::mem::transmute_copy(&hwndmdi), core::mem::transmute_copy(&dwreserved)).into()
            }
        }
        unsafe extern "system" fn ThumbBarAddButtons<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, cbuttons: u32, pbutton: *const THUMBBUTTON) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::ThumbBarAddButtons(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&cbuttons), core::mem::transmute_copy(&pbutton)).into()
            }
        }
        unsafe extern "system" fn ThumbBarUpdateButtons<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, cbuttons: u32, pbutton: *const THUMBBUTTON) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::ThumbBarUpdateButtons(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&cbuttons), core::mem::transmute_copy(&pbutton)).into()
            }
        }
        unsafe extern "system" fn ThumbBarSetImageList<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, himl: super::Controls::HIMAGELIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::ThumbBarSetImageList(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&himl)).into()
            }
        }
        unsafe extern "system" fn SetOverlayIcon<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, hicon: super::WindowsAndMessaging::HICON, pszdescription: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::SetOverlayIcon(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&hicon), core::mem::transmute(&pszdescription)).into()
            }
        }
        unsafe extern "system" fn SetThumbnailTooltip<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, psztip: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::SetThumbnailTooltip(this, core::mem::transmute_copy(&hwnd), core::mem::transmute(&psztip)).into()
            }
        }
        unsafe extern "system" fn SetThumbnailClip<Identity: ITaskbarList3_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, prcclip: *const super::super::Foundation::RECT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList3_Impl::SetThumbnailClip(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&prcclip)).into()
            }
        }
        Self {
            base__: ITaskbarList2_Vtbl::new::<Identity, OFFSET>(),
            SetProgressValue: SetProgressValue::<Identity, OFFSET>,
            SetProgressState: SetProgressState::<Identity, OFFSET>,
            RegisterTab: RegisterTab::<Identity, OFFSET>,
            UnregisterTab: UnregisterTab::<Identity, OFFSET>,
            SetTabOrder: SetTabOrder::<Identity, OFFSET>,
            SetTabActive: SetTabActive::<Identity, OFFSET>,
            ThumbBarAddButtons: ThumbBarAddButtons::<Identity, OFFSET>,
            ThumbBarUpdateButtons: ThumbBarUpdateButtons::<Identity, OFFSET>,
            ThumbBarSetImageList: ThumbBarSetImageList::<Identity, OFFSET>,
            SetOverlayIcon: SetOverlayIcon::<Identity, OFFSET>,
            SetThumbnailTooltip: SetThumbnailTooltip::<Identity, OFFSET>,
            SetThumbnailClip: SetThumbnailClip::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITaskbarList3 as windows_core::Interface>::IID || iid == &<ITaskbarList as windows_core::Interface>::IID || iid == &<ITaskbarList2 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for ITaskbarList3 {}
windows_core::imp::define_interface!(ITaskbarList4, ITaskbarList4_Vtbl, 0xc43dc798_95d1_4bea_9030_bb99e2983a1a);
impl core::ops::Deref for ITaskbarList4 {
    type Target = ITaskbarList3;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITaskbarList4, windows_core::IUnknown, ITaskbarList, ITaskbarList2, ITaskbarList3);
impl ITaskbarList4 {
    pub unsafe fn SetTabProperties(&self, hwndtab: super::super::Foundation::HWND, stpflags: STPFLAG) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTabProperties)(windows_core::Interface::as_raw(self), hwndtab, stpflags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITaskbarList4_Vtbl {
    pub base__: ITaskbarList3_Vtbl,
    pub SetTabProperties: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, STPFLAG) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait ITaskbarList4_Impl: ITaskbarList3_Impl {
    fn SetTabProperties(&self, hwndtab: super::super::Foundation::HWND, stpflags: STPFLAG) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
impl ITaskbarList4_Vtbl {
    pub const fn new<Identity: ITaskbarList4_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetTabProperties<Identity: ITaskbarList4_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtab: super::super::Foundation::HWND, stpflags: STPFLAG) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITaskbarList4_Impl::SetTabProperties(this, core::mem::transmute_copy(&hwndtab), core::mem::transmute_copy(&stpflags)).into()
            }
        }
        Self { base__: ITaskbarList3_Vtbl::new::<Identity, OFFSET>(), SetTabProperties: SetTabProperties::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITaskbarList4 as windows_core::Interface>::IID || iid == &<ITaskbarList as windows_core::Interface>::IID || iid == &<ITaskbarList2 as windows_core::Interface>::IID || iid == &<ITaskbarList3 as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Controls", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for ITaskbarList4 {}
windows_core::imp::define_interface!(IThumbnailCache, IThumbnailCache_Vtbl, 0xf676c15d_596a_4ce2_8234_33996f445db1);
windows_core::imp::interface_hierarchy!(IThumbnailCache, windows_core::IUnknown);
impl IThumbnailCache {
    pub unsafe fn GetThumbnail<P0>(&self, pshellitem: P0, cxyrequestedthumbsize: u32, flags: WTS_FLAGS, ppvthumb: Option<*mut Option<ISharedBitmap>>, poutflags: Option<*mut WTS_CACHEFLAGS>, pthumbnailid: Option<*mut WTS_THUMBNAILID>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetThumbnail)(windows_core::Interface::as_raw(self), pshellitem.param().abi(), cxyrequestedthumbsize, flags, ppvthumb.unwrap_or(core::mem::zeroed()) as _, poutflags.unwrap_or(core::mem::zeroed()) as _, pthumbnailid.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn GetThumbnailByID(&self, thumbnailid: WTS_THUMBNAILID, cxyrequestedthumbsize: u32, ppvthumb: Option<*mut Option<ISharedBitmap>>, poutflags: Option<*mut WTS_CACHEFLAGS>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetThumbnailByID)(windows_core::Interface::as_raw(self), core::mem::transmute(thumbnailid), cxyrequestedthumbsize, ppvthumb.unwrap_or(core::mem::zeroed()) as _, poutflags.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IThumbnailCache_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetThumbnail: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, WTS_FLAGS, *mut *mut core::ffi::c_void, *mut WTS_CACHEFLAGS, *mut WTS_THUMBNAILID) -> windows_core::HRESULT,
    pub GetThumbnailByID: unsafe extern "system" fn(*mut core::ffi::c_void, WTS_THUMBNAILID, u32, *mut *mut core::ffi::c_void, *mut WTS_CACHEFLAGS) -> windows_core::HRESULT,
}
pub trait IThumbnailCache_Impl: windows_core::IUnknownImpl {
    fn GetThumbnail(&self, pshellitem: windows_core::Ref<IShellItem>, cxyrequestedthumbsize: u32, flags: WTS_FLAGS, ppvthumb: windows_core::OutRef<ISharedBitmap>, poutflags: *mut WTS_CACHEFLAGS, pthumbnailid: *mut WTS_THUMBNAILID) -> windows_core::Result<()>;
    fn GetThumbnailByID(&self, thumbnailid: &WTS_THUMBNAILID, cxyrequestedthumbsize: u32, ppvthumb: windows_core::OutRef<ISharedBitmap>, poutflags: *mut WTS_CACHEFLAGS) -> windows_core::Result<()>;
}
impl IThumbnailCache_Vtbl {
    pub const fn new<Identity: IThumbnailCache_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetThumbnail<Identity: IThumbnailCache_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pshellitem: *mut core::ffi::c_void, cxyrequestedthumbsize: u32, flags: WTS_FLAGS, ppvthumb: *mut *mut core::ffi::c_void, poutflags: *mut WTS_CACHEFLAGS, pthumbnailid: *mut WTS_THUMBNAILID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IThumbnailCache_Impl::GetThumbnail(this, core::mem::transmute_copy(&pshellitem), core::mem::transmute_copy(&cxyrequestedthumbsize), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&ppvthumb), core::mem::transmute_copy(&poutflags), core::mem::transmute_copy(&pthumbnailid)).into()
            }
        }
        unsafe extern "system" fn GetThumbnailByID<Identity: IThumbnailCache_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, thumbnailid: WTS_THUMBNAILID, cxyrequestedthumbsize: u32, ppvthumb: *mut *mut core::ffi::c_void, poutflags: *mut WTS_CACHEFLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IThumbnailCache_Impl::GetThumbnailByID(this, core::mem::transmute(&thumbnailid), core::mem::transmute_copy(&cxyrequestedthumbsize), core::mem::transmute_copy(&ppvthumb), core::mem::transmute_copy(&poutflags)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetThumbnail: GetThumbnail::<Identity, OFFSET>,
            GetThumbnailByID: GetThumbnailByID::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailCache as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IThumbnailCache {}
windows_core::imp::define_interface!(IThumbnailCachePrimer, IThumbnailCachePrimer_Vtbl, 0x0f03f8fe_2b26_46f0_965a_212aa8d66b76);
windows_core::imp::interface_hierarchy!(IThumbnailCachePrimer, windows_core::IUnknown);
impl IThumbnailCachePrimer {
    pub unsafe fn PageInThumbnail<P0>(&self, psi: P0, wtsflags: WTS_FLAGS, cxyrequestedthumbsize: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).PageInThumbnail)(windows_core::Interface::as_raw(self), psi.param().abi(), wtsflags, cxyrequestedthumbsize).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IThumbnailCachePrimer_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub PageInThumbnail: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, WTS_FLAGS, u32) -> windows_core::HRESULT,
}
pub trait IThumbnailCachePrimer_Impl: windows_core::IUnknownImpl {
    fn PageInThumbnail(&self, psi: windows_core::Ref<IShellItem>, wtsflags: WTS_FLAGS, cxyrequestedthumbsize: u32) -> windows_core::Result<()>;
}
impl IThumbnailCachePrimer_Vtbl {
    pub const fn new<Identity: IThumbnailCachePrimer_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn PageInThumbnail<Identity: IThumbnailCachePrimer_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, wtsflags: WTS_FLAGS, cxyrequestedthumbsize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IThumbnailCachePrimer_Impl::PageInThumbnail(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&wtsflags), core::mem::transmute_copy(&cxyrequestedthumbsize)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), PageInThumbnail: PageInThumbnail::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailCachePrimer as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IThumbnailCachePrimer {}
windows_core::imp::define_interface!(IThumbnailCapture, IThumbnailCapture_Vtbl, 0x4ea39266_7211_409f_b622_f63dbd16c533);
windows_core::imp::interface_hierarchy!(IThumbnailCapture, windows_core::IUnknown);
impl IThumbnailCapture {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn CaptureThumbnail<P1>(&self, pmaxsize: *const super::super::Foundation::SIZE, phtmldoc2: P1) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CaptureThumbnail)(windows_core::Interface::as_raw(self), pmaxsize, phtmldoc2.param().abi(), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IThumbnailCapture_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub CaptureThumbnail: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::SIZE, *mut core::ffi::c_void, *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    CaptureThumbnail: usize,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IThumbnailCapture_Impl: windows_core::IUnknownImpl {
    fn CaptureThumbnail(&self, pmaxsize: *const super::super::Foundation::SIZE, phtmldoc2: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<super::super::Graphics::Gdi::HBITMAP>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IThumbnailCapture_Vtbl {
    pub const fn new<Identity: IThumbnailCapture_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CaptureThumbnail<Identity: IThumbnailCapture_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pmaxsize: *const super::super::Foundation::SIZE, phtmldoc2: *mut core::ffi::c_void, phbmthumbnail: *mut super::super::Graphics::Gdi::HBITMAP) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IThumbnailCapture_Impl::CaptureThumbnail(this, core::mem::transmute_copy(&pmaxsize), core::mem::transmute_copy(&phtmldoc2)) {
                    Ok(ok__) => {
                        phbmthumbnail.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), CaptureThumbnail: CaptureThumbnail::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailCapture as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IThumbnailCapture {}
windows_core::imp::define_interface!(IThumbnailHandlerFactory, IThumbnailHandlerFactory_Vtbl, 0xe35b4b2e_00da_4bc1_9f13_38bc11f5d417);
windows_core::imp::interface_hierarchy!(IThumbnailHandlerFactory, windows_core::IUnknown);
impl IThumbnailHandlerFactory {
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn GetThumbnailHandler<P1, T>(&self, pidlchild: *const Common::ITEMIDLIST, pbc: P1) -> windows_core::Result<T>
    where
        P1: windows_core::Param<super::super::System::Com::IBindCtx>,
        T: windows_core::Interface,
    {
        let mut result__ = core::ptr::null_mut();
        unsafe { (windows_core::Interface::vtable(self).GetThumbnailHandler)(windows_core::Interface::as_raw(self), pidlchild, pbc.param().abi(), &T::IID, &mut result__).and_then(|| windows_core::Type::from_abi(result__)) }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IThumbnailHandlerFactory_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub GetThumbnailHandler: unsafe extern "system" fn(*mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common")))]
    GetThumbnailHandler: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IThumbnailHandlerFactory_Impl: windows_core::IUnknownImpl {
    fn GetThumbnailHandler(&self, pidlchild: *const Common::ITEMIDLIST, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IThumbnailHandlerFactory_Vtbl {
    pub const fn new<Identity: IThumbnailHandlerFactory_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetThumbnailHandler<Identity: IThumbnailHandlerFactory_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pidlchild: *const Common::ITEMIDLIST, pbc: *mut core::ffi::c_void, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IThumbnailHandlerFactory_Impl::GetThumbnailHandler(this, core::mem::transmute_copy(&pidlchild), core::mem::transmute_copy(&pbc), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetThumbnailHandler: GetThumbnailHandler::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailHandlerFactory as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IThumbnailHandlerFactory {}
windows_core::imp::define_interface!(IThumbnailProvider, IThumbnailProvider_Vtbl, 0xe357fccd_a995_4576_b01f_234630154e96);
windows_core::imp::interface_hierarchy!(IThumbnailProvider, windows_core::IUnknown);
impl IThumbnailProvider {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetThumbnail(&self, cx: u32, phbmp: *mut super::super::Graphics::Gdi::HBITMAP, pdwalpha: *mut WTS_ALPHATYPE) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetThumbnail)(windows_core::Interface::as_raw(self), cx, phbmp as _, pdwalpha as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IThumbnailProvider_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetThumbnail: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut super::super::Graphics::Gdi::HBITMAP, *mut WTS_ALPHATYPE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetThumbnail: usize,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IThumbnailProvider_Impl: windows_core::IUnknownImpl {
    fn GetThumbnail(&self, cx: u32, phbmp: *mut super::super::Graphics::Gdi::HBITMAP, pdwalpha: *mut WTS_ALPHATYPE) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IThumbnailProvider_Vtbl {
    pub const fn new<Identity: IThumbnailProvider_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetThumbnail<Identity: IThumbnailProvider_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cx: u32, phbmp: *mut super::super::Graphics::Gdi::HBITMAP, pdwalpha: *mut WTS_ALPHATYPE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IThumbnailProvider_Impl::GetThumbnail(this, core::mem::transmute_copy(&cx), core::mem::transmute_copy(&phbmp), core::mem::transmute_copy(&pdwalpha)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetThumbnail: GetThumbnail::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailProvider as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IThumbnailProvider {}
windows_core::imp::define_interface!(IThumbnailSettings, IThumbnailSettings_Vtbl, 0xf4376f00_bef5_4d45_80f3_1e023bbf1209);
windows_core::imp::interface_hierarchy!(IThumbnailSettings, windows_core::IUnknown);
impl IThumbnailSettings {
    pub unsafe fn SetContext(&self, dwcontext: WTS_CONTEXTFLAGS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetContext)(windows_core::Interface::as_raw(self), dwcontext).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IThumbnailSettings_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetContext: unsafe extern "system" fn(*mut core::ffi::c_void, WTS_CONTEXTFLAGS) -> windows_core::HRESULT,
}
pub trait IThumbnailSettings_Impl: windows_core::IUnknownImpl {
    fn SetContext(&self, dwcontext: WTS_CONTEXTFLAGS) -> windows_core::Result<()>;
}
impl IThumbnailSettings_Vtbl {
    pub const fn new<Identity: IThumbnailSettings_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetContext<Identity: IThumbnailSettings_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcontext: WTS_CONTEXTFLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IThumbnailSettings_Impl::SetContext(this, core::mem::transmute_copy(&dwcontext)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), SetContext: SetContext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailSettings as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IThumbnailSettings {}
windows_core::imp::define_interface!(IThumbnailStreamCache, IThumbnailStreamCache_Vtbl, 0x90e11430_9569_41d8_ae75_6d4d2ae7cca0);
windows_core::imp::interface_hierarchy!(IThumbnailStreamCache, windows_core::IUnknown);
impl IThumbnailStreamCache {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn GetThumbnailStream<P0>(&self, path: P0, cacheid: u64, options: ThumbnailStreamCacheOptions, requestedthumbnailsize: u32, thumbnailsize: *mut super::super::Foundation::SIZE, thumbnailstream: *mut Option<super::super::System::Com::IStream>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetThumbnailStream)(windows_core::Interface::as_raw(self), path.param().abi(), cacheid, options, requestedthumbnailsize, thumbnailsize as _, core::mem::transmute(thumbnailstream)).ok() }
    }
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn SetThumbnailStream<P0, P3>(&self, path: P0, cacheid: u64, thumbnailsize: super::super::Foundation::SIZE, thumbnailstream: P3) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P3: windows_core::Param<super::super::System::Com::IStream>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetThumbnailStream)(windows_core::Interface::as_raw(self), path.param().abi(), cacheid, core::mem::transmute(thumbnailsize), thumbnailstream.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IThumbnailStreamCache_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub GetThumbnailStream: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, ThumbnailStreamCacheOptions, u32, *mut super::super::Foundation::SIZE, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    GetThumbnailStream: usize,
    #[cfg(feature = "Win32_System_Com")]
    pub SetThumbnailStream: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u64, super::super::Foundation::SIZE, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    SetThumbnailStream: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait IThumbnailStreamCache_Impl: windows_core::IUnknownImpl {
    fn GetThumbnailStream(&self, path: &windows_core::PCWSTR, cacheid: u64, options: ThumbnailStreamCacheOptions, requestedthumbnailsize: u32, thumbnailsize: *mut super::super::Foundation::SIZE, thumbnailstream: windows_core::OutRef<super::super::System::Com::IStream>) -> windows_core::Result<()>;
    fn SetThumbnailStream(&self, path: &windows_core::PCWSTR, cacheid: u64, thumbnailsize: &super::super::Foundation::SIZE, thumbnailstream: windows_core::Ref<super::super::System::Com::IStream>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl IThumbnailStreamCache_Vtbl {
    pub const fn new<Identity: IThumbnailStreamCache_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetThumbnailStream<Identity: IThumbnailStreamCache_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, cacheid: u64, options: ThumbnailStreamCacheOptions, requestedthumbnailsize: u32, thumbnailsize: *mut super::super::Foundation::SIZE, thumbnailstream: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IThumbnailStreamCache_Impl::GetThumbnailStream(this, core::mem::transmute(&path), core::mem::transmute_copy(&cacheid), core::mem::transmute_copy(&options), core::mem::transmute_copy(&requestedthumbnailsize), core::mem::transmute_copy(&thumbnailsize), core::mem::transmute_copy(&thumbnailstream)).into()
            }
        }
        unsafe extern "system" fn SetThumbnailStream<Identity: IThumbnailStreamCache_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: windows_core::PCWSTR, cacheid: u64, thumbnailsize: super::super::Foundation::SIZE, thumbnailstream: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IThumbnailStreamCache_Impl::SetThumbnailStream(this, core::mem::transmute(&path), core::mem::transmute_copy(&cacheid), core::mem::transmute(&thumbnailsize), core::mem::transmute_copy(&thumbnailstream)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetThumbnailStream: GetThumbnailStream::<Identity, OFFSET>,
            SetThumbnailStream: SetThumbnailStream::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IThumbnailStreamCache as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for IThumbnailStreamCache {}
windows_core::imp::define_interface!(ITrackShellMenu, ITrackShellMenu_Vtbl, 0x8278f932_2a3e_11d2_838f_00c04fd918d0);
impl core::ops::Deref for ITrackShellMenu {
    type Target = IShellMenu;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITrackShellMenu, windows_core::IUnknown, IShellMenu);
impl ITrackShellMenu {
    pub unsafe fn SetObscured<P1>(&self, hwndtb: super::super::Foundation::HWND, punkband: P1, dwsmsetflags: u32) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetObscured)(windows_core::Interface::as_raw(self), hwndtb, punkband.param().abi(), dwsmsetflags).ok() }
    }
    pub unsafe fn Popup(&self, hwnd: super::super::Foundation::HWND, ppt: *mut super::super::Foundation::POINTL, prcexclude: *mut super::super::Foundation::RECTL, dwflags: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Popup)(windows_core::Interface::as_raw(self), hwnd, ppt as _, prcexclude as _, dwflags).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITrackShellMenu_Vtbl {
    pub base__: IShellMenu_Vtbl,
    pub SetObscured: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub Popup: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut super::super::Foundation::POINTL, *mut super::super::Foundation::RECTL, i32) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait ITrackShellMenu_Impl: IShellMenu_Impl {
    fn SetObscured(&self, hwndtb: super::super::Foundation::HWND, punkband: windows_core::Ref<windows_core::IUnknown>, dwsmsetflags: u32) -> windows_core::Result<()>;
    fn Popup(&self, hwnd: super::super::Foundation::HWND, ppt: *mut super::super::Foundation::POINTL, prcexclude: *mut super::super::Foundation::RECTL, dwflags: i32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl ITrackShellMenu_Vtbl {
    pub const fn new<Identity: ITrackShellMenu_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetObscured<Identity: ITrackShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwndtb: super::super::Foundation::HWND, punkband: *mut core::ffi::c_void, dwsmsetflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITrackShellMenu_Impl::SetObscured(this, core::mem::transmute_copy(&hwndtb), core::mem::transmute_copy(&punkband), core::mem::transmute_copy(&dwsmsetflags)).into()
            }
        }
        unsafe extern "system" fn Popup<Identity: ITrackShellMenu_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hwnd: super::super::Foundation::HWND, ppt: *mut super::super::Foundation::POINTL, prcexclude: *mut super::super::Foundation::RECTL, dwflags: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITrackShellMenu_Impl::Popup(this, core::mem::transmute_copy(&hwnd), core::mem::transmute_copy(&ppt), core::mem::transmute_copy(&prcexclude), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        Self { base__: IShellMenu_Vtbl::new::<Identity, OFFSET>(), SetObscured: SetObscured::<Identity, OFFSET>, Popup: Popup::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITrackShellMenu as windows_core::Interface>::IID || iid == &<IShellMenu as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Registry", feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for ITrackShellMenu {}
windows_core::imp::define_interface!(ITranscodeImage, ITranscodeImage_Vtbl, 0xbae86ddd_dc11_421c_b7ab_cc55d1d65c44);
windows_core::imp::interface_hierarchy!(ITranscodeImage, windows_core::IUnknown);
impl ITranscodeImage {
    #[cfg(feature = "Win32_System_Com")]
    pub unsafe fn TranscodeImage<P0, P4>(&self, pshellitem: P0, uimaxwidth: u32, uimaxheight: u32, flags: u32, pvimage: P4, puiwidth: *mut u32, puiheight: *mut u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P4: windows_core::Param<super::super::System::Com::IStream>,
    {
        unsafe { (windows_core::Interface::vtable(self).TranscodeImage)(windows_core::Interface::as_raw(self), pshellitem.param().abi(), uimaxwidth, uimaxheight, flags, pvimage.param().abi(), puiwidth as _, puiheight as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITranscodeImage_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_System_Com")]
    pub TranscodeImage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, u32, u32, *mut core::ffi::c_void, *mut u32, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Com"))]
    TranscodeImage: usize,
}
#[cfg(feature = "Win32_System_Com")]
pub trait ITranscodeImage_Impl: windows_core::IUnknownImpl {
    fn TranscodeImage(&self, pshellitem: windows_core::Ref<IShellItem>, uimaxwidth: u32, uimaxheight: u32, flags: u32, pvimage: windows_core::Ref<super::super::System::Com::IStream>, puiwidth: *mut u32, puiheight: *mut u32) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_System_Com")]
impl ITranscodeImage_Vtbl {
    pub const fn new<Identity: ITranscodeImage_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn TranscodeImage<Identity: ITranscodeImage_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pshellitem: *mut core::ffi::c_void, uimaxwidth: u32, uimaxheight: u32, flags: u32, pvimage: *mut core::ffi::c_void, puiwidth: *mut u32, puiheight: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITranscodeImage_Impl::TranscodeImage(this, core::mem::transmute_copy(&pshellitem), core::mem::transmute_copy(&uimaxwidth), core::mem::transmute_copy(&uimaxheight), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&pvimage), core::mem::transmute_copy(&puiwidth), core::mem::transmute_copy(&puiheight)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), TranscodeImage: TranscodeImage::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITranscodeImage as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_System_Com")]
impl windows_core::RuntimeName for ITranscodeImage {}
windows_core::imp::define_interface!(ITransferAdviseSink, ITransferAdviseSink_Vtbl, 0xd594d0d8_8da7_457b_b3b4_ce5dbaac0b88);
windows_core::imp::interface_hierarchy!(ITransferAdviseSink, windows_core::IUnknown);
impl ITransferAdviseSink {
    pub unsafe fn UpdateProgress(&self, ullsizecurrent: u64, ullsizetotal: u64, nfilescurrent: i32, nfilestotal: i32, nfolderscurrent: i32, nfolderstotal: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateProgress)(windows_core::Interface::as_raw(self), ullsizecurrent, ullsizetotal, nfilescurrent, nfilestotal, nfolderscurrent, nfolderstotal).ok() }
    }
    pub unsafe fn UpdateTransferState(&self, ts: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).UpdateTransferState)(windows_core::Interface::as_raw(self), ts).ok() }
    }
    pub unsafe fn ConfirmOverwrite<P0, P1, P2>(&self, psisource: P0, psidestparent: P1, pszname: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).ConfirmOverwrite)(windows_core::Interface::as_raw(self), psisource.param().abi(), psidestparent.param().abi(), pszname.param().abi()).ok() }
    }
    pub unsafe fn ConfirmEncryptionLoss<P0>(&self, psisource: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).ConfirmEncryptionLoss)(windows_core::Interface::as_raw(self), psisource.param().abi()).ok() }
    }
    pub unsafe fn FileFailure<P0, P1>(&self, psi: P0, pszitem: P1, hrerror: windows_core::HRESULT, pszrename: &mut [u16]) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).FileFailure)(windows_core::Interface::as_raw(self), psi.param().abi(), pszitem.param().abi(), hrerror, core::mem::transmute(pszrename.as_ptr()), pszrename.len().try_into().unwrap()).ok() }
    }
    pub unsafe fn SubStreamFailure<P0, P1>(&self, psi: P0, pszstreamname: P1, hrerror: windows_core::HRESULT) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SubStreamFailure)(windows_core::Interface::as_raw(self), psi.param().abi(), pszstreamname.param().abi(), hrerror).ok() }
    }
    pub unsafe fn PropertyFailure<P0>(&self, psi: P0, pkey: *const super::super::Foundation::PROPERTYKEY, hrerror: windows_core::HRESULT) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).PropertyFailure)(windows_core::Interface::as_raw(self), psi.param().abi(), pkey, hrerror).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITransferAdviseSink_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub UpdateProgress: unsafe extern "system" fn(*mut core::ffi::c_void, u64, u64, i32, i32, i32, i32) -> windows_core::HRESULT,
    pub UpdateTransferState: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub ConfirmOverwrite: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub ConfirmEncryptionLoss: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FileFailure: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::HRESULT, windows_core::PWSTR, u32) -> windows_core::HRESULT,
    pub SubStreamFailure: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, windows_core::HRESULT) -> windows_core::HRESULT,
    pub PropertyFailure: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::Foundation::PROPERTYKEY, windows_core::HRESULT) -> windows_core::HRESULT,
}
pub trait ITransferAdviseSink_Impl: windows_core::IUnknownImpl {
    fn UpdateProgress(&self, ullsizecurrent: u64, ullsizetotal: u64, nfilescurrent: i32, nfilestotal: i32, nfolderscurrent: i32, nfolderstotal: i32) -> windows_core::Result<()>;
    fn UpdateTransferState(&self, ts: u32) -> windows_core::Result<()>;
    fn ConfirmOverwrite(&self, psisource: windows_core::Ref<IShellItem>, psidestparent: windows_core::Ref<IShellItem>, pszname: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn ConfirmEncryptionLoss(&self, psisource: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn FileFailure(&self, psi: windows_core::Ref<IShellItem>, pszitem: &windows_core::PCWSTR, hrerror: windows_core::HRESULT, pszrename: windows_core::PWSTR, cchrename: u32) -> windows_core::Result<()>;
    fn SubStreamFailure(&self, psi: windows_core::Ref<IShellItem>, pszstreamname: &windows_core::PCWSTR, hrerror: windows_core::HRESULT) -> windows_core::Result<()>;
    fn PropertyFailure(&self, psi: windows_core::Ref<IShellItem>, pkey: *const super::super::Foundation::PROPERTYKEY, hrerror: windows_core::HRESULT) -> windows_core::Result<()>;
}
impl ITransferAdviseSink_Vtbl {
    pub const fn new<Identity: ITransferAdviseSink_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn UpdateProgress<Identity: ITransferAdviseSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ullsizecurrent: u64, ullsizetotal: u64, nfilescurrent: i32, nfilestotal: i32, nfolderscurrent: i32, nfolderstotal: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferAdviseSink_Impl::UpdateProgress(this, core::mem::transmute_copy(&ullsizecurrent), core::mem::transmute_copy(&ullsizetotal), core::mem::transmute_copy(&nfilescurrent), core::mem::transmute_copy(&nfilestotal), core::mem::transmute_copy(&nfolderscurrent), core::mem::transmute_copy(&nfolderstotal)).into()
            }
        }
        unsafe extern "system" fn UpdateTransferState<Identity: ITransferAdviseSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ts: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferAdviseSink_Impl::UpdateTransferState(this, core::mem::transmute_copy(&ts)).into()
            }
        }
        unsafe extern "system" fn ConfirmOverwrite<Identity: ITransferAdviseSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psidestparent: *mut core::ffi::c_void, pszname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferAdviseSink_Impl::ConfirmOverwrite(this, core::mem::transmute_copy(&psisource), core::mem::transmute_copy(&psidestparent), core::mem::transmute(&pszname)).into()
            }
        }
        unsafe extern "system" fn ConfirmEncryptionLoss<Identity: ITransferAdviseSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferAdviseSink_Impl::ConfirmEncryptionLoss(this, core::mem::transmute_copy(&psisource)).into()
            }
        }
        unsafe extern "system" fn FileFailure<Identity: ITransferAdviseSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pszitem: windows_core::PCWSTR, hrerror: windows_core::HRESULT, pszrename: windows_core::PWSTR, cchrename: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferAdviseSink_Impl::FileFailure(this, core::mem::transmute_copy(&psi), core::mem::transmute(&pszitem), core::mem::transmute_copy(&hrerror), core::mem::transmute_copy(&pszrename), core::mem::transmute_copy(&cchrename)).into()
            }
        }
        unsafe extern "system" fn SubStreamFailure<Identity: ITransferAdviseSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pszstreamname: windows_core::PCWSTR, hrerror: windows_core::HRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferAdviseSink_Impl::SubStreamFailure(this, core::mem::transmute_copy(&psi), core::mem::transmute(&pszstreamname), core::mem::transmute_copy(&hrerror)).into()
            }
        }
        unsafe extern "system" fn PropertyFailure<Identity: ITransferAdviseSink_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, pkey: *const super::super::Foundation::PROPERTYKEY, hrerror: windows_core::HRESULT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferAdviseSink_Impl::PropertyFailure(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&pkey), core::mem::transmute_copy(&hrerror)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            UpdateProgress: UpdateProgress::<Identity, OFFSET>,
            UpdateTransferState: UpdateTransferState::<Identity, OFFSET>,
            ConfirmOverwrite: ConfirmOverwrite::<Identity, OFFSET>,
            ConfirmEncryptionLoss: ConfirmEncryptionLoss::<Identity, OFFSET>,
            FileFailure: FileFailure::<Identity, OFFSET>,
            SubStreamFailure: SubStreamFailure::<Identity, OFFSET>,
            PropertyFailure: PropertyFailure::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITransferAdviseSink as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ITransferAdviseSink {}
windows_core::imp::define_interface!(ITransferDestination, ITransferDestination_Vtbl, 0x48addd32_3ca5_4124_abe3_b5a72531b207);
windows_core::imp::interface_hierarchy!(ITransferDestination, windows_core::IUnknown);
impl ITransferDestination {
    pub unsafe fn Advise<P0>(&self, psink: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<ITransferAdviseSink>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Advise)(windows_core::Interface::as_raw(self), psink.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Unadvise)(windows_core::Interface::as_raw(self), dwcookie).ok() }
    }
    pub unsafe fn CreateItem<P0>(&self, pszname: P0, dwattributes: u32, ullsize: u64, flags: u32, riiditem: *const windows_core::GUID, ppvitem: *mut *mut core::ffi::c_void, riidresources: *const windows_core::GUID, ppvresources: *mut *mut core::ffi::c_void) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).CreateItem)(windows_core::Interface::as_raw(self), pszname.param().abi(), dwattributes, ullsize, flags, riiditem, ppvitem as _, riidresources, ppvresources as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITransferDestination_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Advise: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub CreateItem: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32, u64, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ITransferDestination_Impl: windows_core::IUnknownImpl {
    fn Advise(&self, psink: windows_core::Ref<ITransferAdviseSink>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn CreateItem(&self, pszname: &windows_core::PCWSTR, dwattributes: u32, ullsize: u64, flags: u32, riiditem: *const windows_core::GUID, ppvitem: *mut *mut core::ffi::c_void, riidresources: *const windows_core::GUID, ppvresources: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
}
impl ITransferDestination_Vtbl {
    pub const fn new<Identity: ITransferDestination_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Advise<Identity: ITransferDestination_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psink: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITransferDestination_Impl::Advise(this, core::mem::transmute_copy(&psink)) {
                    Ok(ok__) => {
                        pdwcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Unadvise<Identity: ITransferDestination_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferDestination_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
            }
        }
        unsafe extern "system" fn CreateItem<Identity: ITransferDestination_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszname: windows_core::PCWSTR, dwattributes: u32, ullsize: u64, flags: u32, riiditem: *const windows_core::GUID, ppvitem: *mut *mut core::ffi::c_void, riidresources: *const windows_core::GUID, ppvresources: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferDestination_Impl::CreateItem(this, core::mem::transmute(&pszname), core::mem::transmute_copy(&dwattributes), core::mem::transmute_copy(&ullsize), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riiditem), core::mem::transmute_copy(&ppvitem), core::mem::transmute_copy(&riidresources), core::mem::transmute_copy(&ppvresources)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            CreateItem: CreateItem::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITransferDestination as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ITransferDestination {}
windows_core::imp::define_interface!(ITransferMediumItem, ITransferMediumItem_Vtbl, 0x77f295d5_2d6f_4e19_b8ae_322f3e721ab5);
impl core::ops::Deref for ITransferMediumItem {
    type Target = IRelatedItem;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(ITransferMediumItem, windows_core::IUnknown, IRelatedItem);
#[repr(C)]
#[doc(hidden)]
pub struct ITransferMediumItem_Vtbl {
    pub base__: IRelatedItem_Vtbl,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ITransferMediumItem_Impl: IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ITransferMediumItem_Vtbl {
    pub const fn new<Identity: ITransferMediumItem_Impl, const OFFSET: isize>() -> Self {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITransferMediumItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ITransferMediumItem {}
windows_core::imp::define_interface!(ITransferSource, ITransferSource_Vtbl, 0x00adb003_bde9_45c6_8e29_d09f9353e108);
windows_core::imp::interface_hierarchy!(ITransferSource, windows_core::IUnknown);
impl ITransferSource {
    pub unsafe fn Advise<P0>(&self, psink: P0) -> windows_core::Result<u32>
    where
        P0: windows_core::Param<ITransferAdviseSink>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Advise)(windows_core::Interface::as_raw(self), psink.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Unadvise)(windows_core::Interface::as_raw(self), dwcookie).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub unsafe fn SetProperties<P0>(&self, pproparray: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<PropertiesSystem::IPropertyChangeArray>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetProperties)(windows_core::Interface::as_raw(self), pproparray.param().abi()).ok() }
    }
    pub unsafe fn OpenItem<P0>(&self, psi: P0, flags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).OpenItem)(windows_core::Interface::as_raw(self), psi.param().abi(), flags, riid, ppv as _).ok() }
    }
    pub unsafe fn MoveItem<P0, P1, P2>(&self, psi: P0, psiparentdst: P1, psznamedst: P2, flags: u32) -> windows_core::Result<IShellItem>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).MoveItem)(windows_core::Interface::as_raw(self), psi.param().abi(), psiparentdst.param().abi(), psznamedst.param().abi(), flags, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RecycleItem<P0, P1>(&self, psisource: P0, psiparentdest: P1, flags: u32) -> windows_core::Result<IShellItem>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RecycleItem)(windows_core::Interface::as_raw(self), psisource.param().abi(), psiparentdest.param().abi(), flags, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn RemoveItem<P0>(&self, psisource: P0, flags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveItem)(windows_core::Interface::as_raw(self), psisource.param().abi(), flags).ok() }
    }
    pub unsafe fn RenameItem<P0, P1>(&self, psisource: P0, psznewname: P1, flags: u32) -> windows_core::Result<IShellItem>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RenameItem)(windows_core::Interface::as_raw(self), psisource.param().abi(), psznewname.param().abi(), flags, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn LinkItem<P0, P1, P2>(&self, psisource: P0, psiparentdest: P1, psznewname: P2, flags: u32) -> windows_core::Result<IShellItem>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItem>,
        P2: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).LinkItem)(windows_core::Interface::as_raw(self), psisource.param().abi(), psiparentdest.param().abi(), psznewname.param().abi(), flags, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn ApplyPropertiesToItem<P0>(&self, psisource: P0) -> windows_core::Result<IShellItem>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ApplyPropertiesToItem)(windows_core::Interface::as_raw(self), psisource.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetDefaultDestinationName<P0, P1>(&self, psisource: P0, psiparentdest: P1) -> windows_core::Result<windows_core::PWSTR>
    where
        P0: windows_core::Param<IShellItem>,
        P1: windows_core::Param<IShellItem>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetDefaultDestinationName)(windows_core::Interface::as_raw(self), psisource.param().abi(), psiparentdest.param().abi(), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn EnterFolder<P0>(&self, psichildfolderdest: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).EnterFolder)(windows_core::Interface::as_raw(self), psichildfolderdest.param().abi()).ok() }
    }
    pub unsafe fn LeaveFolder<P0>(&self, psichildfolderdest: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IShellItem>,
    {
        unsafe { (windows_core::Interface::vtable(self).LeaveFolder)(windows_core::Interface::as_raw(self), psichildfolderdest.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITransferSource_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Advise: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut u32) -> windows_core::HRESULT,
    pub Unadvise: unsafe extern "system" fn(*mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
    pub SetProperties: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_PropertiesSystem"))]
    SetProperties: usize,
    pub OpenItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, *const windows_core::GUID, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub MoveItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RecycleItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub RemoveItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub RenameItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub LinkItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::PCWSTR, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ApplyPropertiesToItem: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetDefaultDestinationName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub EnterFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub LeaveFolder: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
pub trait ITransferSource_Impl: windows_core::IUnknownImpl {
    fn Advise(&self, psink: windows_core::Ref<ITransferAdviseSink>) -> windows_core::Result<u32>;
    fn Unadvise(&self, dwcookie: u32) -> windows_core::Result<()>;
    fn SetProperties(&self, pproparray: windows_core::Ref<PropertiesSystem::IPropertyChangeArray>) -> windows_core::Result<()>;
    fn OpenItem(&self, psi: windows_core::Ref<IShellItem>, flags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::Result<()>;
    fn MoveItem(&self, psi: windows_core::Ref<IShellItem>, psiparentdst: windows_core::Ref<IShellItem>, psznamedst: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<IShellItem>;
    fn RecycleItem(&self, psisource: windows_core::Ref<IShellItem>, psiparentdest: windows_core::Ref<IShellItem>, flags: u32) -> windows_core::Result<IShellItem>;
    fn RemoveItem(&self, psisource: windows_core::Ref<IShellItem>, flags: u32) -> windows_core::Result<()>;
    fn RenameItem(&self, psisource: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<IShellItem>;
    fn LinkItem(&self, psisource: windows_core::Ref<IShellItem>, psiparentdest: windows_core::Ref<IShellItem>, psznewname: &windows_core::PCWSTR, flags: u32) -> windows_core::Result<IShellItem>;
    fn ApplyPropertiesToItem(&self, psisource: windows_core::Ref<IShellItem>) -> windows_core::Result<IShellItem>;
    fn GetDefaultDestinationName(&self, psisource: windows_core::Ref<IShellItem>, psiparentdest: windows_core::Ref<IShellItem>) -> windows_core::Result<windows_core::PWSTR>;
    fn EnterFolder(&self, psichildfolderdest: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
    fn LeaveFolder(&self, psichildfolderdest: windows_core::Ref<IShellItem>) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl ITransferSource_Vtbl {
    pub const fn new<Identity: ITransferSource_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Advise<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psink: *mut core::ffi::c_void, pdwcookie: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITransferSource_Impl::Advise(this, core::mem::transmute_copy(&psink)) {
                    Ok(ok__) => {
                        pdwcookie.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Unadvise<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwcookie: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferSource_Impl::Unadvise(this, core::mem::transmute_copy(&dwcookie)).into()
            }
        }
        unsafe extern "system" fn SetProperties<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pproparray: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferSource_Impl::SetProperties(this, core::mem::transmute_copy(&pproparray)).into()
            }
        }
        unsafe extern "system" fn OpenItem<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, flags: u32, riid: *const windows_core::GUID, ppv: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferSource_Impl::OpenItem(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&riid), core::mem::transmute_copy(&ppv)).into()
            }
        }
        unsafe extern "system" fn MoveItem<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psi: *mut core::ffi::c_void, psiparentdst: *mut core::ffi::c_void, psznamedst: windows_core::PCWSTR, flags: u32, ppsinew: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITransferSource_Impl::MoveItem(this, core::mem::transmute_copy(&psi), core::mem::transmute_copy(&psiparentdst), core::mem::transmute(&psznamedst), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        ppsinew.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RecycleItem<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psiparentdest: *mut core::ffi::c_void, flags: u32, ppsinewdest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITransferSource_Impl::RecycleItem(this, core::mem::transmute_copy(&psisource), core::mem::transmute_copy(&psiparentdest), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        ppsinewdest.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveItem<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, flags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferSource_Impl::RemoveItem(this, core::mem::transmute_copy(&psisource), core::mem::transmute_copy(&flags)).into()
            }
        }
        unsafe extern "system" fn RenameItem<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, flags: u32, ppsinewdest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITransferSource_Impl::RenameItem(this, core::mem::transmute_copy(&psisource), core::mem::transmute(&psznewname), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        ppsinewdest.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn LinkItem<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psiparentdest: *mut core::ffi::c_void, psznewname: windows_core::PCWSTR, flags: u32, ppsinewdest: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITransferSource_Impl::LinkItem(this, core::mem::transmute_copy(&psisource), core::mem::transmute_copy(&psiparentdest), core::mem::transmute(&psznewname), core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        ppsinewdest.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ApplyPropertiesToItem<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, ppsinew: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITransferSource_Impl::ApplyPropertiesToItem(this, core::mem::transmute_copy(&psisource)) {
                    Ok(ok__) => {
                        ppsinew.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetDefaultDestinationName<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psisource: *mut core::ffi::c_void, psiparentdest: *mut core::ffi::c_void, ppszdestinationname: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITransferSource_Impl::GetDefaultDestinationName(this, core::mem::transmute_copy(&psisource), core::mem::transmute_copy(&psiparentdest)) {
                    Ok(ok__) => {
                        ppszdestinationname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn EnterFolder<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psichildfolderdest: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferSource_Impl::EnterFolder(this, core::mem::transmute_copy(&psichildfolderdest)).into()
            }
        }
        unsafe extern "system" fn LeaveFolder<Identity: ITransferSource_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psichildfolderdest: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITransferSource_Impl::LeaveFolder(this, core::mem::transmute_copy(&psichildfolderdest)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Advise: Advise::<Identity, OFFSET>,
            Unadvise: Unadvise::<Identity, OFFSET>,
            SetProperties: SetProperties::<Identity, OFFSET>,
            OpenItem: OpenItem::<Identity, OFFSET>,
            MoveItem: MoveItem::<Identity, OFFSET>,
            RecycleItem: RecycleItem::<Identity, OFFSET>,
            RemoveItem: RemoveItem::<Identity, OFFSET>,
            RenameItem: RenameItem::<Identity, OFFSET>,
            LinkItem: LinkItem::<Identity, OFFSET>,
            ApplyPropertiesToItem: ApplyPropertiesToItem::<Identity, OFFSET>,
            GetDefaultDestinationName: GetDefaultDestinationName::<Identity, OFFSET>,
            EnterFolder: EnterFolder::<Identity, OFFSET>,
            LeaveFolder: LeaveFolder::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITransferSource as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_PropertiesSystem")]
impl windows_core::RuntimeName for ITransferSource {}
windows_core::imp::define_interface!(ITravelEntry, ITravelEntry_Vtbl, 0xf46edb3b_bc2f_11d0_9412_00aa00a3ebd3);
windows_core::imp::interface_hierarchy!(ITravelEntry, windows_core::IUnknown);
impl ITravelEntry {
    pub unsafe fn Invoke<P0>(&self, punk: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).Invoke)(windows_core::Interface::as_raw(self), punk.param().abi()).ok() }
    }
    pub unsafe fn Update<P0>(&self, punk: P0, fislocalanchor: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).Update)(windows_core::Interface::as_raw(self), punk.param().abi(), fislocalanchor.into()).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn GetPidl(&self) -> windows_core::Result<*mut Common::ITEMIDLIST> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPidl)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITravelEntry_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Invoke: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Update: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub GetPidl: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    GetPidl: usize,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait ITravelEntry_Impl: windows_core::IUnknownImpl {
    fn Invoke(&self, punk: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn Update(&self, punk: windows_core::Ref<windows_core::IUnknown>, fislocalanchor: windows_core::BOOL) -> windows_core::Result<()>;
    fn GetPidl(&self) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl ITravelEntry_Vtbl {
    pub const fn new<Identity: ITravelEntry_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Invoke<Identity: ITravelEntry_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelEntry_Impl::Invoke(this, core::mem::transmute_copy(&punk)).into()
            }
        }
        unsafe extern "system" fn Update<Identity: ITravelEntry_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, fislocalanchor: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelEntry_Impl::Update(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&fislocalanchor)).into()
            }
        }
        unsafe extern "system" fn GetPidl<Identity: ITravelEntry_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppidl: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelEntry_Impl::GetPidl(this) {
                    Ok(ok__) => {
                        ppidl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            Invoke: Invoke::<Identity, OFFSET>,
            Update: Update::<Identity, OFFSET>,
            GetPidl: GetPidl::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITravelEntry as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for ITravelEntry {}
windows_core::imp::define_interface!(ITravelLog, ITravelLog_Vtbl, 0x66a9cb08_4802_11d2_a561_00a0c92dbfe8);
windows_core::imp::interface_hierarchy!(ITravelLog, windows_core::IUnknown);
impl ITravelLog {
    pub unsafe fn AddEntry<P0>(&self, punk: P0, fislocalanchor: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).AddEntry)(windows_core::Interface::as_raw(self), punk.param().abi(), fislocalanchor.into()).ok() }
    }
    pub unsafe fn UpdateEntry<P0>(&self, punk: P0, fislocalanchor: bool) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateEntry)(windows_core::Interface::as_raw(self), punk.param().abi(), fislocalanchor.into()).ok() }
    }
    pub unsafe fn UpdateExternal<P0, P1>(&self, punk: P0, punkhlbrowsecontext: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
        P1: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).UpdateExternal)(windows_core::Interface::as_raw(self), punk.param().abi(), punkhlbrowsecontext.param().abi()).ok() }
    }
    pub unsafe fn Travel<P0>(&self, punk: P0, ioffset: i32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).Travel)(windows_core::Interface::as_raw(self), punk.param().abi(), ioffset).ok() }
    }
    pub unsafe fn GetTravelEntry<P0>(&self, punk: P0, ioffset: i32, ppte: Option<*mut Option<ITravelEntry>>) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetTravelEntry)(windows_core::Interface::as_raw(self), punk.param().abi(), ioffset, ppte.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub unsafe fn FindTravelEntry<P0>(&self, punk: P0, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<ITravelEntry>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindTravelEntry)(windows_core::Interface::as_raw(self), punk.param().abi(), pidl, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetToolTipText<P0>(&self, punk: P0, ioffset: i32, idstemplate: i32, pwztext: &mut [u16]) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetToolTipText)(windows_core::Interface::as_raw(self), punk.param().abi(), ioffset, idstemplate, core::mem::transmute(pwztext.as_ptr()), pwztext.len().try_into().unwrap()).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn InsertMenuEntries<P0>(&self, punk: P0, hmenu: super::WindowsAndMessaging::HMENU, npos: i32, idfirst: i32, idlast: i32, dwflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).InsertMenuEntries)(windows_core::Interface::as_raw(self), punk.param().abi(), hmenu, npos, idfirst, idlast, dwflags).ok() }
    }
    pub unsafe fn Clone(&self) -> windows_core::Result<ITravelLog> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Clone)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn CountEntries<P0>(&self, punk: P0) -> u32
    where
        P0: windows_core::Param<windows_core::IUnknown>,
    {
        unsafe { (windows_core::Interface::vtable(self).CountEntries)(windows_core::Interface::as_raw(self), punk.param().abi()) }
    }
    pub unsafe fn Revert(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Revert)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITravelLog_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub AddEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub UpdateEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, windows_core::BOOL) -> windows_core::HRESULT,
    pub UpdateExternal: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Travel: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub GetTravelEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_Shell_Common")]
    pub FindTravelEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Shell_Common"))]
    FindTravelEntry: usize,
    pub GetToolTipText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, i32, i32, windows_core::PWSTR, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub InsertMenuEntries: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::WindowsAndMessaging::HMENU, i32, i32, i32, u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    InsertMenuEntries: usize,
    pub Clone: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub CountEntries: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> u32,
    pub Revert: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
pub trait ITravelLog_Impl: windows_core::IUnknownImpl {
    fn AddEntry(&self, punk: windows_core::Ref<windows_core::IUnknown>, fislocalanchor: windows_core::BOOL) -> windows_core::Result<()>;
    fn UpdateEntry(&self, punk: windows_core::Ref<windows_core::IUnknown>, fislocalanchor: windows_core::BOOL) -> windows_core::Result<()>;
    fn UpdateExternal(&self, punk: windows_core::Ref<windows_core::IUnknown>, punkhlbrowsecontext: windows_core::Ref<windows_core::IUnknown>) -> windows_core::Result<()>;
    fn Travel(&self, punk: windows_core::Ref<windows_core::IUnknown>, ioffset: i32) -> windows_core::Result<()>;
    fn GetTravelEntry(&self, punk: windows_core::Ref<windows_core::IUnknown>, ioffset: i32, ppte: windows_core::OutRef<ITravelEntry>) -> windows_core::Result<()>;
    fn FindTravelEntry(&self, punk: windows_core::Ref<windows_core::IUnknown>, pidl: *const Common::ITEMIDLIST) -> windows_core::Result<ITravelEntry>;
    fn GetToolTipText(&self, punk: windows_core::Ref<windows_core::IUnknown>, ioffset: i32, idstemplate: i32, pwztext: windows_core::PWSTR, cchtext: u32) -> windows_core::Result<()>;
    fn InsertMenuEntries(&self, punk: windows_core::Ref<windows_core::IUnknown>, hmenu: super::WindowsAndMessaging::HMENU, npos: i32, idfirst: i32, idlast: i32, dwflags: u32) -> windows_core::Result<()>;
    fn Clone(&self) -> windows_core::Result<ITravelLog>;
    fn CountEntries(&self, punk: windows_core::Ref<windows_core::IUnknown>) -> u32;
    fn Revert(&self) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl ITravelLog_Vtbl {
    pub const fn new<Identity: ITravelLog_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddEntry<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, fislocalanchor: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLog_Impl::AddEntry(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&fislocalanchor)).into()
            }
        }
        unsafe extern "system" fn UpdateEntry<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, fislocalanchor: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLog_Impl::UpdateEntry(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&fislocalanchor)).into()
            }
        }
        unsafe extern "system" fn UpdateExternal<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, punkhlbrowsecontext: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLog_Impl::UpdateExternal(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&punkhlbrowsecontext)).into()
            }
        }
        unsafe extern "system" fn Travel<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, ioffset: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLog_Impl::Travel(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&ioffset)).into()
            }
        }
        unsafe extern "system" fn GetTravelEntry<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, ioffset: i32, ppte: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLog_Impl::GetTravelEntry(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&ioffset), core::mem::transmute_copy(&ppte)).into()
            }
        }
        unsafe extern "system" fn FindTravelEntry<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, pidl: *const Common::ITEMIDLIST, ppte: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelLog_Impl::FindTravelEntry(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&pidl)) {
                    Ok(ok__) => {
                        ppte.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetToolTipText<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, ioffset: i32, idstemplate: i32, pwztext: windows_core::PWSTR, cchtext: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLog_Impl::GetToolTipText(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&ioffset), core::mem::transmute_copy(&idstemplate), core::mem::transmute_copy(&pwztext), core::mem::transmute_copy(&cchtext)).into()
            }
        }
        unsafe extern "system" fn InsertMenuEntries<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void, hmenu: super::WindowsAndMessaging::HMENU, npos: i32, idfirst: i32, idlast: i32, dwflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLog_Impl::InsertMenuEntries(this, core::mem::transmute_copy(&punk), core::mem::transmute_copy(&hmenu), core::mem::transmute_copy(&npos), core::mem::transmute_copy(&idfirst), core::mem::transmute_copy(&idlast), core::mem::transmute_copy(&dwflags)).into()
            }
        }
        unsafe extern "system" fn Clone<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pptl: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelLog_Impl::Clone(this) {
                    Ok(ok__) => {
                        pptl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn CountEntries<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, punk: *mut core::ffi::c_void) -> u32 {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLog_Impl::CountEntries(this, core::mem::transmute_copy(&punk))
            }
        }
        unsafe extern "system" fn Revert<Identity: ITravelLog_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLog_Impl::Revert(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddEntry: AddEntry::<Identity, OFFSET>,
            UpdateEntry: UpdateEntry::<Identity, OFFSET>,
            UpdateExternal: UpdateExternal::<Identity, OFFSET>,
            Travel: Travel::<Identity, OFFSET>,
            GetTravelEntry: GetTravelEntry::<Identity, OFFSET>,
            FindTravelEntry: FindTravelEntry::<Identity, OFFSET>,
            GetToolTipText: GetToolTipText::<Identity, OFFSET>,
            InsertMenuEntries: InsertMenuEntries::<Identity, OFFSET>,
            Clone: Clone::<Identity, OFFSET>,
            CountEntries: CountEntries::<Identity, OFFSET>,
            Revert: Revert::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITravelLog as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl windows_core::RuntimeName for ITravelLog {}
windows_core::imp::define_interface!(ITravelLogClient, ITravelLogClient_Vtbl, 0x241c033e_e659_43da_aa4d_4086dbc4758d);
windows_core::imp::interface_hierarchy!(ITravelLogClient, windows_core::IUnknown);
impl ITravelLogClient {
    pub unsafe fn FindWindowByIndex(&self, dwid: u32) -> windows_core::Result<windows_core::IUnknown> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindWindowByIndex)(windows_core::Interface::as_raw(self), dwid, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn GetWindowData<P0>(&self, pstream: P0, pwindata: *mut WINDOWDATA) -> windows_core::Result<()>
    where
        P0: windows_core::Param<super::super::System::Com::IStream>,
    {
        unsafe { (windows_core::Interface::vtable(self).GetWindowData)(windows_core::Interface::as_raw(self), pstream.param().abi(), pwindata as _).ok() }
    }
    pub unsafe fn LoadHistoryPosition<P0>(&self, pszurllocation: P0, dwposition: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).LoadHistoryPosition)(windows_core::Interface::as_raw(self), pszurllocation.param().abi(), dwposition).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITravelLogClient_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub FindWindowByIndex: unsafe extern "system" fn(*mut core::ffi::c_void, u32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub GetWindowData: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut WINDOWDATA) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common")))]
    GetWindowData: usize,
    pub LoadHistoryPosition: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait ITravelLogClient_Impl: windows_core::IUnknownImpl {
    fn FindWindowByIndex(&self, dwid: u32) -> windows_core::Result<windows_core::IUnknown>;
    fn GetWindowData(&self, pstream: windows_core::Ref<super::super::System::Com::IStream>, pwindata: *mut WINDOWDATA) -> windows_core::Result<()>;
    fn LoadHistoryPosition(&self, pszurllocation: &windows_core::PCWSTR, dwposition: u32) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl ITravelLogClient_Vtbl {
    pub const fn new<Identity: ITravelLogClient_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn FindWindowByIndex<Identity: ITravelLogClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwid: u32, ppunk: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelLogClient_Impl::FindWindowByIndex(this, core::mem::transmute_copy(&dwid)) {
                    Ok(ok__) => {
                        ppunk.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetWindowData<Identity: ITravelLogClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pstream: *mut core::ffi::c_void, pwindata: *mut WINDOWDATA) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLogClient_Impl::GetWindowData(this, core::mem::transmute_copy(&pstream), core::mem::transmute_copy(&pwindata)).into()
            }
        }
        unsafe extern "system" fn LoadHistoryPosition<Identity: ITravelLogClient_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszurllocation: windows_core::PCWSTR, dwposition: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLogClient_Impl::LoadHistoryPosition(this, core::mem::transmute(&pszurllocation), core::mem::transmute_copy(&dwposition)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            FindWindowByIndex: FindWindowByIndex::<Identity, OFFSET>,
            GetWindowData: GetWindowData::<Identity, OFFSET>,
            LoadHistoryPosition: LoadHistoryPosition::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITravelLogClient as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for ITravelLogClient {}
windows_core::imp::define_interface!(ITravelLogEntry, ITravelLogEntry_Vtbl, 0x7ebfdd87_ad18_11d3_a4c5_00c04f72d6b8);
windows_core::imp::interface_hierarchy!(ITravelLogEntry, windows_core::IUnknown);
impl ITravelLogEntry {
    pub unsafe fn GetTitle(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetTitle)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetURL(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetURL)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITravelLogEntry_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub GetTitle: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub GetURL: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
}
pub trait ITravelLogEntry_Impl: windows_core::IUnknownImpl {
    fn GetTitle(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn GetURL(&self) -> windows_core::Result<windows_core::PWSTR>;
}
impl ITravelLogEntry_Vtbl {
    pub const fn new<Identity: ITravelLogEntry_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetTitle<Identity: ITravelLogEntry_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppsztitle: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelLogEntry_Impl::GetTitle(this) {
                    Ok(ok__) => {
                        ppsztitle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetURL<Identity: ITravelLogEntry_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszurl: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelLogEntry_Impl::GetURL(this) {
                    Ok(ok__) => {
                        ppszurl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), GetTitle: GetTitle::<Identity, OFFSET>, GetURL: GetURL::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITravelLogEntry as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ITravelLogEntry {}
windows_core::imp::define_interface!(ITravelLogStg, ITravelLogStg_Vtbl, 0x7ebfdd80_ad18_11d3_a4c5_00c04f72d6b8);
windows_core::imp::interface_hierarchy!(ITravelLogStg, windows_core::IUnknown);
impl ITravelLogStg {
    pub unsafe fn CreateEntry<P0, P1, P2>(&self, pszurl: P0, psztitle: P1, ptlerelativeto: P2, fprepend: bool) -> windows_core::Result<ITravelLogEntry>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
        P2: windows_core::Param<ITravelLogEntry>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).CreateEntry)(windows_core::Interface::as_raw(self), pszurl.param().abi(), psztitle.param().abi(), ptlerelativeto.param().abi(), fprepend.into(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn TravelTo<P0>(&self, ptle: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITravelLogEntry>,
    {
        unsafe { (windows_core::Interface::vtable(self).TravelTo)(windows_core::Interface::as_raw(self), ptle.param().abi()).ok() }
    }
    pub unsafe fn EnumEntries(&self, flags: TLENUMF) -> windows_core::Result<IEnumTravelLogEntry> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).EnumEntries)(windows_core::Interface::as_raw(self), flags, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn FindEntries<P1>(&self, flags: TLENUMF, pszurl: P1) -> windows_core::Result<IEnumTravelLogEntry>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FindEntries)(windows_core::Interface::as_raw(self), flags, pszurl.param().abi(), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn GetCount(&self, flags: TLENUMF) -> windows_core::Result<u32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCount)(windows_core::Interface::as_raw(self), flags, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn RemoveEntry<P0>(&self, ptle: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<ITravelLogEntry>,
    {
        unsafe { (windows_core::Interface::vtable(self).RemoveEntry)(windows_core::Interface::as_raw(self), ptle.param().abi()).ok() }
    }
    pub unsafe fn GetRelativeEntry(&self, ioffset: i32) -> windows_core::Result<ITravelLogEntry> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetRelativeEntry)(windows_core::Interface::as_raw(self), ioffset, &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITravelLogStg_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub CreateEntry: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, *mut core::ffi::c_void, windows_core::BOOL, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TravelTo: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub EnumEntries: unsafe extern "system" fn(*mut core::ffi::c_void, TLENUMF, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FindEntries: unsafe extern "system" fn(*mut core::ffi::c_void, TLENUMF, windows_core::PCWSTR, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetCount: unsafe extern "system" fn(*mut core::ffi::c_void, TLENUMF, *mut u32) -> windows_core::HRESULT,
    pub RemoveEntry: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GetRelativeEntry: unsafe extern "system" fn(*mut core::ffi::c_void, i32, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ITravelLogStg_Impl: windows_core::IUnknownImpl {
    fn CreateEntry(&self, pszurl: &windows_core::PCWSTR, psztitle: &windows_core::PCWSTR, ptlerelativeto: windows_core::Ref<ITravelLogEntry>, fprepend: windows_core::BOOL) -> windows_core::Result<ITravelLogEntry>;
    fn TravelTo(&self, ptle: windows_core::Ref<ITravelLogEntry>) -> windows_core::Result<()>;
    fn EnumEntries(&self, flags: TLENUMF) -> windows_core::Result<IEnumTravelLogEntry>;
    fn FindEntries(&self, flags: TLENUMF, pszurl: &windows_core::PCWSTR) -> windows_core::Result<IEnumTravelLogEntry>;
    fn GetCount(&self, flags: TLENUMF) -> windows_core::Result<u32>;
    fn RemoveEntry(&self, ptle: windows_core::Ref<ITravelLogEntry>) -> windows_core::Result<()>;
    fn GetRelativeEntry(&self, ioffset: i32) -> windows_core::Result<ITravelLogEntry>;
}
impl ITravelLogStg_Vtbl {
    pub const fn new<Identity: ITravelLogStg_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn CreateEntry<Identity: ITravelLogStg_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszurl: windows_core::PCWSTR, psztitle: windows_core::PCWSTR, ptlerelativeto: *mut core::ffi::c_void, fprepend: windows_core::BOOL, pptle: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelLogStg_Impl::CreateEntry(this, core::mem::transmute(&pszurl), core::mem::transmute(&psztitle), core::mem::transmute_copy(&ptlerelativeto), core::mem::transmute_copy(&fprepend)) {
                    Ok(ok__) => {
                        pptle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn TravelTo<Identity: ITravelLogStg_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptle: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLogStg_Impl::TravelTo(this, core::mem::transmute_copy(&ptle)).into()
            }
        }
        unsafe extern "system" fn EnumEntries<Identity: ITravelLogStg_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: TLENUMF, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelLogStg_Impl::EnumEntries(this, core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FindEntries<Identity: ITravelLogStg_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: TLENUMF, pszurl: windows_core::PCWSTR, ppenum: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelLogStg_Impl::FindEntries(this, core::mem::transmute_copy(&flags), core::mem::transmute(&pszurl)) {
                    Ok(ok__) => {
                        ppenum.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCount<Identity: ITravelLogStg_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, flags: TLENUMF, pcentries: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelLogStg_Impl::GetCount(this, core::mem::transmute_copy(&flags)) {
                    Ok(ok__) => {
                        pcentries.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn RemoveEntry<Identity: ITravelLogStg_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ptle: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITravelLogStg_Impl::RemoveEntry(this, core::mem::transmute_copy(&ptle)).into()
            }
        }
        unsafe extern "system" fn GetRelativeEntry<Identity: ITravelLogStg_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ioffset: i32, ptle: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match ITravelLogStg_Impl::GetRelativeEntry(this, core::mem::transmute_copy(&ioffset)) {
                    Ok(ok__) => {
                        ptle.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            CreateEntry: CreateEntry::<Identity, OFFSET>,
            TravelTo: TravelTo::<Identity, OFFSET>,
            EnumEntries: EnumEntries::<Identity, OFFSET>,
            FindEntries: FindEntries::<Identity, OFFSET>,
            GetCount: GetCount::<Identity, OFFSET>,
            RemoveEntry: RemoveEntry::<Identity, OFFSET>,
            GetRelativeEntry: GetRelativeEntry::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITravelLogStg as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ITravelLogStg {}
windows_core::imp::define_interface!(ITrayDeskBand, ITrayDeskBand_Vtbl, 0x6d67e846_5b9c_4db8_9cbc_dde12f4254f1);
windows_core::imp::interface_hierarchy!(ITrayDeskBand, windows_core::IUnknown);
impl ITrayDeskBand {
    pub unsafe fn ShowDeskBand(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowDeskBand)(windows_core::Interface::as_raw(self), clsid).ok() }
    }
    pub unsafe fn HideDeskBand(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).HideDeskBand)(windows_core::Interface::as_raw(self), clsid).ok() }
    }
    pub unsafe fn IsDeskBandShown(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).IsDeskBandShown)(windows_core::Interface::as_raw(self), clsid).ok() }
    }
    pub unsafe fn DeskBandRegistrationChanged(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).DeskBandRegistrationChanged)(windows_core::Interface::as_raw(self)).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct ITrayDeskBand_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub ShowDeskBand: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub HideDeskBand: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub IsDeskBandShown: unsafe extern "system" fn(*mut core::ffi::c_void, *const windows_core::GUID) -> windows_core::HRESULT,
    pub DeskBandRegistrationChanged: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait ITrayDeskBand_Impl: windows_core::IUnknownImpl {
    fn ShowDeskBand(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn HideDeskBand(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn IsDeskBandShown(&self, clsid: *const windows_core::GUID) -> windows_core::Result<()>;
    fn DeskBandRegistrationChanged(&self) -> windows_core::Result<()>;
}
impl ITrayDeskBand_Vtbl {
    pub const fn new<Identity: ITrayDeskBand_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn ShowDeskBand<Identity: ITrayDeskBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITrayDeskBand_Impl::ShowDeskBand(this, core::mem::transmute_copy(&clsid)).into()
            }
        }
        unsafe extern "system" fn HideDeskBand<Identity: ITrayDeskBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITrayDeskBand_Impl::HideDeskBand(this, core::mem::transmute_copy(&clsid)).into()
            }
        }
        unsafe extern "system" fn IsDeskBandShown<Identity: ITrayDeskBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, clsid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITrayDeskBand_Impl::IsDeskBandShown(this, core::mem::transmute_copy(&clsid)).into()
            }
        }
        unsafe extern "system" fn DeskBandRegistrationChanged<Identity: ITrayDeskBand_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                ITrayDeskBand_Impl::DeskBandRegistrationChanged(this).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            ShowDeskBand: ShowDeskBand::<Identity, OFFSET>,
            HideDeskBand: HideDeskBand::<Identity, OFFSET>,
            IsDeskBandShown: IsDeskBandShown::<Identity, OFFSET>,
            DeskBandRegistrationChanged: DeskBandRegistrationChanged::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<ITrayDeskBand as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for ITrayDeskBand {}
windows_core::imp::define_interface!(IURLSearchHook, IURLSearchHook_Vtbl, 0xac60f6a0_0fd9_11d0_99cb_00c04fd64497);
windows_core::imp::interface_hierarchy!(IURLSearchHook, windows_core::IUnknown);
impl IURLSearchHook {
    pub unsafe fn Translate(&self, pwszsearchurl: &mut [u16]) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Translate)(windows_core::Interface::as_raw(self), core::mem::transmute(pwszsearchurl.as_ptr()), pwszsearchurl.len().try_into().unwrap()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IURLSearchHook_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub Translate: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32) -> windows_core::HRESULT,
}
pub trait IURLSearchHook_Impl: windows_core::IUnknownImpl {
    fn Translate(&self, pwszsearchurl: windows_core::PWSTR, cchbuffersize: u32) -> windows_core::Result<()>;
}
impl IURLSearchHook_Vtbl {
    pub const fn new<Identity: IURLSearchHook_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Translate<Identity: IURLSearchHook_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszsearchurl: windows_core::PWSTR, cchbuffersize: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IURLSearchHook_Impl::Translate(this, core::mem::transmute_copy(&pwszsearchurl), core::mem::transmute_copy(&cchbuffersize)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Translate: Translate::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IURLSearchHook as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IURLSearchHook {}
windows_core::imp::define_interface!(IURLSearchHook2, IURLSearchHook2_Vtbl, 0x5ee44da4_6d32_46e3_86bc_07540dedd0e0);
impl core::ops::Deref for IURLSearchHook2 {
    type Target = IURLSearchHook;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IURLSearchHook2, windows_core::IUnknown, IURLSearchHook);
impl IURLSearchHook2 {
    pub unsafe fn TranslateWithSearchContext<P2>(&self, pwszsearchurl: &mut [u16], psearchcontext: P2) -> windows_core::Result<()>
    where
        P2: windows_core::Param<ISearchContext>,
    {
        unsafe { (windows_core::Interface::vtable(self).TranslateWithSearchContext)(windows_core::Interface::as_raw(self), core::mem::transmute(pwszsearchurl.as_ptr()), pwszsearchurl.len().try_into().unwrap(), psearchcontext.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IURLSearchHook2_Vtbl {
    pub base__: IURLSearchHook_Vtbl,
    pub TranslateWithSearchContext: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PWSTR, u32, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
pub trait IURLSearchHook2_Impl: IURLSearchHook_Impl {
    fn TranslateWithSearchContext(&self, pwszsearchurl: windows_core::PWSTR, cchbuffersize: u32, psearchcontext: windows_core::Ref<ISearchContext>) -> windows_core::Result<()>;
}
impl IURLSearchHook2_Vtbl {
    pub const fn new<Identity: IURLSearchHook2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn TranslateWithSearchContext<Identity: IURLSearchHook2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pwszsearchurl: windows_core::PWSTR, cchbuffersize: u32, psearchcontext: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IURLSearchHook2_Impl::TranslateWithSearchContext(this, core::mem::transmute_copy(&pwszsearchurl), core::mem::transmute_copy(&cchbuffersize), core::mem::transmute_copy(&psearchcontext)).into()
            }
        }
        Self { base__: IURLSearchHook_Vtbl::new::<Identity, OFFSET>(), TranslateWithSearchContext: TranslateWithSearchContext::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IURLSearchHook2 as windows_core::Interface>::IID || iid == &<IURLSearchHook as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IURLSearchHook2 {}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct IURL_INVOKECOMMAND_FLAGS(pub i32);
pub const IURL_INVOKECOMMAND_FL_ALLOW_UI: IURL_INVOKECOMMAND_FLAGS = IURL_INVOKECOMMAND_FLAGS(1i32);
pub const IURL_INVOKECOMMAND_FL_ASYNCOK: IURL_INVOKECOMMAND_FLAGS = IURL_INVOKECOMMAND_FLAGS(8i32);
pub const IURL_INVOKECOMMAND_FL_DDEWAIT: IURL_INVOKECOMMAND_FLAGS = IURL_INVOKECOMMAND_FLAGS(4i32);
pub const IURL_INVOKECOMMAND_FL_LOG_USAGE: IURL_INVOKECOMMAND_FLAGS = IURL_INVOKECOMMAND_FLAGS(16i32);
pub const IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB: IURL_INVOKECOMMAND_FLAGS = IURL_INVOKECOMMAND_FLAGS(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct IURL_SETURL_FLAGS(pub i32);
pub const IURL_SETURL_FL_GUESS_PROTOCOL: IURL_SETURL_FLAGS = IURL_SETURL_FLAGS(1i32);
pub const IURL_SETURL_FL_USE_DEFAULT_PROTOCOL: IURL_SETURL_FLAGS = IURL_SETURL_FLAGS(2i32);
windows_core::imp::define_interface!(IUniformResourceLocatorA, IUniformResourceLocatorA_Vtbl, 0xfbf23b80_e3f0_101b_8488_00aa003e56f8);
windows_core::imp::interface_hierarchy!(IUniformResourceLocatorA, windows_core::IUnknown);
impl IUniformResourceLocatorA {
    pub unsafe fn SetURL<P0>(&self, pcszurl: P0, dwinflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetURL)(windows_core::Interface::as_raw(self), pcszurl.param().abi(), dwinflags).ok() }
    }
    pub unsafe fn GetURL(&self) -> windows_core::Result<windows_core::PSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetURL)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn InvokeCommand(&self, purlici: *mut URLINVOKECOMMANDINFOA) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InvokeCommand)(windows_core::Interface::as_raw(self), purlici as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IUniformResourceLocatorA_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetURL: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCSTR, u32) -> windows_core::HRESULT,
    pub GetURL: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PSTR) -> windows_core::HRESULT,
    pub InvokeCommand: unsafe extern "system" fn(*mut core::ffi::c_void, *mut URLINVOKECOMMANDINFOA) -> windows_core::HRESULT,
}
pub trait IUniformResourceLocatorA_Impl: windows_core::IUnknownImpl {
    fn SetURL(&self, pcszurl: &windows_core::PCSTR, dwinflags: u32) -> windows_core::Result<()>;
    fn GetURL(&self) -> windows_core::Result<windows_core::PSTR>;
    fn InvokeCommand(&self, purlici: *mut URLINVOKECOMMANDINFOA) -> windows_core::Result<()>;
}
impl IUniformResourceLocatorA_Vtbl {
    pub const fn new<Identity: IUniformResourceLocatorA_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetURL<Identity: IUniformResourceLocatorA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszurl: windows_core::PCSTR, dwinflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUniformResourceLocatorA_Impl::SetURL(this, core::mem::transmute(&pcszurl), core::mem::transmute_copy(&dwinflags)).into()
            }
        }
        unsafe extern "system" fn GetURL<Identity: IUniformResourceLocatorA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszurl: *mut windows_core::PSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IUniformResourceLocatorA_Impl::GetURL(this) {
                    Ok(ok__) => {
                        ppszurl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn InvokeCommand<Identity: IUniformResourceLocatorA_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, purlici: *mut URLINVOKECOMMANDINFOA) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUniformResourceLocatorA_Impl::InvokeCommand(this, core::mem::transmute_copy(&purlici)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetURL: SetURL::<Identity, OFFSET>,
            GetURL: GetURL::<Identity, OFFSET>,
            InvokeCommand: InvokeCommand::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUniformResourceLocatorA as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IUniformResourceLocatorA {}
windows_core::imp::define_interface!(IUniformResourceLocatorW, IUniformResourceLocatorW_Vtbl, 0xcabb0da0_da57_11cf_9974_0020afd79762);
windows_core::imp::interface_hierarchy!(IUniformResourceLocatorW, windows_core::IUnknown);
impl IUniformResourceLocatorW {
    pub unsafe fn SetURL<P0>(&self, pcszurl: P0, dwinflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetURL)(windows_core::Interface::as_raw(self), pcszurl.param().abi(), dwinflags).ok() }
    }
    pub unsafe fn GetURL(&self) -> windows_core::Result<windows_core::PWSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetURL)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn InvokeCommand(&self, purlici: *mut URLINVOKECOMMANDINFOW) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).InvokeCommand)(windows_core::Interface::as_raw(self), purlici as _).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IUniformResourceLocatorW_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetURL: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub GetURL: unsafe extern "system" fn(*mut core::ffi::c_void, *mut windows_core::PWSTR) -> windows_core::HRESULT,
    pub InvokeCommand: unsafe extern "system" fn(*mut core::ffi::c_void, *mut URLINVOKECOMMANDINFOW) -> windows_core::HRESULT,
}
pub trait IUniformResourceLocatorW_Impl: windows_core::IUnknownImpl {
    fn SetURL(&self, pcszurl: &windows_core::PCWSTR, dwinflags: u32) -> windows_core::Result<()>;
    fn GetURL(&self) -> windows_core::Result<windows_core::PWSTR>;
    fn InvokeCommand(&self, purlici: *mut URLINVOKECOMMANDINFOW) -> windows_core::Result<()>;
}
impl IUniformResourceLocatorW_Vtbl {
    pub const fn new<Identity: IUniformResourceLocatorW_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetURL<Identity: IUniformResourceLocatorW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcszurl: windows_core::PCWSTR, dwinflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUniformResourceLocatorW_Impl::SetURL(this, core::mem::transmute(&pcszurl), core::mem::transmute_copy(&dwinflags)).into()
            }
        }
        unsafe extern "system" fn GetURL<Identity: IUniformResourceLocatorW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppszurl: *mut windows_core::PWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IUniformResourceLocatorW_Impl::GetURL(this) {
                    Ok(ok__) => {
                        ppszurl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn InvokeCommand<Identity: IUniformResourceLocatorW_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, purlici: *mut URLINVOKECOMMANDINFOW) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUniformResourceLocatorW_Impl::InvokeCommand(this, core::mem::transmute_copy(&purlici)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetURL: SetURL::<Identity, OFFSET>,
            GetURL: GetURL::<Identity, OFFSET>,
            InvokeCommand: InvokeCommand::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUniformResourceLocatorW as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IUniformResourceLocatorW {}
windows_core::imp::define_interface!(IUpdateIDList, IUpdateIDList_Vtbl, 0x6589b6d2_5f8d_4b9e_b7e0_23cdd9717d8c);
windows_core::imp::interface_hierarchy!(IUpdateIDList, windows_core::IUnknown);
impl IUpdateIDList {
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub unsafe fn Update<P0>(&self, pbc: P0, pidlin: *const Common::ITEMIDLIST) -> windows_core::Result<*mut Common::ITEMIDLIST>
    where
        P0: windows_core::Param<super::super::System::Com::IBindCtx>,
    {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Update)(windows_core::Interface::as_raw(self), pbc.param().abi(), pidlin, &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IUpdateIDList_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
    pub Update: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const Common::ITEMIDLIST, *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common")))]
    Update: usize,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
pub trait IUpdateIDList_Impl: windows_core::IUnknownImpl {
    fn Update(&self, pbc: windows_core::Ref<super::super::System::Com::IBindCtx>, pidlin: *const Common::ITEMIDLIST) -> windows_core::Result<*mut Common::ITEMIDLIST>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl IUpdateIDList_Vtbl {
    pub const fn new<Identity: IUpdateIDList_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Update<Identity: IUpdateIDList_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbc: *mut core::ffi::c_void, pidlin: *const Common::ITEMIDLIST, ppidlout: *mut *mut Common::ITEMIDLIST) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IUpdateIDList_Impl::Update(this, core::mem::transmute_copy(&pbc), core::mem::transmute_copy(&pidlin)) {
                    Ok(ok__) => {
                        ppidlout.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), Update: Update::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUpdateIDList as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_UI_Shell_Common"))]
impl windows_core::RuntimeName for IUpdateIDList {}
windows_core::imp::define_interface!(IUseToBrowseItem, IUseToBrowseItem_Vtbl, 0x05edda5c_98a3_4717_8adb_c5e7da991eb1);
impl core::ops::Deref for IUseToBrowseItem {
    type Target = IRelatedItem;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IUseToBrowseItem, windows_core::IUnknown, IRelatedItem);
#[repr(C)]
#[doc(hidden)]
pub struct IUseToBrowseItem_Vtbl {
    pub base__: IRelatedItem_Vtbl,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IUseToBrowseItem_Impl: IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IUseToBrowseItem_Vtbl {
    pub const fn new<Identity: IUseToBrowseItem_Impl, const OFFSET: isize>() -> Self {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUseToBrowseItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IUseToBrowseItem {}
windows_core::imp::define_interface!(IUserAccountChangeCallback, IUserAccountChangeCallback_Vtbl, 0xa561e69a_b4b8_4113_91a5_64c6bcca3430);
windows_core::imp::interface_hierarchy!(IUserAccountChangeCallback, windows_core::IUnknown);
impl IUserAccountChangeCallback {
    pub unsafe fn OnPictureChange<P0>(&self, pszusername: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).OnPictureChange)(windows_core::Interface::as_raw(self), pszusername.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IUserAccountChangeCallback_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnPictureChange: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
pub trait IUserAccountChangeCallback_Impl: windows_core::IUnknownImpl {
    fn OnPictureChange(&self, pszusername: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
impl IUserAccountChangeCallback_Vtbl {
    pub const fn new<Identity: IUserAccountChangeCallback_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnPictureChange<Identity: IUserAccountChangeCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszusername: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserAccountChangeCallback_Impl::OnPictureChange(this, core::mem::transmute(&pszusername)).into()
            }
        }
        Self { base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(), OnPictureChange: OnPictureChange::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUserAccountChangeCallback as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IUserAccountChangeCallback {}
windows_core::imp::define_interface!(IUserNotification, IUserNotification_Vtbl, 0xba9711ba_5893_4787_a7e1_41277151550b);
windows_core::imp::interface_hierarchy!(IUserNotification, windows_core::IUnknown);
impl IUserNotification {
    pub unsafe fn SetBalloonInfo<P0, P1>(&self, psztitle: P0, psztext: P1, dwinfoflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetBalloonInfo)(windows_core::Interface::as_raw(self), psztitle.param().abi(), psztext.param().abi(), dwinfoflags).ok() }
    }
    pub unsafe fn SetBalloonRetry(&self, dwshowtime: u32, dwinterval: u32, cretrycount: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetBalloonRetry)(windows_core::Interface::as_raw(self), dwshowtime, dwinterval, cretrycount).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn SetIconInfo<P1>(&self, hicon: super::WindowsAndMessaging::HICON, psztooltip: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetIconInfo)(windows_core::Interface::as_raw(self), hicon, psztooltip.param().abi()).ok() }
    }
    pub unsafe fn Show<P0>(&self, pqc: P0, dwcontinuepollinterval: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IQueryContinue>,
    {
        unsafe { (windows_core::Interface::vtable(self).Show)(windows_core::Interface::as_raw(self), pqc.param().abi(), dwcontinuepollinterval).ok() }
    }
    pub unsafe fn PlaySound<P0>(&self, pszsoundname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).PlaySound)(windows_core::Interface::as_raw(self), pszsoundname.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IUserNotification_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetBalloonInfo: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub SetBalloonRetry: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub SetIconInfo: unsafe extern "system" fn(*mut core::ffi::c_void, super::WindowsAndMessaging::HICON, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    SetIconInfo: usize,
    pub Show: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32) -> windows_core::HRESULT,
    pub PlaySound: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IUserNotification_Impl: windows_core::IUnknownImpl {
    fn SetBalloonInfo(&self, psztitle: &windows_core::PCWSTR, psztext: &windows_core::PCWSTR, dwinfoflags: u32) -> windows_core::Result<()>;
    fn SetBalloonRetry(&self, dwshowtime: u32, dwinterval: u32, cretrycount: u32) -> windows_core::Result<()>;
    fn SetIconInfo(&self, hicon: super::WindowsAndMessaging::HICON, psztooltip: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Show(&self, pqc: windows_core::Ref<IQueryContinue>, dwcontinuepollinterval: u32) -> windows_core::Result<()>;
    fn PlaySound(&self, pszsoundname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IUserNotification_Vtbl {
    pub const fn new<Identity: IUserNotification_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetBalloonInfo<Identity: IUserNotification_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztitle: windows_core::PCWSTR, psztext: windows_core::PCWSTR, dwinfoflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotification_Impl::SetBalloonInfo(this, core::mem::transmute(&psztitle), core::mem::transmute(&psztext), core::mem::transmute_copy(&dwinfoflags)).into()
            }
        }
        unsafe extern "system" fn SetBalloonRetry<Identity: IUserNotification_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwshowtime: u32, dwinterval: u32, cretrycount: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotification_Impl::SetBalloonRetry(this, core::mem::transmute_copy(&dwshowtime), core::mem::transmute_copy(&dwinterval), core::mem::transmute_copy(&cretrycount)).into()
            }
        }
        unsafe extern "system" fn SetIconInfo<Identity: IUserNotification_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hicon: super::WindowsAndMessaging::HICON, psztooltip: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotification_Impl::SetIconInfo(this, core::mem::transmute_copy(&hicon), core::mem::transmute(&psztooltip)).into()
            }
        }
        unsafe extern "system" fn Show<Identity: IUserNotification_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pqc: *mut core::ffi::c_void, dwcontinuepollinterval: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotification_Impl::Show(this, core::mem::transmute_copy(&pqc), core::mem::transmute_copy(&dwcontinuepollinterval)).into()
            }
        }
        unsafe extern "system" fn PlaySound<Identity: IUserNotification_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszsoundname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotification_Impl::PlaySound(this, core::mem::transmute(&pszsoundname)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBalloonInfo: SetBalloonInfo::<Identity, OFFSET>,
            SetBalloonRetry: SetBalloonRetry::<Identity, OFFSET>,
            SetIconInfo: SetIconInfo::<Identity, OFFSET>,
            Show: Show::<Identity, OFFSET>,
            PlaySound: PlaySound::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUserNotification as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IUserNotification {}
windows_core::imp::define_interface!(IUserNotification2, IUserNotification2_Vtbl, 0x215913cc_57eb_4fab_ab5a_e5fa7bea2a6c);
windows_core::imp::interface_hierarchy!(IUserNotification2, windows_core::IUnknown);
impl IUserNotification2 {
    pub unsafe fn SetBalloonInfo<P0, P1>(&self, psztitle: P0, psztext: P1, dwinfoflags: u32) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetBalloonInfo)(windows_core::Interface::as_raw(self), psztitle.param().abi(), psztext.param().abi(), dwinfoflags).ok() }
    }
    pub unsafe fn SetBalloonRetry(&self, dwshowtime: u32, dwinterval: u32, cretrycount: u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetBalloonRetry)(windows_core::Interface::as_raw(self), dwshowtime, dwinterval, cretrycount).ok() }
    }
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub unsafe fn SetIconInfo<P1>(&self, hicon: super::WindowsAndMessaging::HICON, psztooltip: P1) -> windows_core::Result<()>
    where
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetIconInfo)(windows_core::Interface::as_raw(self), hicon, psztooltip.param().abi()).ok() }
    }
    pub unsafe fn Show<P0, P2>(&self, pqc: P0, dwcontinuepollinterval: u32, psink: P2) -> windows_core::Result<()>
    where
        P0: windows_core::Param<IQueryContinue>,
        P2: windows_core::Param<IUserNotificationCallback>,
    {
        unsafe { (windows_core::Interface::vtable(self).Show)(windows_core::Interface::as_raw(self), pqc.param().abi(), dwcontinuepollinterval, psink.param().abi()).ok() }
    }
    pub unsafe fn PlaySound<P0>(&self, pszsoundname: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).PlaySound)(windows_core::Interface::as_raw(self), pszsoundname.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IUserNotification2_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub SetBalloonInfo: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR, u32) -> windows_core::HRESULT,
    pub SetBalloonRetry: unsafe extern "system" fn(*mut core::ffi::c_void, u32, u32, u32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_UI_WindowsAndMessaging")]
    pub SetIconInfo: unsafe extern "system" fn(*mut core::ffi::c_void, super::WindowsAndMessaging::HICON, windows_core::PCWSTR) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_WindowsAndMessaging"))]
    SetIconInfo: usize,
    pub Show: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, u32, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub PlaySound: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
pub trait IUserNotification2_Impl: windows_core::IUnknownImpl {
    fn SetBalloonInfo(&self, psztitle: &windows_core::PCWSTR, psztext: &windows_core::PCWSTR, dwinfoflags: u32) -> windows_core::Result<()>;
    fn SetBalloonRetry(&self, dwshowtime: u32, dwinterval: u32, cretrycount: u32) -> windows_core::Result<()>;
    fn SetIconInfo(&self, hicon: super::WindowsAndMessaging::HICON, psztooltip: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn Show(&self, pqc: windows_core::Ref<IQueryContinue>, dwcontinuepollinterval: u32, psink: windows_core::Ref<IUserNotificationCallback>) -> windows_core::Result<()>;
    fn PlaySound(&self, pszsoundname: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl IUserNotification2_Vtbl {
    pub const fn new<Identity: IUserNotification2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetBalloonInfo<Identity: IUserNotification2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, psztitle: windows_core::PCWSTR, psztext: windows_core::PCWSTR, dwinfoflags: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotification2_Impl::SetBalloonInfo(this, core::mem::transmute(&psztitle), core::mem::transmute(&psztext), core::mem::transmute_copy(&dwinfoflags)).into()
            }
        }
        unsafe extern "system" fn SetBalloonRetry<Identity: IUserNotification2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, dwshowtime: u32, dwinterval: u32, cretrycount: u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotification2_Impl::SetBalloonRetry(this, core::mem::transmute_copy(&dwshowtime), core::mem::transmute_copy(&dwinterval), core::mem::transmute_copy(&cretrycount)).into()
            }
        }
        unsafe extern "system" fn SetIconInfo<Identity: IUserNotification2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hicon: super::WindowsAndMessaging::HICON, psztooltip: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotification2_Impl::SetIconInfo(this, core::mem::transmute_copy(&hicon), core::mem::transmute(&psztooltip)).into()
            }
        }
        unsafe extern "system" fn Show<Identity: IUserNotification2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pqc: *mut core::ffi::c_void, dwcontinuepollinterval: u32, psink: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotification2_Impl::Show(this, core::mem::transmute_copy(&pqc), core::mem::transmute_copy(&dwcontinuepollinterval), core::mem::transmute_copy(&psink)).into()
            }
        }
        unsafe extern "system" fn PlaySound<Identity: IUserNotification2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszsoundname: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotification2_Impl::PlaySound(this, core::mem::transmute(&pszsoundname)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetBalloonInfo: SetBalloonInfo::<Identity, OFFSET>,
            SetBalloonRetry: SetBalloonRetry::<Identity, OFFSET>,
            SetIconInfo: SetIconInfo::<Identity, OFFSET>,
            Show: Show::<Identity, OFFSET>,
            PlaySound: PlaySound::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUserNotification2 as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl windows_core::RuntimeName for IUserNotification2 {}
windows_core::imp::define_interface!(IUserNotificationCallback, IUserNotificationCallback_Vtbl, 0x19108294_0441_4aff_8013_fa0a730b0bea);
windows_core::imp::interface_hierarchy!(IUserNotificationCallback, windows_core::IUnknown);
impl IUserNotificationCallback {
    pub unsafe fn OnBalloonUserClick(&self, pt: *const super::super::Foundation::POINT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnBalloonUserClick)(windows_core::Interface::as_raw(self), pt).ok() }
    }
    pub unsafe fn OnLeftClick(&self, pt: *const super::super::Foundation::POINT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnLeftClick)(windows_core::Interface::as_raw(self), pt).ok() }
    }
    pub unsafe fn OnContextMenu(&self, pt: *const super::super::Foundation::POINT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).OnContextMenu)(windows_core::Interface::as_raw(self), pt).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IUserNotificationCallback_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub OnBalloonUserClick: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::POINT) -> windows_core::HRESULT,
    pub OnLeftClick: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::POINT) -> windows_core::HRESULT,
    pub OnContextMenu: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Foundation::POINT) -> windows_core::HRESULT,
}
pub trait IUserNotificationCallback_Impl: windows_core::IUnknownImpl {
    fn OnBalloonUserClick(&self, pt: *const super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn OnLeftClick(&self, pt: *const super::super::Foundation::POINT) -> windows_core::Result<()>;
    fn OnContextMenu(&self, pt: *const super::super::Foundation::POINT) -> windows_core::Result<()>;
}
impl IUserNotificationCallback_Vtbl {
    pub const fn new<Identity: IUserNotificationCallback_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn OnBalloonUserClick<Identity: IUserNotificationCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pt: *const super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotificationCallback_Impl::OnBalloonUserClick(this, core::mem::transmute_copy(&pt)).into()
            }
        }
        unsafe extern "system" fn OnLeftClick<Identity: IUserNotificationCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pt: *const super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotificationCallback_Impl::OnLeftClick(this, core::mem::transmute_copy(&pt)).into()
            }
        }
        unsafe extern "system" fn OnContextMenu<Identity: IUserNotificationCallback_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pt: *const super::super::Foundation::POINT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IUserNotificationCallback_Impl::OnContextMenu(this, core::mem::transmute_copy(&pt)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            OnBalloonUserClick: OnBalloonUserClick::<Identity, OFFSET>,
            OnLeftClick: OnLeftClick::<Identity, OFFSET>,
            OnContextMenu: OnContextMenu::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IUserNotificationCallback as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IUserNotificationCallback {}
windows_core::imp::define_interface!(IViewStateIdentityItem, IViewStateIdentityItem_Vtbl, 0x9d264146_a94f_4195_9f9f_3bb12ce0c955);
impl core::ops::Deref for IViewStateIdentityItem {
    type Target = IRelatedItem;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IViewStateIdentityItem, windows_core::IUnknown, IRelatedItem);
#[repr(C)]
#[doc(hidden)]
pub struct IViewStateIdentityItem_Vtbl {
    pub base__: IRelatedItem_Vtbl,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
pub trait IViewStateIdentityItem_Impl: IRelatedItem_Impl {}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl IViewStateIdentityItem_Vtbl {
    pub const fn new<Identity: IViewStateIdentityItem_Impl, const OFFSET: isize>() -> Self {
        Self { base__: IRelatedItem_Vtbl::new::<Identity, OFFSET>() }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IViewStateIdentityItem as windows_core::Interface>::IID || iid == &<IRelatedItem as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl windows_core::RuntimeName for IViewStateIdentityItem {}
windows_core::imp::define_interface!(IVirtualDesktopManager, IVirtualDesktopManager_Vtbl, 0xa5cd92ff_29be_454c_8d04_d82879fb3f1b);
windows_core::imp::interface_hierarchy!(IVirtualDesktopManager, windows_core::IUnknown);
impl IVirtualDesktopManager {
    pub unsafe fn IsWindowOnCurrentVirtualDesktop(&self, toplevelwindow: super::super::Foundation::HWND) -> windows_core::Result<windows_core::BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).IsWindowOnCurrentVirtualDesktop)(windows_core::Interface::as_raw(self), toplevelwindow, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn GetWindowDesktopId(&self, toplevelwindow: super::super::Foundation::HWND) -> windows_core::Result<windows_core::GUID> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetWindowDesktopId)(windows_core::Interface::as_raw(self), toplevelwindow, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn MoveWindowToDesktop(&self, toplevelwindow: super::super::Foundation::HWND, desktopid: *const windows_core::GUID) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).MoveWindowToDesktop)(windows_core::Interface::as_raw(self), toplevelwindow, desktopid).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IVirtualDesktopManager_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    pub IsWindowOnCurrentVirtualDesktop: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut windows_core::BOOL) -> windows_core::HRESULT,
    pub GetWindowDesktopId: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *mut windows_core::GUID) -> windows_core::HRESULT,
    pub MoveWindowToDesktop: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::HWND, *const windows_core::GUID) -> windows_core::HRESULT,
}
pub trait IVirtualDesktopManager_Impl: windows_core::IUnknownImpl {
    fn IsWindowOnCurrentVirtualDesktop(&self, toplevelwindow: super::super::Foundation::HWND) -> windows_core::Result<windows_core::BOOL>;
    fn GetWindowDesktopId(&self, toplevelwindow: super::super::Foundation::HWND) -> windows_core::Result<windows_core::GUID>;
    fn MoveWindowToDesktop(&self, toplevelwindow: super::super::Foundation::HWND, desktopid: *const windows_core::GUID) -> windows_core::Result<()>;
}
impl IVirtualDesktopManager_Vtbl {
    pub const fn new<Identity: IVirtualDesktopManager_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn IsWindowOnCurrentVirtualDesktop<Identity: IVirtualDesktopManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, toplevelwindow: super::super::Foundation::HWND, oncurrentdesktop: *mut windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IVirtualDesktopManager_Impl::IsWindowOnCurrentVirtualDesktop(this, core::mem::transmute_copy(&toplevelwindow)) {
                    Ok(ok__) => {
                        oncurrentdesktop.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetWindowDesktopId<Identity: IVirtualDesktopManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, toplevelwindow: super::super::Foundation::HWND, desktopid: *mut windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IVirtualDesktopManager_Impl::GetWindowDesktopId(this, core::mem::transmute_copy(&toplevelwindow)) {
                    Ok(ok__) => {
                        desktopid.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn MoveWindowToDesktop<Identity: IVirtualDesktopManager_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, toplevelwindow: super::super::Foundation::HWND, desktopid: *const windows_core::GUID) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IVirtualDesktopManager_Impl::MoveWindowToDesktop(this, core::mem::transmute_copy(&toplevelwindow), core::mem::transmute_copy(&desktopid)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            IsWindowOnCurrentVirtualDesktop: IsWindowOnCurrentVirtualDesktop::<Identity, OFFSET>,
            GetWindowDesktopId: GetWindowDesktopId::<Identity, OFFSET>,
            MoveWindowToDesktop: MoveWindowToDesktop::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVirtualDesktopManager as windows_core::Interface>::IID
    }
}
impl windows_core::RuntimeName for IVirtualDesktopManager {}
windows_core::imp::define_interface!(IVisualProperties, IVisualProperties_Vtbl, 0xe693cf68_d967_4112_8763_99172aee5e5a);
windows_core::imp::interface_hierarchy!(IVisualProperties, windows_core::IUnknown);
impl IVisualProperties {
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn SetWatermark(&self, hbmp: super::super::Graphics::Gdi::HBITMAP, vpwf: VPWATERMARKFLAGS) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetWatermark)(windows_core::Interface::as_raw(self), hbmp, vpwf).ok() }
    }
    pub unsafe fn SetColor(&self, vpcf: VPCOLORFLAGS, cr: super::super::Foundation::COLORREF) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetColor)(windows_core::Interface::as_raw(self), vpcf, cr).ok() }
    }
    pub unsafe fn GetColor(&self, vpcf: VPCOLORFLAGS) -> windows_core::Result<super::super::Foundation::COLORREF> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetColor)(windows_core::Interface::as_raw(self), vpcf, &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetItemHeight(&self, cyiteminpixels: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetItemHeight)(windows_core::Interface::as_raw(self), cyiteminpixels).ok() }
    }
    pub unsafe fn GetItemHeight(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetItemHeight)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn SetFont(&self, plf: *const super::super::Graphics::Gdi::LOGFONTW, bredraw: bool) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFont)(windows_core::Interface::as_raw(self), plf, bredraw.into()).ok() }
    }
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub unsafe fn GetFont(&self, plf: *mut super::super::Graphics::Gdi::LOGFONTW) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GetFont)(windows_core::Interface::as_raw(self), plf as _).ok() }
    }
    pub unsafe fn SetTheme<P0, P1>(&self, pszsubappname: P0, pszsubidlist: P1) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
        P1: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetTheme)(windows_core::Interface::as_raw(self), pszsubappname.param().abi(), pszsubidlist.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IVisualProperties_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub SetWatermark: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Graphics::Gdi::HBITMAP, VPWATERMARKFLAGS) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    SetWatermark: usize,
    pub SetColor: unsafe extern "system" fn(*mut core::ffi::c_void, VPCOLORFLAGS, super::super::Foundation::COLORREF) -> windows_core::HRESULT,
    pub GetColor: unsafe extern "system" fn(*mut core::ffi::c_void, VPCOLORFLAGS, *mut super::super::Foundation::COLORREF) -> windows_core::HRESULT,
    pub SetItemHeight: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub GetItemHeight: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub SetFont: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::Graphics::Gdi::LOGFONTW, windows_core::BOOL) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    SetFont: usize,
    #[cfg(feature = "Win32_Graphics_Gdi")]
    pub GetFont: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Graphics::Gdi::LOGFONTW) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_Graphics_Gdi"))]
    GetFont: usize,
    pub SetTheme: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR, windows_core::PCWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_Graphics_Gdi")]
pub trait IVisualProperties_Impl: windows_core::IUnknownImpl {
    fn SetWatermark(&self, hbmp: super::super::Graphics::Gdi::HBITMAP, vpwf: VPWATERMARKFLAGS) -> windows_core::Result<()>;
    fn SetColor(&self, vpcf: VPCOLORFLAGS, cr: super::super::Foundation::COLORREF) -> windows_core::Result<()>;
    fn GetColor(&self, vpcf: VPCOLORFLAGS) -> windows_core::Result<super::super::Foundation::COLORREF>;
    fn SetItemHeight(&self, cyiteminpixels: i32) -> windows_core::Result<()>;
    fn GetItemHeight(&self) -> windows_core::Result<i32>;
    fn SetFont(&self, plf: *const super::super::Graphics::Gdi::LOGFONTW, bredraw: windows_core::BOOL) -> windows_core::Result<()>;
    fn GetFont(&self, plf: *mut super::super::Graphics::Gdi::LOGFONTW) -> windows_core::Result<()>;
    fn SetTheme(&self, pszsubappname: &windows_core::PCWSTR, pszsubidlist: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl IVisualProperties_Vtbl {
    pub const fn new<Identity: IVisualProperties_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetWatermark<Identity: IVisualProperties_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, hbmp: super::super::Graphics::Gdi::HBITMAP, vpwf: VPWATERMARKFLAGS) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IVisualProperties_Impl::SetWatermark(this, core::mem::transmute_copy(&hbmp), core::mem::transmute_copy(&vpwf)).into()
            }
        }
        unsafe extern "system" fn SetColor<Identity: IVisualProperties_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vpcf: VPCOLORFLAGS, cr: super::super::Foundation::COLORREF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IVisualProperties_Impl::SetColor(this, core::mem::transmute_copy(&vpcf), core::mem::transmute_copy(&cr)).into()
            }
        }
        unsafe extern "system" fn GetColor<Identity: IVisualProperties_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vpcf: VPCOLORFLAGS, pcr: *mut super::super::Foundation::COLORREF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IVisualProperties_Impl::GetColor(this, core::mem::transmute_copy(&vpcf)) {
                    Ok(ok__) => {
                        pcr.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetItemHeight<Identity: IVisualProperties_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cyiteminpixels: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IVisualProperties_Impl::SetItemHeight(this, core::mem::transmute_copy(&cyiteminpixels)).into()
            }
        }
        unsafe extern "system" fn GetItemHeight<Identity: IVisualProperties_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cyiteminpixels: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IVisualProperties_Impl::GetItemHeight(this) {
                    Ok(ok__) => {
                        cyiteminpixels.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetFont<Identity: IVisualProperties_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plf: *const super::super::Graphics::Gdi::LOGFONTW, bredraw: windows_core::BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IVisualProperties_Impl::SetFont(this, core::mem::transmute_copy(&plf), core::mem::transmute_copy(&bredraw)).into()
            }
        }
        unsafe extern "system" fn GetFont<Identity: IVisualProperties_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plf: *mut super::super::Graphics::Gdi::LOGFONTW) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IVisualProperties_Impl::GetFont(this, core::mem::transmute_copy(&plf)).into()
            }
        }
        unsafe extern "system" fn SetTheme<Identity: IVisualProperties_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszsubappname: windows_core::PCWSTR, pszsubidlist: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IVisualProperties_Impl::SetTheme(this, core::mem::transmute(&pszsubappname), core::mem::transmute(&pszsubidlist)).into()
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            SetWatermark: SetWatermark::<Identity, OFFSET>,
            SetColor: SetColor::<Identity, OFFSET>,
            GetColor: GetColor::<Identity, OFFSET>,
            SetItemHeight: SetItemHeight::<Identity, OFFSET>,
            GetItemHeight: GetItemHeight::<Identity, OFFSET>,
            SetFont: SetFont::<Identity, OFFSET>,
            GetFont: GetFont::<Identity, OFFSET>,
            SetTheme: SetTheme::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IVisualProperties as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_Graphics_Gdi")]
impl windows_core::RuntimeName for IVisualProperties {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IWebBrowser, IWebBrowser_Vtbl, 0xeab22ac1_30c1_11cf_a7eb_0000c05bae0b);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IWebBrowser {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IWebBrowser, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IWebBrowser {
    pub unsafe fn GoBack(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GoBack)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GoForward(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GoForward)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GoHome(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GoHome)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn GoSearch(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).GoSearch)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Navigate(&self, url: &windows_core::BSTR, flags: Option<*const super::super::System::Variant::VARIANT>, targetframename: Option<*const super::super::System::Variant::VARIANT>, postdata: Option<*const super::super::System::Variant::VARIANT>, headers: Option<*const super::super::System::Variant::VARIANT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Navigate)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(url), flags.unwrap_or(core::mem::zeroed()) as _, targetframename.unwrap_or(core::mem::zeroed()) as _, postdata.unwrap_or(core::mem::zeroed()) as _, headers.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn Refresh(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Refresh)(windows_core::Interface::as_raw(self)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Refresh2(&self, level: Option<*const super::super::System::Variant::VARIANT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Refresh2)(windows_core::Interface::as_raw(self), level.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    pub unsafe fn Stop(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Stop)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Application)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Parent)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Container(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Container)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn Document(&self) -> windows_core::Result<super::super::System::Com::IDispatch> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Document)(windows_core::Interface::as_raw(self), &mut result__).and_then(|| windows_core::Type::from_abi(result__))
        }
    }
    pub unsafe fn TopLevelContainer(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).TopLevelContainer)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Type(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Type)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn Left(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Left)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetLeft(&self, left: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetLeft)(windows_core::Interface::as_raw(self), left).ok() }
    }
    pub unsafe fn Top(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Top)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetTop(&self, top: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTop)(windows_core::Interface::as_raw(self), top).ok() }
    }
    pub unsafe fn Width(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Width)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetWidth(&self, width: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetWidth)(windows_core::Interface::as_raw(self), width).ok() }
    }
    pub unsafe fn Height(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Height)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetHeight(&self, height: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetHeight)(windows_core::Interface::as_raw(self), height).ok() }
    }
    pub unsafe fn LocationName(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).LocationName)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn LocationURL(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).LocationURL)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn Busy(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Busy)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IWebBrowser_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub GoBack: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GoForward: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GoHome: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub GoSearch: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Navigate: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Navigate: usize,
    pub Refresh: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Refresh2: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Refresh2: usize,
    pub Stop: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Application: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Parent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Container: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Document: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub TopLevelContainer: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Type: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Left: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetLeft: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Top: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetTop: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Width: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetWidth: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub Height: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetHeight: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub LocationName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub LocationURL: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Busy: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IWebBrowser_Impl: super::super::System::Com::IDispatch_Impl {
    fn GoBack(&self) -> windows_core::Result<()>;
    fn GoForward(&self) -> windows_core::Result<()>;
    fn GoHome(&self) -> windows_core::Result<()>;
    fn GoSearch(&self) -> windows_core::Result<()>;
    fn Navigate(&self, url: &windows_core::BSTR, flags: *const super::super::System::Variant::VARIANT, targetframename: *const super::super::System::Variant::VARIANT, postdata: *const super::super::System::Variant::VARIANT, headers: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn Refresh(&self) -> windows_core::Result<()>;
    fn Refresh2(&self, level: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn Stop(&self) -> windows_core::Result<()>;
    fn Application(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Parent(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Container(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn Document(&self) -> windows_core::Result<super::super::System::Com::IDispatch>;
    fn TopLevelContainer(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn Type(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Left(&self) -> windows_core::Result<i32>;
    fn SetLeft(&self, left: i32) -> windows_core::Result<()>;
    fn Top(&self) -> windows_core::Result<i32>;
    fn SetTop(&self, top: i32) -> windows_core::Result<()>;
    fn Width(&self) -> windows_core::Result<i32>;
    fn SetWidth(&self, width: i32) -> windows_core::Result<()>;
    fn Height(&self) -> windows_core::Result<i32>;
    fn SetHeight(&self, height: i32) -> windows_core::Result<()>;
    fn LocationName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn LocationURL(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Busy(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IWebBrowser_Vtbl {
    pub const fn new<Identity: IWebBrowser_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GoBack<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::GoBack(this).into()
            }
        }
        unsafe extern "system" fn GoForward<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::GoForward(this).into()
            }
        }
        unsafe extern "system" fn GoHome<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::GoHome(this).into()
            }
        }
        unsafe extern "system" fn GoSearch<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::GoSearch(this).into()
            }
        }
        unsafe extern "system" fn Navigate<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *mut core::ffi::c_void, flags: *const super::super::System::Variant::VARIANT, targetframename: *const super::super::System::Variant::VARIANT, postdata: *const super::super::System::Variant::VARIANT, headers: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::Navigate(this, core::mem::transmute(&url), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&targetframename), core::mem::transmute_copy(&postdata), core::mem::transmute_copy(&headers)).into()
            }
        }
        unsafe extern "system" fn Refresh<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::Refresh(this).into()
            }
        }
        unsafe extern "system" fn Refresh2<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, level: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::Refresh2(this, core::mem::transmute_copy(&level)).into()
            }
        }
        unsafe extern "system" fn Stop<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::Stop(this).into()
            }
        }
        unsafe extern "system" fn Application<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::Application(this) {
                    Ok(ok__) => {
                        ppdisp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Parent<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::Parent(this) {
                    Ok(ok__) => {
                        ppdisp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Container<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::Container(this) {
                    Ok(ok__) => {
                        ppdisp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Document<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, ppdisp: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::Document(this) {
                    Ok(ok__) => {
                        ppdisp.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn TopLevelContainer<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::TopLevelContainer(this) {
                    Ok(ok__) => {
                        pbool.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Type<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, r#type: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::Type(this) {
                    Ok(ok__) => {
                        r#type.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Left<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pl: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::Left(this) {
                    Ok(ok__) => {
                        pl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetLeft<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, left: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::SetLeft(this, core::mem::transmute_copy(&left)).into()
            }
        }
        unsafe extern "system" fn Top<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pl: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::Top(this) {
                    Ok(ok__) => {
                        pl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetTop<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, top: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::SetTop(this, core::mem::transmute_copy(&top)).into()
            }
        }
        unsafe extern "system" fn Width<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pl: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::Width(this) {
                    Ok(ok__) => {
                        pl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetWidth<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, width: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::SetWidth(this, core::mem::transmute_copy(&width)).into()
            }
        }
        unsafe extern "system" fn Height<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pl: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::Height(this) {
                    Ok(ok__) => {
                        pl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetHeight<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, height: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser_Impl::SetHeight(this, core::mem::transmute_copy(&height)).into()
            }
        }
        unsafe extern "system" fn LocationName<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, locationname: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::LocationName(this) {
                    Ok(ok__) => {
                        locationname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn LocationURL<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, locationurl: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::LocationURL(this) {
                    Ok(ok__) => {
                        locationurl.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Busy<Identity: IWebBrowser_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser_Impl::Busy(this) {
                    Ok(ok__) => {
                        pbool.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            GoBack: GoBack::<Identity, OFFSET>,
            GoForward: GoForward::<Identity, OFFSET>,
            GoHome: GoHome::<Identity, OFFSET>,
            GoSearch: GoSearch::<Identity, OFFSET>,
            Navigate: Navigate::<Identity, OFFSET>,
            Refresh: Refresh::<Identity, OFFSET>,
            Refresh2: Refresh2::<Identity, OFFSET>,
            Stop: Stop::<Identity, OFFSET>,
            Application: Application::<Identity, OFFSET>,
            Parent: Parent::<Identity, OFFSET>,
            Container: Container::<Identity, OFFSET>,
            Document: Document::<Identity, OFFSET>,
            TopLevelContainer: TopLevelContainer::<Identity, OFFSET>,
            Type: Type::<Identity, OFFSET>,
            Left: Left::<Identity, OFFSET>,
            SetLeft: SetLeft::<Identity, OFFSET>,
            Top: Top::<Identity, OFFSET>,
            SetTop: SetTop::<Identity, OFFSET>,
            Width: Width::<Identity, OFFSET>,
            SetWidth: SetWidth::<Identity, OFFSET>,
            Height: Height::<Identity, OFFSET>,
            SetHeight: SetHeight::<Identity, OFFSET>,
            LocationName: LocationName::<Identity, OFFSET>,
            LocationURL: LocationURL::<Identity, OFFSET>,
            Busy: Busy::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebBrowser as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IWebBrowser {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IWebBrowser2, IWebBrowser2_Vtbl, 0xd30c1661_cdaf_11d0_8a3e_00c04fc9e26e);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IWebBrowser2 {
    type Target = IWebBrowserApp;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IWebBrowser2, windows_core::IUnknown, super::super::System::Com::IDispatch, IWebBrowser, IWebBrowserApp);
#[cfg(feature = "Win32_System_Com")]
impl IWebBrowser2 {
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn Navigate2(&self, url: *const super::super::System::Variant::VARIANT, flags: Option<*const super::super::System::Variant::VARIANT>, targetframename: Option<*const super::super::System::Variant::VARIANT>, postdata: Option<*const super::super::System::Variant::VARIANT>, headers: Option<*const super::super::System::Variant::VARIANT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Navigate2)(windows_core::Interface::as_raw(self), core::mem::transmute(url), flags.unwrap_or(core::mem::zeroed()) as _, targetframename.unwrap_or(core::mem::zeroed()) as _, postdata.unwrap_or(core::mem::zeroed()) as _, headers.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn QueryStatusWB(&self, cmdid: super::super::System::Ole::OLECMDID) -> windows_core::Result<super::super::System::Ole::OLECMDF> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).QueryStatusWB)(windows_core::Interface::as_raw(self), cmdid, &mut result__).map(|| result__)
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn ExecWB(&self, cmdid: super::super::System::Ole::OLECMDID, cmdexecopt: super::super::System::Ole::OLECMDEXECOPT, pvain: Option<*const super::super::System::Variant::VARIANT>, pvaout: Option<*mut super::super::System::Variant::VARIANT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ExecWB)(windows_core::Interface::as_raw(self), cmdid, cmdexecopt, pvain.unwrap_or(core::mem::zeroed()) as _, pvaout.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn ShowBrowserBar(&self, pvaclsid: *const super::super::System::Variant::VARIANT, pvarshow: Option<*const super::super::System::Variant::VARIANT>, pvarsize: Option<*const super::super::System::Variant::VARIANT>) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ShowBrowserBar)(windows_core::Interface::as_raw(self), core::mem::transmute(pvaclsid), pvarshow.unwrap_or(core::mem::zeroed()) as _, pvarsize.unwrap_or(core::mem::zeroed()) as _).ok() }
    }
    #[cfg(feature = "Win32_System_Ole")]
    pub unsafe fn ReadyState(&self) -> windows_core::Result<super::super::System::Ole::READYSTATE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ReadyState)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn Offline(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Offline)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetOffline(&self, boffline: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetOffline)(windows_core::Interface::as_raw(self), boffline).ok() }
    }
    pub unsafe fn Silent(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Silent)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetSilent(&self, bsilent: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetSilent)(windows_core::Interface::as_raw(self), bsilent).ok() }
    }
    pub unsafe fn RegisterAsBrowser(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RegisterAsBrowser)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRegisterAsBrowser(&self, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRegisterAsBrowser)(windows_core::Interface::as_raw(self), bregister).ok() }
    }
    pub unsafe fn RegisterAsDropTarget(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).RegisterAsDropTarget)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetRegisterAsDropTarget(&self, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetRegisterAsDropTarget)(windows_core::Interface::as_raw(self), bregister).ok() }
    }
    pub unsafe fn TheaterMode(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).TheaterMode)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetTheaterMode(&self, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetTheaterMode)(windows_core::Interface::as_raw(self), bregister).ok() }
    }
    pub unsafe fn AddressBar(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).AddressBar)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetAddressBar(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetAddressBar)(windows_core::Interface::as_raw(self), value).ok() }
    }
    pub unsafe fn Resizable(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Resizable)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetResizable(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetResizable)(windows_core::Interface::as_raw(self), value).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IWebBrowser2_Vtbl {
    pub base__: IWebBrowserApp_Vtbl,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub Navigate2: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    Navigate2: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub QueryStatusWB: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Ole::OLECMDID, *mut super::super::System::Ole::OLECMDF) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    QueryStatusWB: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub ExecWB: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::System::Ole::OLECMDID, super::super::System::Ole::OLECMDEXECOPT, *const super::super::System::Variant::VARIANT, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    ExecWB: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub ShowBrowserBar: unsafe extern "system" fn(*mut core::ffi::c_void, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    ShowBrowserBar: usize,
    #[cfg(feature = "Win32_System_Ole")]
    pub ReadyState: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::System::Ole::READYSTATE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_System_Ole"))]
    ReadyState: usize,
    pub Offline: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetOffline: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Silent: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetSilent: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub RegisterAsBrowser: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetRegisterAsBrowser: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub RegisterAsDropTarget: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetRegisterAsDropTarget: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub TheaterMode: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetTheaterMode: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub AddressBar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetAddressBar: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub Resizable: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetResizable: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IWebBrowser2_Impl: IWebBrowserApp_Impl {
    fn Navigate2(&self, url: *const super::super::System::Variant::VARIANT, flags: *const super::super::System::Variant::VARIANT, targetframename: *const super::super::System::Variant::VARIANT, postdata: *const super::super::System::Variant::VARIANT, headers: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn QueryStatusWB(&self, cmdid: super::super::System::Ole::OLECMDID) -> windows_core::Result<super::super::System::Ole::OLECMDF>;
    fn ExecWB(&self, cmdid: super::super::System::Ole::OLECMDID, cmdexecopt: super::super::System::Ole::OLECMDEXECOPT, pvain: *const super::super::System::Variant::VARIANT, pvaout: *mut super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn ShowBrowserBar(&self, pvaclsid: *const super::super::System::Variant::VARIANT, pvarshow: *const super::super::System::Variant::VARIANT, pvarsize: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn ReadyState(&self) -> windows_core::Result<super::super::System::Ole::READYSTATE>;
    fn Offline(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetOffline(&self, boffline: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Silent(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetSilent(&self, bsilent: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn RegisterAsBrowser(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetRegisterAsBrowser(&self, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn RegisterAsDropTarget(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetRegisterAsDropTarget(&self, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn TheaterMode(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetTheaterMode(&self, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn AddressBar(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetAddressBar(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn Resizable(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetResizable(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IWebBrowser2_Vtbl {
    pub const fn new<Identity: IWebBrowser2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Navigate2<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, url: *const super::super::System::Variant::VARIANT, flags: *const super::super::System::Variant::VARIANT, targetframename: *const super::super::System::Variant::VARIANT, postdata: *const super::super::System::Variant::VARIANT, headers: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser2_Impl::Navigate2(this, core::mem::transmute_copy(&url), core::mem::transmute_copy(&flags), core::mem::transmute_copy(&targetframename), core::mem::transmute_copy(&postdata), core::mem::transmute_copy(&headers)).into()
            }
        }
        unsafe extern "system" fn QueryStatusWB<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cmdid: super::super::System::Ole::OLECMDID, pcmdf: *mut super::super::System::Ole::OLECMDF) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser2_Impl::QueryStatusWB(this, core::mem::transmute_copy(&cmdid)) {
                    Ok(ok__) => {
                        pcmdf.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn ExecWB<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, cmdid: super::super::System::Ole::OLECMDID, cmdexecopt: super::super::System::Ole::OLECMDEXECOPT, pvain: *const super::super::System::Variant::VARIANT, pvaout: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser2_Impl::ExecWB(this, core::mem::transmute_copy(&cmdid), core::mem::transmute_copy(&cmdexecopt), core::mem::transmute_copy(&pvain), core::mem::transmute_copy(&pvaout)).into()
            }
        }
        unsafe extern "system" fn ShowBrowserBar<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pvaclsid: *const super::super::System::Variant::VARIANT, pvarshow: *const super::super::System::Variant::VARIANT, pvarsize: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser2_Impl::ShowBrowserBar(this, core::mem::transmute_copy(&pvaclsid), core::mem::transmute_copy(&pvarshow), core::mem::transmute_copy(&pvarsize)).into()
            }
        }
        unsafe extern "system" fn ReadyState<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, plreadystate: *mut super::super::System::Ole::READYSTATE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser2_Impl::ReadyState(this) {
                    Ok(ok__) => {
                        plreadystate.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Offline<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pboffline: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser2_Impl::Offline(this) {
                    Ok(ok__) => {
                        pboffline.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetOffline<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, boffline: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser2_Impl::SetOffline(this, core::mem::transmute_copy(&boffline)).into()
            }
        }
        unsafe extern "system" fn Silent<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbsilent: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser2_Impl::Silent(this) {
                    Ok(ok__) => {
                        pbsilent.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetSilent<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bsilent: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser2_Impl::SetSilent(this, core::mem::transmute_copy(&bsilent)).into()
            }
        }
        unsafe extern "system" fn RegisterAsBrowser<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbregister: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser2_Impl::RegisterAsBrowser(this) {
                    Ok(ok__) => {
                        pbregister.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRegisterAsBrowser<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser2_Impl::SetRegisterAsBrowser(this, core::mem::transmute_copy(&bregister)).into()
            }
        }
        unsafe extern "system" fn RegisterAsDropTarget<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbregister: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser2_Impl::RegisterAsDropTarget(this) {
                    Ok(ok__) => {
                        pbregister.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetRegisterAsDropTarget<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser2_Impl::SetRegisterAsDropTarget(this, core::mem::transmute_copy(&bregister)).into()
            }
        }
        unsafe extern "system" fn TheaterMode<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbregister: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser2_Impl::TheaterMode(this) {
                    Ok(ok__) => {
                        pbregister.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetTheaterMode<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bregister: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser2_Impl::SetTheaterMode(this, core::mem::transmute_copy(&bregister)).into()
            }
        }
        unsafe extern "system" fn AddressBar<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser2_Impl::AddressBar(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetAddressBar<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser2_Impl::SetAddressBar(this, core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn Resizable<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowser2_Impl::Resizable(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetResizable<Identity: IWebBrowser2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowser2_Impl::SetResizable(this, core::mem::transmute_copy(&value)).into()
            }
        }
        Self {
            base__: IWebBrowserApp_Vtbl::new::<Identity, OFFSET>(),
            Navigate2: Navigate2::<Identity, OFFSET>,
            QueryStatusWB: QueryStatusWB::<Identity, OFFSET>,
            ExecWB: ExecWB::<Identity, OFFSET>,
            ShowBrowserBar: ShowBrowserBar::<Identity, OFFSET>,
            ReadyState: ReadyState::<Identity, OFFSET>,
            Offline: Offline::<Identity, OFFSET>,
            SetOffline: SetOffline::<Identity, OFFSET>,
            Silent: Silent::<Identity, OFFSET>,
            SetSilent: SetSilent::<Identity, OFFSET>,
            RegisterAsBrowser: RegisterAsBrowser::<Identity, OFFSET>,
            SetRegisterAsBrowser: SetRegisterAsBrowser::<Identity, OFFSET>,
            RegisterAsDropTarget: RegisterAsDropTarget::<Identity, OFFSET>,
            SetRegisterAsDropTarget: SetRegisterAsDropTarget::<Identity, OFFSET>,
            TheaterMode: TheaterMode::<Identity, OFFSET>,
            SetTheaterMode: SetTheaterMode::<Identity, OFFSET>,
            AddressBar: AddressBar::<Identity, OFFSET>,
            SetAddressBar: SetAddressBar::<Identity, OFFSET>,
            Resizable: Resizable::<Identity, OFFSET>,
            SetResizable: SetResizable::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebBrowser2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IWebBrowser as windows_core::Interface>::IID || iid == &<IWebBrowserApp as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IWebBrowser2 {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IWebBrowserApp, IWebBrowserApp_Vtbl, 0x0002df05_0000_0000_c000_000000000046);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IWebBrowserApp {
    type Target = IWebBrowser;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IWebBrowserApp, windows_core::IUnknown, super::super::System::Com::IDispatch, IWebBrowser);
#[cfg(feature = "Win32_System_Com")]
impl IWebBrowserApp {
    pub unsafe fn Quit(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Quit)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn ClientToWindow(&self, pcx: *mut i32, pcy: *mut i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).ClientToWindow)(windows_core::Interface::as_raw(self), pcx as _, pcy as _).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn PutProperty(&self, property: &windows_core::BSTR, vtvalue: &super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).PutProperty)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(property), core::mem::transmute_copy(vtvalue)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn GetProperty(&self, property: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetProperty)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(property), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn Name(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Name)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn HWND(&self) -> windows_core::Result<super::super::Foundation::SHANDLE_PTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).HWND)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn FullName(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FullName)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn Path(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Path)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn Visible(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Visible)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetVisible(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetVisible)(windows_core::Interface::as_raw(self), value).ok() }
    }
    pub unsafe fn StatusBar(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StatusBar)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetStatusBar(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetStatusBar)(windows_core::Interface::as_raw(self), value).ok() }
    }
    pub unsafe fn StatusText(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).StatusText)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SetStatusText(&self, statustext: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetStatusText)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(statustext)).ok() }
    }
    pub unsafe fn ToolBar(&self) -> windows_core::Result<i32> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).ToolBar)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetToolBar(&self, value: i32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetToolBar)(windows_core::Interface::as_raw(self), value).ok() }
    }
    pub unsafe fn MenuBar(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).MenuBar)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetMenuBar(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetMenuBar)(windows_core::Interface::as_raw(self), value).ok() }
    }
    pub unsafe fn FullScreen(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).FullScreen)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    pub unsafe fn SetFullScreen(&self, bfullscreen: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetFullScreen)(windows_core::Interface::as_raw(self), bfullscreen).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IWebBrowserApp_Vtbl {
    pub base__: IWebBrowser_Vtbl,
    pub Quit: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ClientToWindow: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32, *mut i32) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub PutProperty: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    PutProperty: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub GetProperty: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    GetProperty: usize,
    pub Name: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub HWND: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::SHANDLE_PTR) -> windows_core::HRESULT,
    pub FullName: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Path: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Visible: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetVisible: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub StatusBar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetStatusBar: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub StatusText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetStatusText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub ToolBar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut i32) -> windows_core::HRESULT,
    pub SetToolBar: unsafe extern "system" fn(*mut core::ffi::c_void, i32) -> windows_core::HRESULT,
    pub MenuBar: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetMenuBar: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub FullScreen: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetFullScreen: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IWebBrowserApp_Impl: IWebBrowser_Impl {
    fn Quit(&self) -> windows_core::Result<()>;
    fn ClientToWindow(&self, pcx: *mut i32, pcy: *mut i32) -> windows_core::Result<()>;
    fn PutProperty(&self, property: &windows_core::BSTR, vtvalue: &super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn GetProperty(&self, property: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn Name(&self) -> windows_core::Result<windows_core::BSTR>;
    fn HWND(&self) -> windows_core::Result<super::super::Foundation::SHANDLE_PTR>;
    fn FullName(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Path(&self) -> windows_core::Result<windows_core::BSTR>;
    fn Visible(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetVisible(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn StatusBar(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetStatusBar(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn StatusText(&self) -> windows_core::Result<windows_core::BSTR>;
    fn SetStatusText(&self, statustext: &windows_core::BSTR) -> windows_core::Result<()>;
    fn ToolBar(&self) -> windows_core::Result<i32>;
    fn SetToolBar(&self, value: i32) -> windows_core::Result<()>;
    fn MenuBar(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetMenuBar(&self, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn FullScreen(&self) -> windows_core::Result<super::super::Foundation::VARIANT_BOOL>;
    fn SetFullScreen(&self, bfullscreen: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IWebBrowserApp_Vtbl {
    pub const fn new<Identity: IWebBrowserApp_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn Quit<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowserApp_Impl::Quit(this).into()
            }
        }
        unsafe extern "system" fn ClientToWindow<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pcx: *mut i32, pcy: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowserApp_Impl::ClientToWindow(this, core::mem::transmute_copy(&pcx), core::mem::transmute_copy(&pcy)).into()
            }
        }
        unsafe extern "system" fn PutProperty<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, property: *mut core::ffi::c_void, vtvalue: super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowserApp_Impl::PutProperty(this, core::mem::transmute(&property), core::mem::transmute(&vtvalue)).into()
            }
        }
        unsafe extern "system" fn GetProperty<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, property: *mut core::ffi::c_void, pvtvalue: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::GetProperty(this, core::mem::transmute(&property)) {
                    Ok(ok__) => {
                        pvtvalue.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Name<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, name: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::Name(this) {
                    Ok(ok__) => {
                        name.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn HWND<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phwnd: *mut super::super::Foundation::SHANDLE_PTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::HWND(this) {
                    Ok(ok__) => {
                        phwnd.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn FullName<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, fullname: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::FullName(this) {
                    Ok(ok__) => {
                        fullname.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Path<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, path: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::Path(this) {
                    Ok(ok__) => {
                        path.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn Visible<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::Visible(this) {
                    Ok(ok__) => {
                        pbool.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetVisible<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowserApp_Impl::SetVisible(this, core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn StatusBar<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbool: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::StatusBar(this) {
                    Ok(ok__) => {
                        pbool.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetStatusBar<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowserApp_Impl::SetStatusBar(this, core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn StatusText<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, statustext: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::StatusText(this) {
                    Ok(ok__) => {
                        statustext.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetStatusText<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, statustext: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowserApp_Impl::SetStatusText(this, core::mem::transmute(&statustext)).into()
            }
        }
        unsafe extern "system" fn ToolBar<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::ToolBar(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetToolBar<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: i32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowserApp_Impl::SetToolBar(this, core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn MenuBar<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::MenuBar(this) {
                    Ok(ok__) => {
                        value.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetMenuBar<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowserApp_Impl::SetMenuBar(this, core::mem::transmute_copy(&value)).into()
            }
        }
        unsafe extern "system" fn FullScreen<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbfullscreen: *mut super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebBrowserApp_Impl::FullScreen(this) {
                    Ok(ok__) => {
                        pbfullscreen.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetFullScreen<Identity: IWebBrowserApp_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bfullscreen: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebBrowserApp_Impl::SetFullScreen(this, core::mem::transmute_copy(&bfullscreen)).into()
            }
        }
        Self {
            base__: IWebBrowser_Vtbl::new::<Identity, OFFSET>(),
            Quit: Quit::<Identity, OFFSET>,
            ClientToWindow: ClientToWindow::<Identity, OFFSET>,
            PutProperty: PutProperty::<Identity, OFFSET>,
            GetProperty: GetProperty::<Identity, OFFSET>,
            Name: Name::<Identity, OFFSET>,
            HWND: HWND::<Identity, OFFSET>,
            FullName: FullName::<Identity, OFFSET>,
            Path: Path::<Identity, OFFSET>,
            Visible: Visible::<Identity, OFFSET>,
            SetVisible: SetVisible::<Identity, OFFSET>,
            StatusBar: StatusBar::<Identity, OFFSET>,
            SetStatusBar: SetStatusBar::<Identity, OFFSET>,
            StatusText: StatusText::<Identity, OFFSET>,
            SetStatusText: SetStatusText::<Identity, OFFSET>,
            ToolBar: ToolBar::<Identity, OFFSET>,
            SetToolBar: SetToolBar::<Identity, OFFSET>,
            MenuBar: MenuBar::<Identity, OFFSET>,
            SetMenuBar: SetMenuBar::<Identity, OFFSET>,
            FullScreen: FullScreen::<Identity, OFFSET>,
            SetFullScreen: SetFullScreen::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebBrowserApp as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IWebBrowser as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IWebBrowserApp {}
windows_core::imp::define_interface!(IWebWizardExtension, IWebWizardExtension_Vtbl, 0x0e6b3f66_98d1_48c0_a222_fbde74e2fbc5);
impl core::ops::Deref for IWebWizardExtension {
    type Target = IWizardExtension;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
windows_core::imp::interface_hierarchy!(IWebWizardExtension, windows_core::IUnknown, IWizardExtension);
impl IWebWizardExtension {
    pub unsafe fn SetInitialURL<P0>(&self, pszurl: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetInitialURL)(windows_core::Interface::as_raw(self), pszurl.param().abi()).ok() }
    }
    pub unsafe fn SetErrorURL<P0>(&self, pszerrorurl: P0) -> windows_core::Result<()>
    where
        P0: windows_core::Param<windows_core::PCWSTR>,
    {
        unsafe { (windows_core::Interface::vtable(self).SetErrorURL)(windows_core::Interface::as_raw(self), pszerrorurl.param().abi()).ok() }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IWebWizardExtension_Vtbl {
    pub base__: IWizardExtension_Vtbl,
    pub SetInitialURL: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
    pub SetErrorURL: unsafe extern "system" fn(*mut core::ffi::c_void, windows_core::PCWSTR) -> windows_core::HRESULT,
}
#[cfg(feature = "Win32_UI_Controls")]
pub trait IWebWizardExtension_Impl: IWizardExtension_Impl {
    fn SetInitialURL(&self, pszurl: &windows_core::PCWSTR) -> windows_core::Result<()>;
    fn SetErrorURL(&self, pszerrorurl: &windows_core::PCWSTR) -> windows_core::Result<()>;
}
#[cfg(feature = "Win32_UI_Controls")]
impl IWebWizardExtension_Vtbl {
    pub const fn new<Identity: IWebWizardExtension_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SetInitialURL<Identity: IWebWizardExtension_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszurl: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebWizardExtension_Impl::SetInitialURL(this, core::mem::transmute(&pszurl)).into()
            }
        }
        unsafe extern "system" fn SetErrorURL<Identity: IWebWizardExtension_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pszerrorurl: windows_core::PCWSTR) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebWizardExtension_Impl::SetErrorURL(this, core::mem::transmute(&pszerrorurl)).into()
            }
        }
        Self {
            base__: IWizardExtension_Vtbl::new::<Identity, OFFSET>(),
            SetInitialURL: SetInitialURL::<Identity, OFFSET>,
            SetErrorURL: SetErrorURL::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebWizardExtension as windows_core::Interface>::IID || iid == &<IWizardExtension as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Controls")]
impl windows_core::RuntimeName for IWebWizardExtension {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IWebWizardHost, IWebWizardHost_Vtbl, 0x18bcc359_4990_4bfb_b951_3c83702be5f9);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IWebWizardHost {
    type Target = super::super::System::Com::IDispatch;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IWebWizardHost, windows_core::IUnknown, super::super::System::Com::IDispatch);
#[cfg(feature = "Win32_System_Com")]
impl IWebWizardHost {
    pub unsafe fn FinalBack(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FinalBack)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn FinalNext(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).FinalNext)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn Cancel(&self) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).Cancel)(windows_core::Interface::as_raw(self)).ok() }
    }
    pub unsafe fn SetCaption(&self, bstrcaption: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetCaption)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrcaption)).ok() }
    }
    pub unsafe fn Caption(&self) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).Caption)(windows_core::Interface::as_raw(self), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn put_Property(&self, bstrpropertyname: &windows_core::BSTR, pvproperty: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).put_Property)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrpropertyname), core::mem::transmute(pvproperty)).ok() }
    }
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub unsafe fn get_Property(&self, bstrpropertyname: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).get_Property)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrpropertyname), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
    pub unsafe fn SetWizardButtons(&self, vfenableback: super::super::Foundation::VARIANT_BOOL, vfenablenext: super::super::Foundation::VARIANT_BOOL, vflastpage: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetWizardButtons)(windows_core::Interface::as_raw(self), vfenableback, vfenablenext, vflastpage).ok() }
    }
    pub unsafe fn SetHeaderText(&self, bstrheadertitle: &windows_core::BSTR, bstrheadersubtitle: &windows_core::BSTR) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).SetHeaderText)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(bstrheadertitle), core::mem::transmute_copy(bstrheadersubtitle)).ok() }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IWebWizardHost_Vtbl {
    pub base__: super::super::System::Com::IDispatch_Vtbl,
    pub FinalBack: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub FinalNext: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Cancel: unsafe extern "system" fn(*mut core::ffi::c_void) -> windows_core::HRESULT,
    pub SetCaption: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
    pub Caption: unsafe extern "system" fn(*mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub put_Property: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    put_Property: usize,
    #[cfg(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
    pub get_Property: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT,
    #[cfg(not(all(feature = "Win32_System_Ole", feature = "Win32_System_Variant")))]
    get_Property: usize,
    pub SetWizardButtons: unsafe extern "system" fn(*mut core::ffi::c_void, super::super::Foundation::VARIANT_BOOL, super::super::Foundation::VARIANT_BOOL, super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT,
    pub SetHeaderText: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IWebWizardHost_Impl: super::super::System::Com::IDispatch_Impl {
    fn FinalBack(&self) -> windows_core::Result<()>;
    fn FinalNext(&self) -> windows_core::Result<()>;
    fn Cancel(&self) -> windows_core::Result<()>;
    fn SetCaption(&self, bstrcaption: &windows_core::BSTR) -> windows_core::Result<()>;
    fn Caption(&self) -> windows_core::Result<windows_core::BSTR>;
    fn put_Property(&self, bstrpropertyname: &windows_core::BSTR, pvproperty: *const super::super::System::Variant::VARIANT) -> windows_core::Result<()>;
    fn get_Property(&self, bstrpropertyname: &windows_core::BSTR) -> windows_core::Result<super::super::System::Variant::VARIANT>;
    fn SetWizardButtons(&self, vfenableback: super::super::Foundation::VARIANT_BOOL, vfenablenext: super::super::Foundation::VARIANT_BOOL, vflastpage: super::super::Foundation::VARIANT_BOOL) -> windows_core::Result<()>;
    fn SetHeaderText(&self, bstrheadertitle: &windows_core::BSTR, bstrheadersubtitle: &windows_core::BSTR) -> windows_core::Result<()>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IWebWizardHost_Vtbl {
    pub const fn new<Identity: IWebWizardHost_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn FinalBack<Identity: IWebWizardHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebWizardHost_Impl::FinalBack(this).into()
            }
        }
        unsafe extern "system" fn FinalNext<Identity: IWebWizardHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebWizardHost_Impl::FinalNext(this).into()
            }
        }
        unsafe extern "system" fn Cancel<Identity: IWebWizardHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebWizardHost_Impl::Cancel(this).into()
            }
        }
        unsafe extern "system" fn SetCaption<Identity: IWebWizardHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrcaption: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebWizardHost_Impl::SetCaption(this, core::mem::transmute(&bstrcaption)).into()
            }
        }
        unsafe extern "system" fn Caption<Identity: IWebWizardHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, pbstrcaption: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebWizardHost_Impl::Caption(this) {
                    Ok(ok__) => {
                        pbstrcaption.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn put_Property<Identity: IWebWizardHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrpropertyname: *mut core::ffi::c_void, pvproperty: *const super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebWizardHost_Impl::put_Property(this, core::mem::transmute(&bstrpropertyname), core::mem::transmute_copy(&pvproperty)).into()
            }
        }
        unsafe extern "system" fn get_Property<Identity: IWebWizardHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrpropertyname: *mut core::ffi::c_void, pvproperty: *mut super::super::System::Variant::VARIANT) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebWizardHost_Impl::get_Property(this, core::mem::transmute(&bstrpropertyname)) {
                    Ok(ok__) => {
                        pvproperty.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn SetWizardButtons<Identity: IWebWizardHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, vfenableback: super::super::Foundation::VARIANT_BOOL, vfenablenext: super::super::Foundation::VARIANT_BOOL, vflastpage: super::super::Foundation::VARIANT_BOOL) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebWizardHost_Impl::SetWizardButtons(this, core::mem::transmute_copy(&vfenableback), core::mem::transmute_copy(&vfenablenext), core::mem::transmute_copy(&vflastpage)).into()
            }
        }
        unsafe extern "system" fn SetHeaderText<Identity: IWebWizardHost_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, bstrheadertitle: *mut core::ffi::c_void, bstrheadersubtitle: *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWebWizardHost_Impl::SetHeaderText(this, core::mem::transmute(&bstrheadertitle), core::mem::transmute(&bstrheadersubtitle)).into()
            }
        }
        Self {
            base__: super::super::System::Com::IDispatch_Vtbl::new::<Identity, OFFSET>(),
            FinalBack: FinalBack::<Identity, OFFSET>,
            FinalNext: FinalNext::<Identity, OFFSET>,
            Cancel: Cancel::<Identity, OFFSET>,
            SetCaption: SetCaption::<Identity, OFFSET>,
            Caption: Caption::<Identity, OFFSET>,
            put_Property: put_Property::<Identity, OFFSET>,
            get_Property: get_Property::<Identity, OFFSET>,
            SetWizardButtons: SetWizardButtons::<Identity, OFFSET>,
            SetHeaderText: SetHeaderText::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebWizardHost as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IWebWizardHost {}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::define_interface!(IWebWizardHost2, IWebWizardHost2_Vtbl, 0xf9c013dc_3c23_4041_8e39_cfb402f7ea59);
#[cfg(feature = "Win32_System_Com")]
impl core::ops::Deref for IWebWizardHost2 {
    type Target = IWebWizardHost;
    fn deref(&self) -> &Self::Target {
        unsafe { core::mem::transmute(self) }
    }
}
#[cfg(feature = "Win32_System_Com")]
windows_core::imp::interface_hierarchy!(IWebWizardHost2, windows_core::IUnknown, super::super::System::Com::IDispatch, IWebWizardHost);
#[cfg(feature = "Win32_System_Com")]
impl IWebWizardHost2 {
    pub unsafe fn SignString(&self, value: &windows_core::BSTR) -> windows_core::Result<windows_core::BSTR> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).SignString)(windows_core::Interface::as_raw(self), core::mem::transmute_copy(value), &mut result__).map(|| core::mem::transmute(result__))
        }
    }
}
#[cfg(feature = "Win32_System_Com")]
#[repr(C)]
#[doc(hidden)]
pub struct IWebWizardHost2_Vtbl {
    pub base__: IWebWizardHost_Vtbl,
    pub SignString: unsafe extern "system" fn(*mut core::ffi::c_void, *mut core::ffi::c_void, *mut *mut core::ffi::c_void) -> windows_core::HRESULT,
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
pub trait IWebWizardHost2_Impl: IWebWizardHost_Impl {
    fn SignString(&self, value: &windows_core::BSTR) -> windows_core::Result<windows_core::BSTR>;
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl IWebWizardHost2_Vtbl {
    pub const fn new<Identity: IWebWizardHost2_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn SignString<Identity: IWebWizardHost2_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, value: *mut core::ffi::c_void, signedvalue: *mut *mut core::ffi::c_void) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWebWizardHost2_Impl::SignString(this, core::mem::transmute(&value)) {
                    Ok(ok__) => {
                        signedvalue.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self { base__: IWebWizardHost_Vtbl::new::<Identity, OFFSET>(), SignString: SignString::<Identity, OFFSET> }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWebWizardHost2 as windows_core::Interface>::IID || iid == &<super::super::System::Com::IDispatch as windows_core::Interface>::IID || iid == &<IWebWizardHost as windows_core::Interface>::IID
    }
}
#[cfg(all(feature = "Win32_System_Com", feature = "Win32_System_Ole", feature = "Win32_System_Variant"))]
impl windows_core::RuntimeName for IWebWizardHost2 {}
windows_core::imp::define_interface!(IWizardExtension, IWizardExtension_Vtbl, 0xc02ea696_86cc_491e_9b23_74394a0444a8);
windows_core::imp::interface_hierarchy!(IWizardExtension, windows_core::IUnknown);
impl IWizardExtension {
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn AddPages(&self, apages: &mut [super::Controls::HPROPSHEETPAGE], pnpagesadded: *mut u32) -> windows_core::Result<()> {
        unsafe { (windows_core::Interface::vtable(self).AddPages)(windows_core::Interface::as_raw(self), core::mem::transmute(apages.as_ptr()), apages.len().try_into().unwrap(), pnpagesadded as _).ok() }
    }
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn GetFirstPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetFirstPage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn GetLastPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetLastPage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IWizardExtension_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Controls")]
    pub AddPages: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::Controls::HPROPSHEETPAGE, u32, *mut u32) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    AddPages: usize,
    #[cfg(feature = "Win32_UI_Controls")]
    pub GetFirstPage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    GetFirstPage: usize,
    #[cfg(feature = "Win32_UI_Controls")]
    pub GetLastPage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    GetLastPage: usize,
}
#[cfg(feature = "Win32_UI_Controls")]
pub trait IWizardExtension_Impl: windows_core::IUnknownImpl {
    fn AddPages(&self, apages: *mut super::Controls::HPROPSHEETPAGE, cpages: u32, pnpagesadded: *mut u32) -> windows_core::Result<()>;
    fn GetFirstPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE>;
    fn GetLastPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE>;
}
#[cfg(feature = "Win32_UI_Controls")]
impl IWizardExtension_Vtbl {
    pub const fn new<Identity: IWizardExtension_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn AddPages<Identity: IWizardExtension_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, apages: *mut super::Controls::HPROPSHEETPAGE, cpages: u32, pnpagesadded: *mut u32) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                IWizardExtension_Impl::AddPages(this, core::mem::transmute_copy(&apages), core::mem::transmute_copy(&cpages), core::mem::transmute_copy(&pnpagesadded)).into()
            }
        }
        unsafe extern "system" fn GetFirstPage<Identity: IWizardExtension_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phpage: *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWizardExtension_Impl::GetFirstPage(this) {
                    Ok(ok__) => {
                        phpage.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetLastPage<Identity: IWizardExtension_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phpage: *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWizardExtension_Impl::GetLastPage(this) {
                    Ok(ok__) => {
                        phpage.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            AddPages: AddPages::<Identity, OFFSET>,
            GetFirstPage: GetFirstPage::<Identity, OFFSET>,
            GetLastPage: GetLastPage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWizardExtension as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Controls")]
impl windows_core::RuntimeName for IWizardExtension {}
windows_core::imp::define_interface!(IWizardSite, IWizardSite_Vtbl, 0x88960f5b_422f_4e7b_8013_73415381c3c3);
windows_core::imp::interface_hierarchy!(IWizardSite, windows_core::IUnknown);
impl IWizardSite {
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn GetPreviousPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetPreviousPage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn GetNextPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetNextPage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
    #[cfg(feature = "Win32_UI_Controls")]
    pub unsafe fn GetCancelledPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE> {
        unsafe {
            let mut result__ = core::mem::zeroed();
            (windows_core::Interface::vtable(self).GetCancelledPage)(windows_core::Interface::as_raw(self), &mut result__).map(|| result__)
        }
    }
}
#[repr(C)]
#[doc(hidden)]
pub struct IWizardSite_Vtbl {
    pub base__: windows_core::IUnknown_Vtbl,
    #[cfg(feature = "Win32_UI_Controls")]
    pub GetPreviousPage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    GetPreviousPage: usize,
    #[cfg(feature = "Win32_UI_Controls")]
    pub GetNextPage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    GetNextPage: usize,
    #[cfg(feature = "Win32_UI_Controls")]
    pub GetCancelledPage: unsafe extern "system" fn(*mut core::ffi::c_void, *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT,
    #[cfg(not(feature = "Win32_UI_Controls"))]
    GetCancelledPage: usize,
}
#[cfg(feature = "Win32_UI_Controls")]
pub trait IWizardSite_Impl: windows_core::IUnknownImpl {
    fn GetPreviousPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE>;
    fn GetNextPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE>;
    fn GetCancelledPage(&self) -> windows_core::Result<super::Controls::HPROPSHEETPAGE>;
}
#[cfg(feature = "Win32_UI_Controls")]
impl IWizardSite_Vtbl {
    pub const fn new<Identity: IWizardSite_Impl, const OFFSET: isize>() -> Self {
        unsafe extern "system" fn GetPreviousPage<Identity: IWizardSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phpage: *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWizardSite_Impl::GetPreviousPage(this) {
                    Ok(ok__) => {
                        phpage.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetNextPage<Identity: IWizardSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phpage: *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWizardSite_Impl::GetNextPage(this) {
                    Ok(ok__) => {
                        phpage.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        unsafe extern "system" fn GetCancelledPage<Identity: IWizardSite_Impl, const OFFSET: isize>(this: *mut core::ffi::c_void, phpage: *mut super::Controls::HPROPSHEETPAGE) -> windows_core::HRESULT {
            unsafe {
                let this: &Identity = &*((this as *const *const ()).offset(OFFSET) as *const Identity);
                match IWizardSite_Impl::GetCancelledPage(this) {
                    Ok(ok__) => {
                        phpage.write(core::mem::transmute(ok__));
                        windows_core::HRESULT(0)
                    }
                    Err(err) => err.into(),
                }
            }
        }
        Self {
            base__: windows_core::IUnknown_Vtbl::new::<Identity, OFFSET>(),
            GetPreviousPage: GetPreviousPage::<Identity, OFFSET>,
            GetNextPage: GetNextPage::<Identity, OFFSET>,
            GetCancelledPage: GetCancelledPage::<Identity, OFFSET>,
        }
    }
    pub fn matches(iid: &windows_core::GUID) -> bool {
        iid == &<IWizardSite as windows_core::Interface>::IID
    }
}
#[cfg(feature = "Win32_UI_Controls")]
impl windows_core::RuntimeName for IWizardSite {}
pub const Identity_LocalUserProvider: windows_core::GUID = windows_core::GUID::from_u128(0xa198529b_730f_4089_b646_a12557f5665e);
pub const ImageProperties: windows_core::GUID = windows_core::GUID::from_u128(0x7ab770c7_0e23_4d7a_8aa2_19bfad479829);
pub const ImageRecompress: windows_core::GUID = windows_core::GUID::from_u128(0x6e33091c_d2f8_4740_b55e_2e11d1477a2c);
pub const ImageTranscode: windows_core::GUID = windows_core::GUID::from_u128(0x17b75166_928f_417d_9685_64aa135565c1);
pub const InputPanelConfiguration: windows_core::GUID = windows_core::GUID::from_u128(0x2853add3_f096_4c63_a78f_7fa3ea837fb7);
pub const InternetExplorer: windows_core::GUID = windows_core::GUID::from_u128(0x0002df01_0000_0000_c000_000000000046);
pub const InternetExplorerMedium: windows_core::GUID = windows_core::GUID::from_u128(0xd5e8041d_920f_45e9_b8fb_b1deb82c6e5e);
pub const InternetPrintOrdering: windows_core::GUID = windows_core::GUID::from_u128(0xadd36aa8_751a_4579_a266_d66f5202ccbb);
pub const ItemCount_Property_GUID: windows_core::GUID = windows_core::GUID::from_u128(0xabbf5c45_5ccc_47b7_bb4e_87cb87bbd162);
pub const ItemIndex_Property_GUID: windows_core::GUID = windows_core::GUID::from_u128(0x92a053da_2969_4021_bf27_514cfc2e4a69);
pub const KDC_FREQUENT: KNOWNDESTCATEGORY = KNOWNDESTCATEGORY(1i32);
pub const KDC_RECENT: KNOWNDESTCATEGORY = KNOWNDESTCATEGORY(2i32);
pub const KFDF_LOCAL_REDIRECT_ONLY: _KF_DEFINITION_FLAGS = _KF_DEFINITION_FLAGS(2i32);
pub const KFDF_NO_REDIRECT_UI: _KF_DEFINITION_FLAGS = _KF_DEFINITION_FLAGS(64i32);
pub const KFDF_PRECREATE: _KF_DEFINITION_FLAGS = _KF_DEFINITION_FLAGS(8i32);
pub const KFDF_PUBLISHEXPANDEDPATH: _KF_DEFINITION_FLAGS = _KF_DEFINITION_FLAGS(32i32);
pub const KFDF_ROAMABLE: _KF_DEFINITION_FLAGS = _KF_DEFINITION_FLAGS(4i32);
pub const KFDF_STREAM: _KF_DEFINITION_FLAGS = _KF_DEFINITION_FLAGS(16i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct KF_CATEGORY(pub i32);
pub const KF_CATEGORY_COMMON: KF_CATEGORY = KF_CATEGORY(3i32);
pub const KF_CATEGORY_FIXED: KF_CATEGORY = KF_CATEGORY(2i32);
pub const KF_CATEGORY_PERUSER: KF_CATEGORY = KF_CATEGORY(4i32);
pub const KF_CATEGORY_VIRTUAL: KF_CATEGORY = KF_CATEGORY(1i32);
pub const KF_FLAG_ALIAS_ONLY: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(-2147483648i32);
pub const KF_FLAG_CREATE: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(32768i32);
pub const KF_FLAG_DEFAULT: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(0i32);
pub const KF_FLAG_DEFAULT_PATH: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(1024i32);
pub const KF_FLAG_DONT_UNEXPAND: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(8192i32);
pub const KF_FLAG_DONT_VERIFY: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(16384i32);
pub const KF_FLAG_FORCE_APPCONTAINER_REDIRECTION: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(131072i32);
pub const KF_FLAG_FORCE_APP_DATA_REDIRECTION: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(524288i32);
pub const KF_FLAG_FORCE_PACKAGE_REDIRECTION: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(131072i32);
pub const KF_FLAG_INIT: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(2048i32);
pub const KF_FLAG_NOT_PARENT_RELATIVE: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(512i32);
pub const KF_FLAG_NO_ALIAS: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(4096i32);
pub const KF_FLAG_NO_APPCONTAINER_REDIRECTION: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(65536i32);
pub const KF_FLAG_NO_PACKAGE_REDIRECTION: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(65536i32);
pub const KF_FLAG_RETURN_FILTER_REDIRECTION_TARGET: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(262144i32);
pub const KF_FLAG_SIMPLE_IDLIST: KNOWN_FOLDER_FLAG = KNOWN_FOLDER_FLAG(256i32);
pub const KF_REDIRECTION_CAPABILITIES_ALLOW_ALL: _KF_REDIRECTION_CAPABILITIES = _KF_REDIRECTION_CAPABILITIES(255i32);
pub const KF_REDIRECTION_CAPABILITIES_DENY_ALL: _KF_REDIRECTION_CAPABILITIES = _KF_REDIRECTION_CAPABILITIES(1048320i32);
pub const KF_REDIRECTION_CAPABILITIES_DENY_PERMISSIONS: _KF_REDIRECTION_CAPABILITIES = _KF_REDIRECTION_CAPABILITIES(1024i32);
pub const KF_REDIRECTION_CAPABILITIES_DENY_POLICY: _KF_REDIRECTION_CAPABILITIES = _KF_REDIRECTION_CAPABILITIES(512i32);
pub const KF_REDIRECTION_CAPABILITIES_DENY_POLICY_REDIRECTED: _KF_REDIRECTION_CAPABILITIES = _KF_REDIRECTION_CAPABILITIES(256i32);
pub const KF_REDIRECTION_CAPABILITIES_REDIRECTABLE: _KF_REDIRECTION_CAPABILITIES = _KF_REDIRECTION_CAPABILITIES(1i32);
pub const KF_REDIRECT_CHECK_ONLY: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(16i32);
pub const KF_REDIRECT_COPY_CONTENTS: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(512i32);
pub const KF_REDIRECT_COPY_SOURCE_DACL: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(2i32);
pub const KF_REDIRECT_DEL_SOURCE_CONTENTS: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(1024i32);
pub const KF_REDIRECT_EXCLUDE_ALL_KNOWN_SUBFOLDERS: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(2048i32);
pub const KF_REDIRECT_OWNER_USER: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(4i32);
pub const KF_REDIRECT_PIN: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(128i32);
pub const KF_REDIRECT_SET_OWNER_EXPLICIT: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(8i32);
pub const KF_REDIRECT_UNPIN: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(64i32);
pub const KF_REDIRECT_USER_EXCLUSIVE: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(1i32);
pub const KF_REDIRECT_WITH_UI: _KF_REDIRECT_FLAGS = _KF_REDIRECT_FLAGS(32i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct KNOWNDESTCATEGORY(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct KNOWNFOLDER_DEFINITION {
    pub category: KF_CATEGORY,
    pub pszName: windows_core::PWSTR,
    pub pszDescription: windows_core::PWSTR,
    pub fidParent: windows_core::GUID,
    pub pszRelativePath: windows_core::PWSTR,
    pub pszParsingName: windows_core::PWSTR,
    pub pszTooltip: windows_core::PWSTR,
    pub pszLocalizedName: windows_core::PWSTR,
    pub pszIcon: windows_core::PWSTR,
    pub pszSecurity: windows_core::PWSTR,
    pub dwAttributes: u32,
    pub kfdFlags: u32,
    pub ftidType: windows_core::GUID,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct KNOWN_FOLDER_FLAG(pub i32);
impl KNOWN_FOLDER_FLAG {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for KNOWN_FOLDER_FLAG {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for KNOWN_FOLDER_FLAG {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for KNOWN_FOLDER_FLAG {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for KNOWN_FOLDER_FLAG {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for KNOWN_FOLDER_FLAG {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const KnownFolderManager: windows_core::GUID = windows_core::GUID::from_u128(0x4df0c730_df9d_4ae3_9153_aa6b82e9795a);
pub const LFF_ALLITEMS: LIBRARYFOLDERFILTER = LIBRARYFOLDERFILTER(3i32);
pub const LFF_FORCEFILESYSTEM: LIBRARYFOLDERFILTER = LIBRARYFOLDERFILTER(1i32);
pub const LFF_STORAGEITEMS: LIBRARYFOLDERFILTER = LIBRARYFOLDERFILTER(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct LIBRARYFOLDERFILTER(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct LIBRARYMANAGEDIALOGOPTIONS(pub i32);
impl LIBRARYMANAGEDIALOGOPTIONS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for LIBRARYMANAGEDIALOGOPTIONS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for LIBRARYMANAGEDIALOGOPTIONS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for LIBRARYMANAGEDIALOGOPTIONS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for LIBRARYMANAGEDIALOGOPTIONS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for LIBRARYMANAGEDIALOGOPTIONS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct LIBRARYOPTIONFLAGS(pub i32);
impl LIBRARYOPTIONFLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for LIBRARYOPTIONFLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for LIBRARYOPTIONFLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for LIBRARYOPTIONFLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for LIBRARYOPTIONFLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for LIBRARYOPTIONFLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct LIBRARYSAVEFLAGS(pub i32);
impl LIBRARYSAVEFLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for LIBRARYSAVEFLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for LIBRARYSAVEFLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for LIBRARYSAVEFLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for LIBRARYSAVEFLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for LIBRARYSAVEFLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const LIBRARY_E_NO_ACCESSIBLE_LOCATION: windows_core::HRESULT = windows_core::HRESULT(0x80270201_u32 as _);
pub const LIBRARY_E_NO_SAVE_LOCATION: windows_core::HRESULT = windows_core::HRESULT(0x80270200_u32 as _);
pub const LINK_E_DELETE: windows_core::HRESULT = windows_core::HRESULT(0x80270103_u32 as _);
pub const LMD_ALLOWUNINDEXABLENETWORKLOCATIONS: LIBRARYMANAGEDIALOGOPTIONS = LIBRARYMANAGEDIALOGOPTIONS(1i32);
pub const LMD_DEFAULT: LIBRARYMANAGEDIALOGOPTIONS = LIBRARYMANAGEDIALOGOPTIONS(0i32);
pub const LOF_DEFAULT: LIBRARYOPTIONFLAGS = LIBRARYOPTIONFLAGS(0i32);
pub const LOF_MASK_ALL: LIBRARYOPTIONFLAGS = LIBRARYOPTIONFLAGS(1i32);
pub const LOF_PINNEDTONAVPANE: LIBRARYOPTIONFLAGS = LIBRARYOPTIONFLAGS(1i32);
#[cfg(feature = "Win32_System_Com")]
pub type LPFNDFMCALLBACK = Option<unsafe extern "system" fn(psf: windows_core::Ref<IShellFolder>, hwnd: super::super::Foundation::HWND, pdtobj: windows_core::Ref<super::super::System::Com::IDataObject>, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT>;
#[cfg(feature = "Win32_System_Ole")]
pub type LPFNVIEWCALLBACK = Option<unsafe extern "system" fn(psvouter: windows_core::Ref<IShellView>, psf: windows_core::Ref<IShellFolder>, hwndmain: super::super::Foundation::HWND, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM) -> windows_core::HRESULT>;
pub const LSF_FAILIFTHERE: LIBRARYSAVEFLAGS = LIBRARYSAVEFLAGS(0i32);
pub const LSF_MAKEUNIQUENAME: LIBRARYSAVEFLAGS = LIBRARYSAVEFLAGS(2i32);
pub const LSF_OVERRIDEEXISTING: LIBRARYSAVEFLAGS = LIBRARYSAVEFLAGS(1i32);
pub const LocalThumbnailCache: windows_core::GUID = windows_core::GUID::from_u128(0x50ef4544_ac9f_4a8e_b21b_8a26180db13f);
pub const MAV_APP_VISIBLE: MONITOR_APP_VISIBILITY = MONITOR_APP_VISIBILITY(2i32);
pub const MAV_NO_APP_VISIBLE: MONITOR_APP_VISIBILITY = MONITOR_APP_VISIBILITY(1i32);
pub const MAV_UNKNOWN: MONITOR_APP_VISIBILITY = MONITOR_APP_VISIBILITY(0i32);
pub const MAXFILELEN: u32 = 13u32;
pub const MAX_COLUMN_DESC_LEN: u32 = 128u32;
pub const MAX_COLUMN_NAME_LEN: u32 = 80u32;
pub const MAX_SYNCMGRHANDLERNAME: u32 = 32u32;
pub const MAX_SYNCMGRITEMNAME: u32 = 128u32;
pub const MAX_SYNCMGR_ID: u32 = 64u32;
pub const MAX_SYNCMGR_NAME: u32 = 128u32;
pub const MAX_SYNCMGR_PROGRESSTEXT: u32 = 260u32;
pub const MBHANDCID_PIDLSELECT: MENUBANDHANDLERCID = MENUBANDHANDLERCID(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct MENUBANDHANDLERCID(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct MENUPOPUPPOPUPFLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct MENUPOPUPSELECT(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct MERGE_UPDATE_STATUS(pub i32);
pub const MIMEASSOCDLG_FL_REGISTER_ASSOC: MIMEASSOCIATIONDIALOG_IN_FLAGS = MIMEASSOCIATIONDIALOG_IN_FLAGS(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct MIMEASSOCIATIONDIALOG_IN_FLAGS(pub i32);
pub const MM_ADDSEPARATOR: MM_FLAGS = MM_FLAGS(1u32);
pub const MM_DONTREMOVESEPS: MM_FLAGS = MM_FLAGS(4u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct MM_FLAGS(pub u32);
impl MM_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for MM_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for MM_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for MM_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for MM_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for MM_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const MM_SUBMENUSHAVEIDS: MM_FLAGS = MM_FLAGS(2u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct MONITOR_APP_VISIBILITY(pub i32);
pub const MPOS_CANCELLEVEL: MENUPOPUPSELECT = MENUPOPUPSELECT(2i32);
pub const MPOS_CHILDTRACKING: MENUPOPUPSELECT = MENUPOPUPSELECT(5i32);
pub const MPOS_EXECUTE: MENUPOPUPSELECT = MENUPOPUPSELECT(0i32);
pub const MPOS_FULLCANCEL: MENUPOPUPSELECT = MENUPOPUPSELECT(1i32);
pub const MPOS_SELECTLEFT: MENUPOPUPSELECT = MENUPOPUPSELECT(3i32);
pub const MPOS_SELECTRIGHT: MENUPOPUPSELECT = MENUPOPUPSELECT(4i32);
pub const MPPF_ALIGN_LEFT: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(33554432i32);
pub const MPPF_ALIGN_RIGHT: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(67108864i32);
pub const MPPF_BOTTOM: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(-2147483648i32);
pub const MPPF_FINALSELECT: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(128i32);
pub const MPPF_FORCEZORDER: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(64i32);
pub const MPPF_INITIALSELECT: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(2i32);
pub const MPPF_KEYBOARD: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(16i32);
pub const MPPF_LEFT: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(1073741824i32);
pub const MPPF_NOANIMATE: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(4i32);
pub const MPPF_POS_MASK: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(-536870912i32);
pub const MPPF_REPOSITION: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(32i32);
pub const MPPF_RIGHT: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(1610612736i32);
pub const MPPF_SETFOCUS: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(1i32);
pub const MPPF_TOP: MENUPOPUPPOPUPFLAGS = MENUPOPUPPOPUPFLAGS(536870912i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MULTIKEYHELPA {
    pub mkSize: u32,
    pub mkKeylist: i8,
    pub szKeyphrase: [i8; 1],
}
impl Default for MULTIKEYHELPA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct MULTIKEYHELPW {
    pub mkSize: u32,
    pub mkKeylist: u16,
    pub szKeyphrase: [u16; 1],
}
impl Default for MULTIKEYHELPW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const MUS_COMPLETE: MERGE_UPDATE_STATUS = MERGE_UPDATE_STATUS(0i32);
pub const MUS_FAILED: MERGE_UPDATE_STATUS = MERGE_UPDATE_STATUS(2i32);
pub const MUS_USERINPUTNEEDED: MERGE_UPDATE_STATUS = MERGE_UPDATE_STATUS(1i32);
pub const MailRecipient: windows_core::GUID = windows_core::GUID::from_u128(0x9e56be60_c50f_11cf_9a2c_00a0c90a90ce);
pub const MergedCategorizer: windows_core::GUID = windows_core::GUID::from_u128(0x8e827c11_33e7_4bc1_b242_8cd9a1c2b304);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NAMESPACEWALKFLAG(pub i32);
impl NAMESPACEWALKFLAG {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for NAMESPACEWALKFLAG {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for NAMESPACEWALKFLAG {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for NAMESPACEWALKFLAG {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for NAMESPACEWALKFLAG {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for NAMESPACEWALKFLAG {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NATIVE_DISPLAY_ORIENTATION(pub i32);
pub const NCM_DISPLAYERRORTIP: u32 = 1028u32;
pub const NCM_GETADDRESS: u32 = 1025u32;
pub const NCM_GETALLOWTYPE: u32 = 1027u32;
pub const NCM_SETALLOWTYPE: u32 = 1026u32;
#[repr(C)]
#[cfg(all(feature = "Win32_NetworkManagement_IpHelper", feature = "Win32_Networking_WinSock"))]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct NC_ADDRESS {
    pub pAddrInfo: *mut super::super::NetworkManagement::IpHelper::NET_ADDRESS_INFO,
    pub PortNumber: u16,
    pub PrefixLength: u8,
}
#[cfg(all(feature = "Win32_NetworkManagement_IpHelper", feature = "Win32_Networking_WinSock"))]
impl Default for NC_ADDRESS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const NDO_LANDSCAPE: NATIVE_DISPLAY_ORIENTATION = NATIVE_DISPLAY_ORIENTATION(0i32);
pub const NDO_PORTRAIT: NATIVE_DISPLAY_ORIENTATION = NATIVE_DISPLAY_ORIENTATION(1i32);
pub const NETCACHE_E_NEGATIVE_CACHE: windows_core::HRESULT = windows_core::HRESULT(0x80270100_u32 as _);
#[repr(C, packed(1))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub struct NEWCPLINFOA {
    pub dwSize: u32,
    pub dwFlags: u32,
    pub dwHelpContext: u32,
    pub lData: isize,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub szName: [i8; 32],
    pub szInfo: [i8; 64],
    pub szHelpFile: [i8; 128],
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for NEWCPLINFOA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub struct NEWCPLINFOW {
    pub dwSize: u32,
    pub dwFlags: u32,
    pub dwHelpContext: u32,
    pub lData: isize,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub szName: [u16; 32],
    pub szInfo: [u16; 64],
    pub szHelpFile: [u16; 128],
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for NEWCPLINFOW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const NIF_GUID: NOTIFY_ICON_DATA_FLAGS = NOTIFY_ICON_DATA_FLAGS(32u32);
pub const NIF_ICON: NOTIFY_ICON_DATA_FLAGS = NOTIFY_ICON_DATA_FLAGS(2u32);
pub const NIF_INFO: NOTIFY_ICON_DATA_FLAGS = NOTIFY_ICON_DATA_FLAGS(16u32);
pub const NIF_MESSAGE: NOTIFY_ICON_DATA_FLAGS = NOTIFY_ICON_DATA_FLAGS(1u32);
pub const NIF_REALTIME: NOTIFY_ICON_DATA_FLAGS = NOTIFY_ICON_DATA_FLAGS(64u32);
pub const NIF_SHOWTIP: NOTIFY_ICON_DATA_FLAGS = NOTIFY_ICON_DATA_FLAGS(128u32);
pub const NIF_STATE: NOTIFY_ICON_DATA_FLAGS = NOTIFY_ICON_DATA_FLAGS(8u32);
pub const NIF_TIP: NOTIFY_ICON_DATA_FLAGS = NOTIFY_ICON_DATA_FLAGS(4u32);
pub const NIIF_ERROR: NOTIFY_ICON_INFOTIP_FLAGS = NOTIFY_ICON_INFOTIP_FLAGS(3u32);
pub const NIIF_ICON_MASK: NOTIFY_ICON_INFOTIP_FLAGS = NOTIFY_ICON_INFOTIP_FLAGS(15u32);
pub const NIIF_INFO: NOTIFY_ICON_INFOTIP_FLAGS = NOTIFY_ICON_INFOTIP_FLAGS(1u32);
pub const NIIF_LARGE_ICON: NOTIFY_ICON_INFOTIP_FLAGS = NOTIFY_ICON_INFOTIP_FLAGS(32u32);
pub const NIIF_NONE: NOTIFY_ICON_INFOTIP_FLAGS = NOTIFY_ICON_INFOTIP_FLAGS(0u32);
pub const NIIF_NOSOUND: NOTIFY_ICON_INFOTIP_FLAGS = NOTIFY_ICON_INFOTIP_FLAGS(16u32);
pub const NIIF_RESPECT_QUIET_TIME: NOTIFY_ICON_INFOTIP_FLAGS = NOTIFY_ICON_INFOTIP_FLAGS(128u32);
pub const NIIF_USER: NOTIFY_ICON_INFOTIP_FLAGS = NOTIFY_ICON_INFOTIP_FLAGS(4u32);
pub const NIIF_WARNING: NOTIFY_ICON_INFOTIP_FLAGS = NOTIFY_ICON_INFOTIP_FLAGS(2u32);
pub const NIM_ADD: NOTIFY_ICON_MESSAGE = NOTIFY_ICON_MESSAGE(0u32);
pub const NIM_DELETE: NOTIFY_ICON_MESSAGE = NOTIFY_ICON_MESSAGE(2u32);
pub const NIM_MODIFY: NOTIFY_ICON_MESSAGE = NOTIFY_ICON_MESSAGE(1u32);
pub const NIM_SETFOCUS: NOTIFY_ICON_MESSAGE = NOTIFY_ICON_MESSAGE(3u32);
pub const NIM_SETVERSION: NOTIFY_ICON_MESSAGE = NOTIFY_ICON_MESSAGE(4u32);
pub const NINF_KEY: u32 = 1u32;
pub const NIN_BALLOONHIDE: u32 = 1027u32;
pub const NIN_BALLOONSHOW: u32 = 1026u32;
pub const NIN_BALLOONTIMEOUT: u32 = 1028u32;
pub const NIN_BALLOONUSERCLICK: u32 = 1029u32;
pub const NIN_POPUPCLOSE: u32 = 1031u32;
pub const NIN_POPUPOPEN: u32 = 1030u32;
pub const NIN_SELECT: u32 = 1024u32;
pub const NIS_HIDDEN: NOTIFY_ICON_STATE = NOTIFY_ICON_STATE(1u32);
pub const NIS_SHAREDICON: NOTIFY_ICON_STATE = NOTIFY_ICON_STATE(2u32);
pub const NMCII_FOLDERS: _NMCII_FLAGS = _NMCII_FLAGS(2i32);
pub const NMCII_ITEMS: _NMCII_FLAGS = _NMCII_FLAGS(1i32);
pub const NMCII_NONE: _NMCII_FLAGS = _NMCII_FLAGS(0i32);
pub const NMCSAEI_EDIT: _NMCSAEI_FLAGS = _NMCSAEI_FLAGS(1i32);
pub const NMCSAEI_SELECT: _NMCSAEI_FLAGS = _NMCSAEI_FLAGS(0i32);
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub struct NOTIFYICONDATAA {
    pub cbSize: u32,
    pub hWnd: super::super::Foundation::HWND,
    pub uID: u32,
    pub uFlags: NOTIFY_ICON_DATA_FLAGS,
    pub uCallbackMessage: u32,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub szTip: [i8; 128],
    pub dwState: NOTIFY_ICON_STATE,
    pub dwStateMask: NOTIFY_ICON_STATE,
    pub szInfo: [i8; 256],
    pub Anonymous: NOTIFYICONDATAA_0,
    pub szInfoTitle: [i8; 64],
    pub dwInfoFlags: NOTIFY_ICON_INFOTIP_FLAGS,
    pub guidItem: windows_core::GUID,
    pub hBalloonIcon: super::WindowsAndMessaging::HICON,
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for NOTIFYICONDATAA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub union NOTIFYICONDATAA_0 {
    pub uTimeout: u32,
    pub uVersion: u32,
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for NOTIFYICONDATAA_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub struct NOTIFYICONDATAA {
    pub cbSize: u32,
    pub hWnd: super::super::Foundation::HWND,
    pub uID: u32,
    pub uFlags: NOTIFY_ICON_DATA_FLAGS,
    pub uCallbackMessage: u32,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub szTip: [i8; 128],
    pub dwState: NOTIFY_ICON_STATE,
    pub dwStateMask: NOTIFY_ICON_STATE,
    pub szInfo: [i8; 256],
    pub Anonymous: NOTIFYICONDATAA_0,
    pub szInfoTitle: [i8; 64],
    pub dwInfoFlags: NOTIFY_ICON_INFOTIP_FLAGS,
    pub guidItem: windows_core::GUID,
    pub hBalloonIcon: super::WindowsAndMessaging::HICON,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for NOTIFYICONDATAA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub union NOTIFYICONDATAA_0 {
    pub uTimeout: u32,
    pub uVersion: u32,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for NOTIFYICONDATAA_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub struct NOTIFYICONDATAW {
    pub cbSize: u32,
    pub hWnd: super::super::Foundation::HWND,
    pub uID: u32,
    pub uFlags: NOTIFY_ICON_DATA_FLAGS,
    pub uCallbackMessage: u32,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub szTip: [u16; 128],
    pub dwState: NOTIFY_ICON_STATE,
    pub dwStateMask: NOTIFY_ICON_STATE,
    pub szInfo: [u16; 256],
    pub Anonymous: NOTIFYICONDATAW_0,
    pub szInfoTitle: [u16; 64],
    pub dwInfoFlags: NOTIFY_ICON_INFOTIP_FLAGS,
    pub guidItem: windows_core::GUID,
    pub hBalloonIcon: super::WindowsAndMessaging::HICON,
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for NOTIFYICONDATAW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub union NOTIFYICONDATAW_0 {
    pub uTimeout: u32,
    pub uVersion: u32,
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for NOTIFYICONDATAW_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub struct NOTIFYICONDATAW {
    pub cbSize: u32,
    pub hWnd: super::super::Foundation::HWND,
    pub uID: u32,
    pub uFlags: NOTIFY_ICON_DATA_FLAGS,
    pub uCallbackMessage: u32,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub szTip: [u16; 128],
    pub dwState: NOTIFY_ICON_STATE,
    pub dwStateMask: NOTIFY_ICON_STATE,
    pub szInfo: [u16; 256],
    pub Anonymous: NOTIFYICONDATAW_0,
    pub szInfoTitle: [u16; 64],
    pub dwInfoFlags: NOTIFY_ICON_INFOTIP_FLAGS,
    pub guidItem: windows_core::GUID,
    pub hBalloonIcon: super::WindowsAndMessaging::HICON,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for NOTIFYICONDATAW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub union NOTIFYICONDATAW_0 {
    pub uTimeout: u32,
    pub uVersion: u32,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for NOTIFYICONDATAW_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy, Default)]
pub struct NOTIFYICONIDENTIFIER {
    pub cbSize: u32,
    pub hWnd: super::super::Foundation::HWND,
    pub uID: u32,
    pub guidItem: windows_core::GUID,
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct NOTIFYICONIDENTIFIER {
    pub cbSize: u32,
    pub hWnd: super::super::Foundation::HWND,
    pub uID: u32,
    pub guidItem: windows_core::GUID,
}
pub const NOTIFYICON_VERSION: u32 = 3u32;
pub const NOTIFYICON_VERSION_4: u32 = 4u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NOTIFY_ICON_DATA_FLAGS(pub u32);
impl NOTIFY_ICON_DATA_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for NOTIFY_ICON_DATA_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for NOTIFY_ICON_DATA_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for NOTIFY_ICON_DATA_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for NOTIFY_ICON_DATA_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for NOTIFY_ICON_DATA_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NOTIFY_ICON_INFOTIP_FLAGS(pub u32);
impl NOTIFY_ICON_INFOTIP_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for NOTIFY_ICON_INFOTIP_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for NOTIFY_ICON_INFOTIP_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for NOTIFY_ICON_INFOTIP_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for NOTIFY_ICON_INFOTIP_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for NOTIFY_ICON_INFOTIP_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NOTIFY_ICON_MESSAGE(pub u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NOTIFY_ICON_STATE(pub u32);
impl NOTIFY_ICON_STATE {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for NOTIFY_ICON_STATE {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for NOTIFY_ICON_STATE {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for NOTIFY_ICON_STATE {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for NOTIFY_ICON_STATE {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for NOTIFY_ICON_STATE {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const NPCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0x3dd6bec0_8193_4ffe_ae25_e08e39ea4063);
#[repr(C)]
#[cfg(feature = "Win32_NetworkManagement_WNet")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct NRESARRAY {
    pub cItems: u32,
    pub nr: [super::super::NetworkManagement::WNet::NETRESOURCEA; 1],
}
#[cfg(feature = "Win32_NetworkManagement_WNet")]
impl Default for NRESARRAY {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(feature = "Win32_UI_Controls")]
#[derive(Clone, Debug, Default, PartialEq)]
pub struct NSTCCUSTOMDRAW {
    pub psi: core::mem::ManuallyDrop<Option<IShellItem>>,
    pub uItemState: u32,
    pub nstcis: u32,
    pub pszText: windows_core::PCWSTR,
    pub iImage: i32,
    pub himl: super::Controls::HIMAGELIST,
    pub iLevel: i32,
    pub iIndent: i32,
}
pub const NSTCDHPOS_ONTOP: i32 = -1i32;
pub const NSTCECT_BUTTON: _NSTCECLICKTYPE = _NSTCECLICKTYPE(3i32);
pub const NSTCECT_DBLCLICK: _NSTCECLICKTYPE = _NSTCECLICKTYPE(4i32);
pub const NSTCECT_LBUTTON: _NSTCECLICKTYPE = _NSTCECLICKTYPE(1i32);
pub const NSTCECT_MBUTTON: _NSTCECLICKTYPE = _NSTCECLICKTYPE(2i32);
pub const NSTCECT_RBUTTON: _NSTCECLICKTYPE = _NSTCECLICKTYPE(3i32);
pub const NSTCEHT_NOWHERE: _NSTCEHITTEST = _NSTCEHITTEST(1i32);
pub const NSTCEHT_ONITEM: _NSTCEHITTEST = _NSTCEHITTEST(70i32);
pub const NSTCEHT_ONITEMBUTTON: _NSTCEHITTEST = _NSTCEHITTEST(16i32);
pub const NSTCEHT_ONITEMICON: _NSTCEHITTEST = _NSTCEHITTEST(2i32);
pub const NSTCEHT_ONITEMINDENT: _NSTCEHITTEST = _NSTCEHITTEST(8i32);
pub const NSTCEHT_ONITEMLABEL: _NSTCEHITTEST = _NSTCEHITTEST(4i32);
pub const NSTCEHT_ONITEMRIGHT: _NSTCEHITTEST = _NSTCEHITTEST(32i32);
pub const NSTCEHT_ONITEMSTATEICON: _NSTCEHITTEST = _NSTCEHITTEST(64i32);
pub const NSTCEHT_ONITEMTABBUTTON: _NSTCEHITTEST = _NSTCEHITTEST(4096i32);
pub const NSTCFC_DELAY_REGISTER_NOTIFY: NSTCFOLDERCAPABILITIES = NSTCFOLDERCAPABILITIES(2i32);
pub const NSTCFC_NONE: NSTCFOLDERCAPABILITIES = NSTCFOLDERCAPABILITIES(0i32);
pub const NSTCFC_PINNEDITEMFILTERING: NSTCFOLDERCAPABILITIES = NSTCFOLDERCAPABILITIES(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NSTCFOLDERCAPABILITIES(pub i32);
impl NSTCFOLDERCAPABILITIES {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for NSTCFOLDERCAPABILITIES {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for NSTCFOLDERCAPABILITIES {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for NSTCFOLDERCAPABILITIES {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for NSTCFOLDERCAPABILITIES {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for NSTCFOLDERCAPABILITIES {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NSTCGNI(pub i32);
pub const NSTCGNI_CHILD: NSTCGNI = NSTCGNI(5i32);
pub const NSTCGNI_FIRSTVISIBLE: NSTCGNI = NSTCGNI(6i32);
pub const NSTCGNI_LASTVISIBLE: NSTCGNI = NSTCGNI(7i32);
pub const NSTCGNI_NEXT: NSTCGNI = NSTCGNI(0i32);
pub const NSTCGNI_NEXTVISIBLE: NSTCGNI = NSTCGNI(1i32);
pub const NSTCGNI_PARENT: NSTCGNI = NSTCGNI(4i32);
pub const NSTCGNI_PREV: NSTCGNI = NSTCGNI(2i32);
pub const NSTCGNI_PREVVISIBLE: NSTCGNI = NSTCGNI(3i32);
pub const NSTCIS_BOLD: _NSTCITEMSTATE = _NSTCITEMSTATE(4i32);
pub const NSTCIS_DISABLED: _NSTCITEMSTATE = _NSTCITEMSTATE(8i32);
pub const NSTCIS_EXPANDED: _NSTCITEMSTATE = _NSTCITEMSTATE(2i32);
pub const NSTCIS_NONE: _NSTCITEMSTATE = _NSTCITEMSTATE(0i32);
pub const NSTCIS_SELECTED: _NSTCITEMSTATE = _NSTCITEMSTATE(1i32);
pub const NSTCIS_SELECTEDNOEXPAND: _NSTCITEMSTATE = _NSTCITEMSTATE(16i32);
pub const NSTCRS_EXPANDED: _NSTCROOTSTYLE = _NSTCROOTSTYLE(2i32);
pub const NSTCRS_HIDDEN: _NSTCROOTSTYLE = _NSTCROOTSTYLE(1i32);
pub const NSTCRS_VISIBLE: _NSTCROOTSTYLE = _NSTCROOTSTYLE(0i32);
pub const NSTCS2_DEFAULT: NSTCSTYLE2 = NSTCSTYLE2(0i32);
pub const NSTCS2_DISPLAYPADDING: NSTCSTYLE2 = NSTCSTYLE2(4i32);
pub const NSTCS2_DISPLAYPINNEDONLY: NSTCSTYLE2 = NSTCSTYLE2(8i32);
pub const NSTCS2_INTERRUPTNOTIFICATIONS: NSTCSTYLE2 = NSTCSTYLE2(1i32);
pub const NSTCS2_SHOWNULLSPACEMENU: NSTCSTYLE2 = NSTCSTYLE2(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NSTCSTYLE2(pub i32);
impl NSTCSTYLE2 {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for NSTCSTYLE2 {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for NSTCSTYLE2 {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for NSTCSTYLE2 {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for NSTCSTYLE2 {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for NSTCSTYLE2 {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const NSTCS_ALLOWJUNCTIONS: _NSTCSTYLE = _NSTCSTYLE(268435456i32);
pub const NSTCS_AUTOHSCROLL: _NSTCSTYLE = _NSTCSTYLE(1048576i32);
pub const NSTCS_BORDER: _NSTCSTYLE = _NSTCSTYLE(32768i32);
pub const NSTCS_CHECKBOXES: _NSTCSTYLE = _NSTCSTYLE(8388608i32);
pub const NSTCS_DIMMEDCHECKBOXES: _NSTCSTYLE = _NSTCSTYLE(67108864i32);
pub const NSTCS_DISABLEDRAGDROP: _NSTCSTYLE = _NSTCSTYLE(4096i32);
pub const NSTCS_EMPTYTEXT: _NSTCSTYLE = _NSTCSTYLE(4194304i32);
pub const NSTCS_EVENHEIGHT: _NSTCSTYLE = _NSTCSTYLE(1024i32);
pub const NSTCS_EXCLUSIONCHECKBOXES: _NSTCSTYLE = _NSTCSTYLE(33554432i32);
pub const NSTCS_FADEINOUTEXPANDOS: _NSTCSTYLE = _NSTCSTYLE(2097152i32);
pub const NSTCS_FAVORITESMODE: _NSTCSTYLE = _NSTCSTYLE(524288i32);
pub const NSTCS_FULLROWSELECT: _NSTCSTYLE = _NSTCSTYLE(8i32);
pub const NSTCS_HASEXPANDOS: _NSTCSTYLE = _NSTCSTYLE(1i32);
pub const NSTCS_HASLINES: _NSTCSTYLE = _NSTCSTYLE(2i32);
pub const NSTCS_HORIZONTALSCROLL: _NSTCSTYLE = _NSTCSTYLE(32i32);
pub const NSTCS_NOEDITLABELS: _NSTCSTYLE = _NSTCSTYLE(65536i32);
pub const NSTCS_NOINDENTCHECKS: _NSTCSTYLE = _NSTCSTYLE(134217728i32);
pub const NSTCS_NOINFOTIP: _NSTCSTYLE = _NSTCSTYLE(512i32);
pub const NSTCS_NOORDERSTREAM: _NSTCSTYLE = _NSTCSTYLE(8192i32);
pub const NSTCS_NOREPLACEOPEN: _NSTCSTYLE = _NSTCSTYLE(2048i32);
pub const NSTCS_PARTIALCHECKBOXES: _NSTCSTYLE = _NSTCSTYLE(16777216i32);
pub const NSTCS_RICHTOOLTIP: _NSTCSTYLE = _NSTCSTYLE(16384i32);
pub const NSTCS_ROOTHASEXPANDO: _NSTCSTYLE = _NSTCSTYLE(64i32);
pub const NSTCS_SHOWDELETEBUTTON: _NSTCSTYLE = _NSTCSTYLE(1073741824i32);
pub const NSTCS_SHOWREFRESHBUTTON: _NSTCSTYLE = _NSTCSTYLE(-2147483648i32);
pub const NSTCS_SHOWSELECTIONALWAYS: _NSTCSTYLE = _NSTCSTYLE(128i32);
pub const NSTCS_SHOWTABSBUTTON: _NSTCSTYLE = _NSTCSTYLE(536870912i32);
pub const NSTCS_SINGLECLICKEXPAND: _NSTCSTYLE = _NSTCSTYLE(4i32);
pub const NSTCS_SPRINGEXPAND: _NSTCSTYLE = _NSTCSTYLE(16i32);
pub const NSTCS_TABSTOP: _NSTCSTYLE = _NSTCSTYLE(131072i32);
pub const NSWF_ACCUMULATE_FOLDERS: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(2048i32);
pub const NSWF_ANY_IMPLIES_ALL: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(32768i32);
pub const NSWF_ASYNC: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(512i32);
pub const NSWF_DEFAULT: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(0i32);
pub const NSWF_DONT_ACCUMULATE_RESULT: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(8i32);
pub const NSWF_DONT_RESOLVE_LINKS: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(1024i32);
pub const NSWF_DONT_SORT: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(4096i32);
pub const NSWF_DONT_TRAVERSE_LINKS: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(4i32);
pub const NSWF_DONT_TRAVERSE_STREAM_JUNCTIONS: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(16384i32);
pub const NSWF_FILESYSTEM_ONLY: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(32i32);
pub const NSWF_FLAG_VIEWORDER: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(128i32);
pub const NSWF_IGNORE_AUTOPLAY_HIDA: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(256i32);
pub const NSWF_NONE_IMPLIES_ALL: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(1i32);
pub const NSWF_ONE_IMPLIES_ALL: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(2i32);
pub const NSWF_SHOW_PROGRESS: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(64i32);
pub const NSWF_TRAVERSE_STREAM_JUNCTIONS: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(16i32);
pub const NSWF_USE_TRANSFER_MEDIUM: NAMESPACEWALKFLAG = NAMESPACEWALKFLAG(8192i32);
pub const NTSCS2_NEVERINSERTNONENUMERATED: NSTCSTYLE2 = NSTCSTYLE2(32i32);
pub const NTSCS2_NOSINGLETONAUTOEXPAND: NSTCSTYLE2 = NSTCSTYLE2(16i32);
#[repr(C, packed(1))]
#[cfg(feature = "Win32_System_Console")]
#[derive(Clone, Copy)]
pub struct NT_CONSOLE_PROPS {
    pub dbh: DATABLOCK_HEADER,
    pub wFillAttribute: u16,
    pub wPopupFillAttribute: u16,
    pub dwScreenBufferSize: super::super::System::Console::COORD,
    pub dwWindowSize: super::super::System::Console::COORD,
    pub dwWindowOrigin: super::super::System::Console::COORD,
    pub nFont: u32,
    pub nInputBufferSize: u32,
    pub dwFontSize: super::super::System::Console::COORD,
    pub uFontFamily: u32,
    pub uFontWeight: u32,
    pub FaceName: [u16; 32],
    pub uCursorSize: u32,
    pub bFullScreen: windows_core::BOOL,
    pub bQuickEdit: windows_core::BOOL,
    pub bInsertMode: windows_core::BOOL,
    pub bAutoPosition: windows_core::BOOL,
    pub uHistoryBufferSize: u32,
    pub uNumberOfHistoryBuffers: u32,
    pub bHistoryNoDup: windows_core::BOOL,
    pub ColorTable: [super::super::Foundation::COLORREF; 16],
}
#[cfg(feature = "Win32_System_Console")]
impl Default for NT_CONSOLE_PROPS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const NT_CONSOLE_PROPS_SIG: u32 = 2684354562u32;
#[repr(C, packed(1))]
#[derive(Clone, Copy, Default)]
pub struct NT_FE_CONSOLE_PROPS {
    pub dbh: DATABLOCK_HEADER,
    pub uCodePage: u32,
}
pub const NT_FE_CONSOLE_PROPS_SIG: u32 = 2684354564u32;
pub const NUM_POINTS: u32 = 3u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NWMF(pub i32);
impl NWMF {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for NWMF {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for NWMF {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for NWMF {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for NWMF {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for NWMF {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const NWMF_FIRST: NWMF = NWMF(4i32);
pub const NWMF_FORCETAB: NWMF = NWMF(131072i32);
pub const NWMF_FORCEWINDOW: NWMF = NWMF(65536i32);
pub const NWMF_FROMDIALOGCHILD: NWMF = NWMF(64i32);
pub const NWMF_HTMLDIALOG: NWMF = NWMF(32i32);
pub const NWMF_INACTIVETAB: NWMF = NWMF(1048576i32);
pub const NWMF_OVERRIDEKEY: NWMF = NWMF(8i32);
pub const NWMF_SHOWHELP: NWMF = NWMF(16i32);
pub const NWMF_SUGGESTTAB: NWMF = NWMF(524288i32);
pub const NWMF_SUGGESTWINDOW: NWMF = NWMF(262144i32);
pub const NWMF_UNLOADING: NWMF = NWMF(1i32);
pub const NWMF_USERALLOWED: NWMF = NWMF(256i32);
pub const NWMF_USERINITED: NWMF = NWMF(2i32);
pub const NWMF_USERREQUESTED: NWMF = NWMF(128i32);
pub const NamespaceTreeControl: windows_core::GUID = windows_core::GUID::from_u128(0xae054212_3535_4430_83ed_d501aa6680e6);
pub const NamespaceWalker: windows_core::GUID = windows_core::GUID::from_u128(0x72eb61e0_8672_4303_9175_f2e4c68b2e7c);
pub const NetworkConnections: windows_core::GUID = windows_core::GUID::from_u128(0x7007acc7_3202_11d1_aad2_00805fc1270e);
pub const NetworkExplorerFolder: windows_core::GUID = windows_core::GUID::from_u128(0xf02c1a0d_be21_4350_88b0_7367fc96ef3c);
pub const NetworkPlaces: windows_core::GUID = windows_core::GUID::from_u128(0x208d2c60_3aea_1069_a2d7_08002b30309d);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct NewProcessCauseConstants(pub i32);
pub const OAIF_ALLOW_REGISTRATION: OPEN_AS_INFO_FLAGS = OPEN_AS_INFO_FLAGS(1i32);
pub const OAIF_EXEC: OPEN_AS_INFO_FLAGS = OPEN_AS_INFO_FLAGS(4i32);
pub const OAIF_FILE_IS_URI: OPEN_AS_INFO_FLAGS = OPEN_AS_INFO_FLAGS(128i32);
pub const OAIF_FORCE_REGISTRATION: OPEN_AS_INFO_FLAGS = OPEN_AS_INFO_FLAGS(8i32);
pub const OAIF_HIDE_REGISTRATION: OPEN_AS_INFO_FLAGS = OPEN_AS_INFO_FLAGS(32i32);
pub const OAIF_REGISTER_EXT: OPEN_AS_INFO_FLAGS = OPEN_AS_INFO_FLAGS(2i32);
pub const OAIF_URL_PROTOCOL: OPEN_AS_INFO_FLAGS = OPEN_AS_INFO_FLAGS(64i32);
pub const OFASI_EDIT: u32 = 1u32;
pub const OFASI_OPENDESKTOP: u32 = 2u32;
pub const OFFLINE_STATUS_INCOMPLETE: u32 = 4u32;
pub const OFFLINE_STATUS_LOCAL: u32 = 1u32;
pub const OFFLINE_STATUS_REMOTE: u32 = 2u32;
pub const OFS_DIRTYCACHE: OfflineFolderStatus = OfflineFolderStatus(3i32);
pub const OFS_INACTIVE: OfflineFolderStatus = OfflineFolderStatus(-1i32);
pub const OFS_OFFLINE: OfflineFolderStatus = OfflineFolderStatus(1i32);
pub const OFS_ONLINE: OfflineFolderStatus = OfflineFolderStatus(0i32);
pub const OFS_SERVERBACK: OfflineFolderStatus = OfflineFolderStatus(2i32);
pub const OF_CAP_CANCLOSE: u32 = 2u32;
pub const OF_CAP_CANSWITCHTO: u32 = 1u32;
pub const OI_ASYNC: u32 = 4294962926u32;
pub const OI_DEFAULT: u32 = 0u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct OPENASINFO {
    pub pcszFile: windows_core::PCWSTR,
    pub pcszClass: windows_core::PCWSTR,
    pub oaifInFlags: OPEN_AS_INFO_FLAGS,
}
pub const OPENPROPS_INHIBITPIF: u32 = 32768u32;
pub const OPENPROPS_NONE: u32 = 0u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct OPEN_AS_INFO_FLAGS(pub i32);
impl OPEN_AS_INFO_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for OPEN_AS_INFO_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for OPEN_AS_INFO_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for OPEN_AS_INFO_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for OPEN_AS_INFO_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for OPEN_AS_INFO_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy, Default)]
pub struct OPEN_PRINTER_PROPS_INFOA {
    pub dwSize: u32,
    pub pszSheetName: windows_core::PSTR,
    pub uSheetIndex: u32,
    pub dwFlags: u32,
    pub bModal: windows_core::BOOL,
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct OPEN_PRINTER_PROPS_INFOA {
    pub dwSize: u32,
    pub pszSheetName: windows_core::PSTR,
    pub uSheetIndex: u32,
    pub dwFlags: u32,
    pub bModal: windows_core::BOOL,
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy, Default)]
pub struct OPEN_PRINTER_PROPS_INFOW {
    pub dwSize: u32,
    pub pszSheetName: windows_core::PWSTR,
    pub uSheetIndex: u32,
    pub dwFlags: u32,
    pub bModal: windows_core::BOOL,
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct OPEN_PRINTER_PROPS_INFOW {
    pub dwSize: u32,
    pub pszSheetName: windows_core::PWSTR,
    pub uSheetIndex: u32,
    pub dwFlags: u32,
    pub bModal: windows_core::BOOL,
}
pub const OPPROGDLG_ALLOWUNDO: _OPPROGDLGF = _OPPROGDLGF(256i32);
pub const OPPROGDLG_DEFAULT: _OPPROGDLGF = _OPPROGDLGF(0i32);
pub const OPPROGDLG_DONTDISPLAYDESTPATH: _OPPROGDLGF = _OPPROGDLGF(1024i32);
pub const OPPROGDLG_DONTDISPLAYLOCATIONS: _OPPROGDLGF = _OPPROGDLGF(4096i32);
pub const OPPROGDLG_DONTDISPLAYSOURCEPATH: _OPPROGDLGF = _OPPROGDLGF(512i32);
pub const OPPROGDLG_ENABLEPAUSE: _OPPROGDLGF = _OPPROGDLGF(128i32);
pub const OPPROGDLG_NOMULTIDAYESTIMATES: _OPPROGDLGF = _OPPROGDLGF(2048i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct OS(pub u32);
pub const OS_ADVSERVER: OS = OS(22u32);
pub const OS_ANYSERVER: OS = OS(29u32);
pub const OS_APPLIANCE: OS = OS(36u32);
pub const OS_DATACENTER: OS = OS(21u32);
pub const OS_DOMAINMEMBER: OS = OS(28u32);
pub const OS_EMBEDDED: OS = OS(13u32);
pub const OS_FASTUSERSWITCHING: OS = OS(26u32);
pub const OS_HOME: OS = OS(19u32);
pub const OS_MEDIACENTER: OS = OS(35u32);
pub const OS_MEORGREATER: OS = OS(17u32);
pub const OS_NT: OS = OS(1u32);
pub const OS_NT4ORGREATER: OS = OS(3u32);
pub const OS_PERSONALTERMINALSERVER: OS = OS(25u32);
pub const OS_PROFESSIONAL: OS = OS(20u32);
pub const OS_SERVER: OS = OS(23u32);
pub const OS_SERVERADMINUI: OS = OS(34u32);
pub const OS_SMALLBUSINESSSERVER: OS = OS(32u32);
pub const OS_TABLETPC: OS = OS(33u32);
pub const OS_TERMINALCLIENT: OS = OS(14u32);
pub const OS_TERMINALREMOTEADMIN: OS = OS(15u32);
pub const OS_TERMINALSERVER: OS = OS(24u32);
pub const OS_WEBSERVER: OS = OS(31u32);
pub const OS_WELCOMELOGONUI: OS = OS(27u32);
pub const OS_WIN2000ADVSERVER: OS = OS(10u32);
pub const OS_WIN2000DATACENTER: OS = OS(11u32);
pub const OS_WIN2000ORGREATER: OS = OS(7u32);
pub const OS_WIN2000PRO: OS = OS(8u32);
pub const OS_WIN2000SERVER: OS = OS(9u32);
pub const OS_WIN2000TERMINAL: OS = OS(12u32);
pub const OS_WIN95ORGREATER: OS = OS(2u32);
pub const OS_WIN95_GOLD: OS = OS(16u32);
pub const OS_WIN98ORGREATER: OS = OS(5u32);
pub const OS_WIN98_GOLD: OS = OS(6u32);
pub const OS_WINDOWS: OS = OS(0u32);
pub const OS_WOW6432: OS = OS(30u32);
pub const OS_XPORGREATER: OS = OS(18u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct OfflineFolderStatus(pub i32);
pub const OnexCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0x07aa0886_cc8d_4e19_a410_1c75af686e62);
pub const OnexPlapSmartcardCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0x33c86cd6_705f_4ba1_9adb_67070b837775);
pub const OpenControlPanel: windows_core::GUID = windows_core::GUID::from_u128(0x06622d85_6856_4460_8de1_a81921b41c4b);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PACKAGE_EXECUTION_STATE(pub i32);
pub const PAI_ASSIGNEDTIME: PUBAPPINFOFLAGS = PUBAPPINFOFLAGS(2i32);
pub const PAI_EXPIRETIME: PUBAPPINFOFLAGS = PUBAPPINFOFLAGS(16i32);
pub const PAI_PUBLISHEDTIME: PUBAPPINFOFLAGS = PUBAPPINFOFLAGS(4i32);
pub const PAI_SCHEDULEDTIME: PUBAPPINFOFLAGS = PUBAPPINFOFLAGS(8i32);
pub const PAI_SOURCE: PUBAPPINFOFLAGS = PUBAPPINFOFLAGS(1i32);
pub const PANE_NAVIGATION: u32 = 5u32;
pub const PANE_NONE: u32 = 4294967295u32;
pub const PANE_OFFLINE: u32 = 2u32;
pub const PANE_PRINTER: u32 = 3u32;
pub const PANE_PRIVACY: u32 = 7u32;
pub const PANE_PROGRESS: u32 = 6u32;
pub const PANE_SSL: u32 = 4u32;
pub const PANE_ZONE: u32 = 1u32;
pub type PAPPCONSTRAIN_CHANGE_ROUTINE = Option<unsafe extern "system" fn(constrained: bool, context: *const core::ffi::c_void)>;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
pub struct PAPPCONSTRAIN_REGISTRATION(pub isize);
pub type PAPPSTATE_CHANGE_ROUTINE = Option<unsafe extern "system" fn(quiesced: bool, context: *const core::ffi::c_void)>;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Default)]
pub struct PAPPSTATE_REGISTRATION(pub isize);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct PARSEDURLA {
    pub cbSize: u32,
    pub pszProtocol: windows_core::PCSTR,
    pub cchProtocol: u32,
    pub pszSuffix: windows_core::PCSTR,
    pub cchSuffix: u32,
    pub nScheme: u32,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct PARSEDURLW {
    pub cbSize: u32,
    pub pszProtocol: windows_core::PCWSTR,
    pub cchProtocol: u32,
    pub pszSuffix: windows_core::PCWSTR,
    pub cchSuffix: u32,
    pub nScheme: u32,
}
pub const PATHCCH_ALLOW_LONG_PATHS: PATHCCH_OPTIONS = PATHCCH_OPTIONS(1u32);
pub const PATHCCH_CANONICALIZE_SLASHES: PATHCCH_OPTIONS = PATHCCH_OPTIONS(64u32);
pub const PATHCCH_DO_NOT_NORMALIZE_SEGMENTS: PATHCCH_OPTIONS = PATHCCH_OPTIONS(8u32);
pub const PATHCCH_ENSURE_IS_EXTENDED_LENGTH_PATH: PATHCCH_OPTIONS = PATHCCH_OPTIONS(16u32);
pub const PATHCCH_ENSURE_TRAILING_SLASH: PATHCCH_OPTIONS = PATHCCH_OPTIONS(32u32);
pub const PATHCCH_FORCE_DISABLE_LONG_NAME_PROCESS: PATHCCH_OPTIONS = PATHCCH_OPTIONS(4u32);
pub const PATHCCH_FORCE_ENABLE_LONG_NAME_PROCESS: PATHCCH_OPTIONS = PATHCCH_OPTIONS(2u32);
pub const PATHCCH_MAX_CCH: u32 = 32768u32;
pub const PATHCCH_NONE: PATHCCH_OPTIONS = PATHCCH_OPTIONS(0u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PATHCCH_OPTIONS(pub u32);
impl PATHCCH_OPTIONS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for PATHCCH_OPTIONS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for PATHCCH_OPTIONS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for PATHCCH_OPTIONS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for PATHCCH_OPTIONS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for PATHCCH_OPTIONS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const PCS_FATAL: PCS_RET = PCS_RET(2147483648u32);
pub const PCS_PATHTOOLONG: PCS_RET = PCS_RET(8u32);
pub const PCS_REMOVEDCHAR: PCS_RET = PCS_RET(2u32);
pub const PCS_REPLACEDCHAR: PCS_RET = PCS_RET(1u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PCS_RET(pub u32);
impl PCS_RET {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for PCS_RET {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for PCS_RET {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for PCS_RET {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for PCS_RET {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for PCS_RET {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const PCS_TRUNCATED: PCS_RET = PCS_RET(4u32);
pub const PDM_DEFAULT: _PDMODE = _PDMODE(0i32);
pub const PDM_ERRORSBLOCKING: _PDMODE = _PDMODE(8i32);
pub const PDM_INDETERMINATE: _PDMODE = _PDMODE(16i32);
pub const PDM_PREFLIGHT: _PDMODE = _PDMODE(2i32);
pub const PDM_RUN: _PDMODE = _PDMODE(1i32);
pub const PDM_UNDOING: _PDMODE = _PDMODE(4i32);
pub const PDTIMER_PAUSE: u32 = 2u32;
pub const PDTIMER_RESET: u32 = 1u32;
pub const PDTIMER_RESUME: u32 = 3u32;
#[repr(C)]
#[cfg(feature = "Win32_UI_Shell_Common")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct PERSIST_FOLDER_TARGET_INFO {
    pub pidlTargetFolder: *mut Common::ITEMIDLIST,
    pub szTargetParsingName: [u16; 260],
    pub szNetworkProvider: [u16; 260],
    pub dwAttributes: u32,
    pub csidl: i32,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl Default for PERSIST_FOLDER_TARGET_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const PES_RUNNING: PACKAGE_EXECUTION_STATE = PACKAGE_EXECUTION_STATE(1i32);
pub const PES_SUSPENDED: PACKAGE_EXECUTION_STATE = PACKAGE_EXECUTION_STATE(3i32);
pub const PES_SUSPENDING: PACKAGE_EXECUTION_STATE = PACKAGE_EXECUTION_STATE(2i32);
pub const PES_TERMINATED: PACKAGE_EXECUTION_STATE = PACKAGE_EXECUTION_STATE(4i32);
pub const PES_UNKNOWN: PACKAGE_EXECUTION_STATE = PACKAGE_EXECUTION_STATE(0i32);
pub type PFNCANSHAREFOLDERW = Option<unsafe extern "system" fn(pszpath: windows_core::PCWSTR) -> windows_core::HRESULT>;
pub type PFNSHOWSHAREFOLDERUIW = Option<unsafe extern "system" fn(hwndparent: super::super::Foundation::HWND, pszpath: windows_core::PCWSTR) -> windows_core::HRESULT>;
pub const PIDASI_AVG_DATA_RATE: u32 = 4u32;
pub const PIDASI_CHANNEL_COUNT: u32 = 7u32;
pub const PIDASI_COMPRESSION: u32 = 10u32;
pub const PIDASI_FORMAT: u32 = 2u32;
pub const PIDASI_SAMPLE_RATE: u32 = 5u32;
pub const PIDASI_SAMPLE_SIZE: u32 = 6u32;
pub const PIDASI_STREAM_NAME: u32 = 9u32;
pub const PIDASI_STREAM_NUMBER: u32 = 8u32;
pub const PIDASI_TIMELENGTH: u32 = 3u32;
pub const PIDDRSI_DESCRIPTION: u32 = 3u32;
pub const PIDDRSI_PLAYCOUNT: u32 = 4u32;
pub const PIDDRSI_PLAYEXPIRES: u32 = 6u32;
pub const PIDDRSI_PLAYSTARTS: u32 = 5u32;
pub const PIDDRSI_PROTECTED: u32 = 2u32;
pub const PIDISF_CACHEDSTICKY: PIDISF_FLAGS = PIDISF_FLAGS(2i32);
pub const PIDISF_CACHEIMAGES: PIDISF_FLAGS = PIDISF_FLAGS(16i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PIDISF_FLAGS(pub i32);
impl PIDISF_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for PIDISF_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for PIDISF_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for PIDISF_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for PIDISF_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for PIDISF_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const PIDISF_FOLLOWALLLINKS: PIDISF_FLAGS = PIDISF_FLAGS(32i32);
pub const PIDISF_RECENTLYCHANGED: PIDISF_FLAGS = PIDISF_FLAGS(1i32);
pub const PIDISM_DONTWATCH: PIDISM_OPTIONS = PIDISM_OPTIONS(2i32);
pub const PIDISM_GLOBAL: PIDISM_OPTIONS = PIDISM_OPTIONS(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PIDISM_OPTIONS(pub i32);
pub const PIDISM_WATCH: PIDISM_OPTIONS = PIDISM_OPTIONS(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PIDISR_INFO(pub i32);
pub const PIDISR_NEEDS_ADD: PIDISR_INFO = PIDISR_INFO(1i32);
pub const PIDISR_NEEDS_DELETE: PIDISR_INFO = PIDISR_INFO(3i32);
pub const PIDISR_NEEDS_UPDATE: PIDISR_INFO = PIDISR_INFO(2i32);
pub const PIDISR_UP_TO_DATE: PIDISR_INFO = PIDISR_INFO(0i32);
pub const PIDSI_ALBUM: u32 = 4u32;
pub const PIDSI_ARTIST: u32 = 2u32;
pub const PIDSI_COMMENT: u32 = 6u32;
pub const PIDSI_GENRE: u32 = 11u32;
pub const PIDSI_LYRICS: u32 = 12u32;
pub const PIDSI_SONGTITLE: u32 = 3u32;
pub const PIDSI_TRACK: u32 = 7u32;
pub const PIDSI_YEAR: u32 = 5u32;
pub const PIDVSI_COMPRESSION: u32 = 10u32;
pub const PIDVSI_DATA_RATE: u32 = 8u32;
pub const PIDVSI_FRAME_COUNT: u32 = 5u32;
pub const PIDVSI_FRAME_HEIGHT: u32 = 4u32;
pub const PIDVSI_FRAME_RATE: u32 = 6u32;
pub const PIDVSI_FRAME_WIDTH: u32 = 3u32;
pub const PIDVSI_SAMPLE_SIZE: u32 = 9u32;
pub const PIDVSI_STREAM_NAME: u32 = 2u32;
pub const PIDVSI_STREAM_NUMBER: u32 = 11u32;
pub const PIDVSI_TIMELENGTH: u32 = 7u32;
pub const PID_COMPUTERNAME: u32 = 5u32;
pub const PID_CONTROLPANEL_CATEGORY: u32 = 2u32;
pub const PID_DESCRIPTIONID: u32 = 2u32;
pub const PID_DISPLACED_DATE: u32 = 3u32;
pub const PID_DISPLACED_FROM: u32 = 2u32;
pub const PID_DISPLAY_PROPERTIES: u32 = 0u32;
pub const PID_FINDDATA: u32 = 0u32;
pub const PID_HTMLINFOTIPFILE: u32 = 5u32;
pub const PID_INTROTEXT: u32 = 1u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PID_INTSITE(pub i32);
pub const PID_INTSITE_AUTHOR: PID_INTSITE = PID_INTSITE(3i32);
pub const PID_INTSITE_CODEPAGE: PID_INTSITE = PID_INTSITE(18i32);
pub const PID_INTSITE_COMMENT: PID_INTSITE = PID_INTSITE(8i32);
pub const PID_INTSITE_CONTENTCODE: PID_INTSITE = PID_INTSITE(11i32);
pub const PID_INTSITE_CONTENTLEN: PID_INTSITE = PID_INTSITE(10i32);
pub const PID_INTSITE_DESCRIPTION: PID_INTSITE = PID_INTSITE(7i32);
pub const PID_INTSITE_FLAGS: PID_INTSITE = PID_INTSITE(9i32);
pub const PID_INTSITE_ICONFILE: PID_INTSITE = PID_INTSITE(21i32);
pub const PID_INTSITE_ICONINDEX: PID_INTSITE = PID_INTSITE(20i32);
pub const PID_INTSITE_LASTMOD: PID_INTSITE = PID_INTSITE(5i32);
pub const PID_INTSITE_LASTVISIT: PID_INTSITE = PID_INTSITE(4i32);
pub const PID_INTSITE_RECURSE: PID_INTSITE = PID_INTSITE(12i32);
pub const PID_INTSITE_ROAMED: PID_INTSITE = PID_INTSITE(34i32);
pub const PID_INTSITE_SUBSCRIPTION: PID_INTSITE = PID_INTSITE(14i32);
pub const PID_INTSITE_TITLE: PID_INTSITE = PID_INTSITE(16i32);
pub const PID_INTSITE_TRACKING: PID_INTSITE = PID_INTSITE(19i32);
pub const PID_INTSITE_URL: PID_INTSITE = PID_INTSITE(15i32);
pub const PID_INTSITE_VISITCOUNT: PID_INTSITE = PID_INTSITE(6i32);
pub const PID_INTSITE_WATCH: PID_INTSITE = PID_INTSITE(13i32);
pub const PID_INTSITE_WHATSNEW: PID_INTSITE = PID_INTSITE(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PID_IS(pub i32);
pub const PID_IS_AUTHOR: PID_IS = PID_IS(11i32);
pub const PID_IS_COMMENT: PID_IS = PID_IS(13i32);
pub const PID_IS_DESCRIPTION: PID_IS = PID_IS(12i32);
pub const PID_IS_HOTKEY: PID_IS = PID_IS(6i32);
pub const PID_IS_ICONFILE: PID_IS = PID_IS(9i32);
pub const PID_IS_ICONINDEX: PID_IS = PID_IS(8i32);
pub const PID_IS_NAME: PID_IS = PID_IS(4i32);
pub const PID_IS_ROAMED: PID_IS = PID_IS(15i32);
pub const PID_IS_SHOWCMD: PID_IS = PID_IS(7i32);
pub const PID_IS_URL: PID_IS = PID_IS(2i32);
pub const PID_IS_WHATSNEW: PID_IS = PID_IS(10i32);
pub const PID_IS_WORKINGDIR: PID_IS = PID_IS(5i32);
pub const PID_LINK_TARGET: u32 = 2u32;
pub const PID_LINK_TARGET_TYPE: u32 = 3u32;
pub const PID_MISC_ACCESSCOUNT: u32 = 3u32;
pub const PID_MISC_OWNER: u32 = 4u32;
pub const PID_MISC_PICS: u32 = 6u32;
pub const PID_MISC_STATUS: u32 = 2u32;
pub const PID_NETRESOURCE: u32 = 1u32;
pub const PID_NETWORKLOCATION: u32 = 4u32;
pub const PID_QUERY_RANK: u32 = 2u32;
pub const PID_SHARE_CSC_STATUS: u32 = 2u32;
pub const PID_SYNC_COPY_IN: u32 = 2u32;
pub const PID_VOLUME_CAPACITY: u32 = 3u32;
pub const PID_VOLUME_FILESYSTEM: u32 = 4u32;
pub const PID_VOLUME_FREE: u32 = 2u32;
pub const PID_WHICHFOLDER: u32 = 3u32;
pub const PIFDEFFILESIZE: u32 = 80u32;
pub const PIFDEFPATHSIZE: u32 = 64u32;
pub const PIFMAXFILEPATH: u32 = 260u32;
pub const PIFNAMESIZE: u32 = 30u32;
pub const PIFPARAMSSIZE: u32 = 64u32;
pub const PIFSHDATASIZE: u32 = 64u32;
pub const PIFSHPROGSIZE: u32 = 64u32;
pub const PIFSTARTLOCSIZE: u32 = 63u32;
pub const PINLogonCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0xcb82ea12_9f71_446d_89e1_8d0924e1256e);
pub const PLATFORM_BROWSERONLY: u32 = 1u32;
pub const PLATFORM_IE3: u32 = 1u32;
pub const PLATFORM_INTEGRATED: u32 = 2u32;
pub const PLATFORM_UNKNOWN: u32 = 0u32;
pub const PMSF_DONT_STRIP_SPACES: u32 = 65536u32;
pub const PMSF_MULTIPLE: u32 = 1u32;
pub const PMSF_NORMAL: u32 = 0u32;
pub const PO_DELETE: u32 = 19u32;
pub const PO_PORTCHANGE: u32 = 32u32;
pub const PO_RENAME: u32 = 20u32;
pub const PO_REN_PORT: u32 = 52u32;
pub const PPCF_ADDARGUMENTS: u32 = 3u32;
pub const PPCF_ADDQUOTES: u32 = 1u32;
pub const PPCF_FORCEQUALIFY: u32 = 64u32;
pub const PPCF_LONGESTPOSSIBLE: u32 = 128u32;
pub const PPCF_NODIRECTORIES: u32 = 16u32;
#[repr(C)]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct PREVIEWHANDLERFRAMEINFO {
    pub haccel: super::WindowsAndMessaging::HACCEL,
    pub cAccelEntries: u32,
}
pub const PRF_DONTFINDLNK: PRF_FLAGS = PRF_FLAGS(8i32);
pub const PRF_FIRSTDIRDEF: PRF_FLAGS = PRF_FLAGS(4i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PRF_FLAGS(pub i32);
impl PRF_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for PRF_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for PRF_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for PRF_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for PRF_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for PRF_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const PRF_REQUIREABSOLUTE: PRF_FLAGS = PRF_FLAGS(16i32);
pub const PRF_TRYPROGRAMEXTENSIONS: PRF_FLAGS = PRF_FLAGS(3i32);
pub const PRF_VERIFYEXISTS: PRF_FLAGS = PRF_FLAGS(1i32);
pub const PRINTACTION_DOCUMENTDEFAULTS: u32 = 6u32;
pub const PRINTACTION_NETINSTALL: u32 = 2u32;
pub const PRINTACTION_NETINSTALLLINK: u32 = 3u32;
pub const PRINTACTION_OPEN: u32 = 0u32;
pub const PRINTACTION_OPENNETPRN: u32 = 5u32;
pub const PRINTACTION_PROPERTIES: u32 = 1u32;
pub const PRINTACTION_SERVERPROPERTIES: u32 = 7u32;
pub const PRINTACTION_TESTPAGE: u32 = 4u32;
pub const PRINT_PROP_FORCE_NAME: u32 = 1u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct PROFILEINFOA {
    pub dwSize: u32,
    pub dwFlags: u32,
    pub lpUserName: windows_core::PSTR,
    pub lpProfilePath: windows_core::PSTR,
    pub lpDefaultPath: windows_core::PSTR,
    pub lpServerName: windows_core::PSTR,
    pub lpPolicyPath: windows_core::PSTR,
    pub hProfile: super::super::Foundation::HANDLE,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct PROFILEINFOW {
    pub dwSize: u32,
    pub dwFlags: u32,
    pub lpUserName: windows_core::PWSTR,
    pub lpProfilePath: windows_core::PWSTR,
    pub lpDefaultPath: windows_core::PWSTR,
    pub lpServerName: windows_core::PWSTR,
    pub lpPolicyPath: windows_core::PWSTR,
    pub hProfile: super::super::Foundation::HANDLE,
}
pub const PROGDLG_AUTOTIME: u32 = 2u32;
pub const PROGDLG_MARQUEEPROGRESS: u32 = 32u32;
pub const PROGDLG_MODAL: u32 = 1u32;
pub const PROGDLG_NOCANCEL: u32 = 64u32;
pub const PROGDLG_NOMINIMIZE: u32 = 8u32;
pub const PROGDLG_NOPROGRESSBAR: u32 = 16u32;
pub const PROGDLG_NORMAL: u32 = 0u32;
pub const PROGDLG_NOTIME: u32 = 4u32;
pub const PROPSTR_EXTENSIONCOMPLETIONSTATE: windows_core::PCWSTR = windows_core::w!("ExtensionCompletionState");
pub const PROP_CONTRACT_DELEGATE: windows_core::PCWSTR = windows_core::w!("ContractDelegate");
pub const PSGUID_AUDIO: windows_core::GUID = windows_core::GUID::from_u128(0x64440490_4c8b_11d1_8b70_080036b11a03);
pub const PSGUID_BRIEFCASE: windows_core::GUID = windows_core::GUID::from_u128(0x328d8b21_7729_4bfc_954c_902b329d56b0);
pub const PSGUID_CONTROLPANEL: windows_core::GUID = windows_core::GUID::from_u128(0x305ca226_d286_468e_b848_2b2e8e697b74);
pub const PSGUID_CUSTOMIMAGEPROPERTIES: windows_core::GUID = windows_core::GUID::from_u128(0x7ecd8b0e_c136_4a9b_9411_4ebd6673ccc3);
pub const PSGUID_DISPLACED: windows_core::GUID = windows_core::GUID::from_u128(0x9b174b33_40ff_11d2_a27e_00c04fc30871);
pub const PSGUID_DOCUMENTSUMMARYINFORMATION: windows_core::GUID = windows_core::GUID::from_u128(0xd5cdd502_2e9c_101b_9397_08002b2cf9ae);
pub const PSGUID_DRM: windows_core::GUID = windows_core::GUID::from_u128(0xaeac19e4_89ae_4508_b9b7_bb867abee2ed);
pub const PSGUID_IMAGEPROPERTIES: windows_core::GUID = windows_core::GUID::from_u128(0x14b81da1_0135_4d31_96d9_6cbfc9671a99);
pub const PSGUID_IMAGESUMMARYINFORMATION: windows_core::GUID = windows_core::GUID::from_u128(0x6444048f_4c8b_11d1_8b70_080036b11a03);
pub const PSGUID_LIBRARYPROPERTIES: windows_core::GUID = windows_core::GUID::from_u128(0x5d76b67f_9b3d_44bb_b6ae_25da4f638a67);
pub const PSGUID_LINK: windows_core::GUID = windows_core::GUID::from_u128(0xb9b4b3fc_2b51_4a42_b5d8_324146afcf25);
pub const PSGUID_MEDIAFILESUMMARYINFORMATION: windows_core::GUID = windows_core::GUID::from_u128(0x64440492_4c8b_11d1_8b70_080036b11a03);
pub const PSGUID_MISC: windows_core::GUID = windows_core::GUID::from_u128(0x9b174b34_40ff_11d2_a27e_00c04fc30871);
pub const PSGUID_MUSIC: windows_core::GUID = windows_core::GUID::from_u128(0x56a3372e_ce9c_11d2_9f0e_006097c686f6);
pub const PSGUID_QUERY_D: windows_core::GUID = windows_core::GUID::from_u128(0x49691c90_7e17_101a_a91c_08002b2ecda9);
pub const PSGUID_SHARE: windows_core::GUID = windows_core::GUID::from_u128(0xd8c3986f_813b_449c_845d_87b95d674ade);
pub const PSGUID_SHELLDETAILS: windows_core::GUID = windows_core::GUID::from_u128(0x28636aa6_953d_11d2_b5d6_00c04fd918d0);
pub const PSGUID_SUMMARYINFORMATION: windows_core::GUID = windows_core::GUID::from_u128(0xf29f85e0_4ff9_1068_ab91_08002b27b3d9);
pub const PSGUID_VIDEO: windows_core::GUID = windows_core::GUID::from_u128(0x64440491_4c8b_11d1_8b70_080036b11a03);
pub const PSGUID_VOLUME: windows_core::GUID = windows_core::GUID::from_u128(0x9b174b35_40ff_11d2_a27e_00c04fc30871);
pub const PSGUID_WEBVIEW: windows_core::GUID = windows_core::GUID::from_u128(0xf2275480_f782_4291_bd94_f13693513aec);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct PUBAPPINFO {
    pub cbSize: u32,
    pub dwMask: u32,
    pub pszSource: windows_core::PWSTR,
    pub stAssigned: super::super::Foundation::SYSTEMTIME,
    pub stPublished: super::super::Foundation::SYSTEMTIME,
    pub stScheduled: super::super::Foundation::SYSTEMTIME,
    pub stExpire: super::super::Foundation::SYSTEMTIME,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct PUBAPPINFOFLAGS(pub i32);
pub const PackageDebugSettings: windows_core::GUID = windows_core::GUID::from_u128(0xb1aec16f_2383_4852_b0e9_8f0b1dc66b4d);
pub const PasswordCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0x60b78e88_ead8_445c_9cfd_0b87f74ea6cd);
pub const PreviousVersions: windows_core::GUID = windows_core::GUID::from_u128(0x596ab062_b4d2_4215_9f74_e9109b0a8153);
pub const PropertiesUI: windows_core::GUID = windows_core::GUID::from_u128(0xd912f8cf_0396_4915_884e_fb425d32943b);
pub const ProtectedModeRedirect: NewProcessCauseConstants = NewProcessCauseConstants(1i32);
pub const PublishDropTarget: windows_core::GUID = windows_core::GUID::from_u128(0xcc6eeffb_43f6_46c5_9619_51d571967f7d);
pub const PublishingWizard: windows_core::GUID = windows_core::GUID::from_u128(0x6b33163c_76a5_4b6c_bf21_45de9cd503a1);
#[repr(C)]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct QCMINFO {
    pub hmenu: super::WindowsAndMessaging::HMENU,
    pub indexMenu: u32,
    pub idCmdFirst: u32,
    pub idCmdLast: u32,
    pub pIdMap: *const QCMINFO_IDMAP,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for QCMINFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct QCMINFO_IDMAP {
    pub nMaxIds: u32,
    pub pIdList: [QCMINFO_IDMAP_PLACEMENT; 1],
}
impl Default for QCMINFO_IDMAP {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct QCMINFO_IDMAP_PLACEMENT {
    pub id: u32,
    pub fFlags: u32,
}
pub const QCMINFO_PLACE_AFTER: u32 = 1u32;
pub const QCMINFO_PLACE_BEFORE: u32 = 0u32;
pub const QIF_CACHED: QITIPF_FLAGS = QITIPF_FLAGS(1i32);
pub const QIF_DONTEXPANDFOLDER: QITIPF_FLAGS = QITIPF_FLAGS(2i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct QITAB {
    pub piid: *const windows_core::GUID,
    pub dwOffset: u32,
}
impl Default for QITAB {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const QITIPF_DEFAULT: QITIPF_FLAGS = QITIPF_FLAGS(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct QITIPF_FLAGS(pub i32);
impl QITIPF_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for QITIPF_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for QITIPF_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for QITIPF_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for QITIPF_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for QITIPF_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const QITIPF_LINKNOTARGET: QITIPF_FLAGS = QITIPF_FLAGS(2i32);
pub const QITIPF_LINKUSETARGET: QITIPF_FLAGS = QITIPF_FLAGS(4i32);
pub const QITIPF_SINGLELINE: QITIPF_FLAGS = QITIPF_FLAGS(16i32);
pub const QITIPF_USENAME: QITIPF_FLAGS = QITIPF_FLAGS(1i32);
pub const QITIPF_USESLOWTIP: QITIPF_FLAGS = QITIPF_FLAGS(8i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct QUERY_USER_NOTIFICATION_STATE(pub i32);
pub const QUNS_ACCEPTS_NOTIFICATIONS: QUERY_USER_NOTIFICATION_STATE = QUERY_USER_NOTIFICATION_STATE(5i32);
pub const QUNS_APP: QUERY_USER_NOTIFICATION_STATE = QUERY_USER_NOTIFICATION_STATE(7i32);
pub const QUNS_BUSY: QUERY_USER_NOTIFICATION_STATE = QUERY_USER_NOTIFICATION_STATE(2i32);
pub const QUNS_NOT_PRESENT: QUERY_USER_NOTIFICATION_STATE = QUERY_USER_NOTIFICATION_STATE(1i32);
pub const QUNS_PRESENTATION_MODE: QUERY_USER_NOTIFICATION_STATE = QUERY_USER_NOTIFICATION_STATE(4i32);
pub const QUNS_QUIET_TIME: QUERY_USER_NOTIFICATION_STATE = QUERY_USER_NOTIFICATION_STATE(6i32);
pub const QUNS_RUNNING_D3D_FULL_SCREEN: QUERY_USER_NOTIFICATION_STATE = QUERY_USER_NOTIFICATION_STATE(3i32);
pub const QueryCancelAutoPlay: windows_core::GUID = windows_core::GUID::from_u128(0x331f1768_05a9_4ddd_b86e_dae34ddc998a);
pub const RASProvider: windows_core::GUID = windows_core::GUID::from_u128(0x5537e283_b1e7_4ef8_9c6e_7ab0afe5056d);
pub const REFRESH_COMPLETELY: RefreshConstants = RefreshConstants(3i32);
pub const REFRESH_IFEXPIRED: RefreshConstants = RefreshConstants(1i32);
pub const REFRESH_NORMAL: RefreshConstants = RefreshConstants(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct RESTRICTIONS(pub i32);
pub const REST_ALLOWBITBUCKDRIVES: RESTRICTIONS = RESTRICTIONS(1073741905i32);
pub const REST_ALLOWCOMMENTTOGGLE: RESTRICTIONS = RESTRICTIONS(1090519044i32);
pub const REST_ALLOWFILECLSIDJUNCTIONS: RESTRICTIONS = RESTRICTIONS(1073741980i32);
pub const REST_ALLOWLEGACYWEBVIEW: RESTRICTIONS = RESTRICTIONS(1073741955i32);
pub const REST_ALLOWUNHASHEDWEBVIEW: RESTRICTIONS = RESTRICTIONS(1073741954i32);
pub const REST_ARP_DONTGROUPPATCHES: RESTRICTIONS = RESTRICTIONS(1073741996i32);
pub const REST_ARP_NOADDPAGE: RESTRICTIONS = RESTRICTIONS(1073741867i32);
pub const REST_ARP_NOARP: RESTRICTIONS = RESTRICTIONS(1073741865i32);
pub const REST_ARP_NOCHOOSEPROGRAMSPAGE: RESTRICTIONS = RESTRICTIONS(1073741997i32);
pub const REST_ARP_NOREMOVEPAGE: RESTRICTIONS = RESTRICTIONS(1073741866i32);
pub const REST_ARP_NOWINSETUPPAGE: RESTRICTIONS = RESTRICTIONS(1073741868i32);
pub const REST_ARP_ShowPostSetup: RESTRICTIONS = RESTRICTIONS(1073741861i32);
pub const REST_BITBUCKCONFIRMDELETE: RESTRICTIONS = RESTRICTIONS(1073741941i32);
pub const REST_BITBUCKNOPROP: RESTRICTIONS = RESTRICTIONS(1073741942i32);
pub const REST_BITBUCKNUKEONDELETE: RESTRICTIONS = RESTRICTIONS(1073741940i32);
pub const REST_CLASSICSHELL: RESTRICTIONS = RESTRICTIONS(1073741832i32);
pub const REST_CLEARRECENTDOCSONEXIT: RESTRICTIONS = RESTRICTIONS(1073741831i32);
pub const REST_DISALLOWCPL: RESTRICTIONS = RESTRICTIONS(1073741889i32);
pub const REST_DISALLOWRUN: RESTRICTIONS = RESTRICTIONS(1073741886i32);
pub const REST_DONTRETRYBADNETNAME: RESTRICTIONS = RESTRICTIONS(1073741979i32);
pub const REST_DONTSHOWSUPERHIDDEN: RESTRICTIONS = RESTRICTIONS(1073741879i32);
pub const REST_ENFORCESHELLEXTSECURITY: RESTRICTIONS = RESTRICTIONS(1048576i32);
pub const REST_ENUMWORKGROUP: RESTRICTIONS = RESTRICTIONS(1073741864i32);
pub const REST_FORCEACTIVEDESKTOPON: RESTRICTIONS = RESTRICTIONS(1073741898i32);
pub const REST_FORCECOPYACLWITHFILE: RESTRICTIONS = RESTRICTIONS(1073741851i32);
pub const REST_FORCESTARTMENULOGOFF: RESTRICTIONS = RESTRICTIONS(1073741874i32);
pub const REST_GREYMSIADS: RESTRICTIONS = RESTRICTIONS(1073741869i32);
pub const REST_HASFINDCOMPUTERS: RESTRICTIONS = RESTRICTIONS(1073741858i32);
pub const REST_HIDECLOCK: RESTRICTIONS = RESTRICTIONS(1073741936i32);
pub const REST_HIDERUNASVERB: RESTRICTIONS = RESTRICTIONS(1073741948i32);
pub const REST_INHERITCONSOLEHANDLES: RESTRICTIONS = RESTRICTIONS(1073741958i32);
pub const REST_INTELLIMENUS: RESTRICTIONS = RESTRICTIONS(1073741859i32);
pub const REST_LINKRESOLVEIGNORELINKINFO: RESTRICTIONS = RESTRICTIONS(2097152i32);
pub const REST_MYCOMPNOPROP: RESTRICTIONS = RESTRICTIONS(1073741912i32);
pub const REST_MYDOCSNOPROP: RESTRICTIONS = RESTRICTIONS(1073741913i32);
pub const REST_MYDOCSONNET: RESTRICTIONS = RESTRICTIONS(262144i32);
pub const REST_MaxRecentDocs: RESTRICTIONS = RESTRICTIONS(1073741872i32);
pub const REST_NOACTIVEDESKTOP: RESTRICTIONS = RESTRICTIONS(1073741828i32);
pub const REST_NOACTIVEDESKTOPCHANGES: RESTRICTIONS = RESTRICTIONS(1073741829i32);
pub const REST_NOADDDESKCOMP: RESTRICTIONS = RESTRICTIONS(1073741843i32);
pub const REST_NOAUTOTRAYNOTIFY: RESTRICTIONS = RESTRICTIONS(1073741909i32);
pub const REST_NOCDBURNING: RESTRICTIONS = RESTRICTIONS(1073741911i32);
pub const REST_NOCHANGEMAPPEDDRIVECOMMENT: RESTRICTIONS = RESTRICTIONS(1073741871i32);
pub const REST_NOCHANGEMAPPEDDRIVELABEL: RESTRICTIONS = RESTRICTIONS(1073741870i32);
pub const REST_NOCHANGESTARMENU: RESTRICTIONS = RESTRICTIONS(1073741856i32);
pub const REST_NOCHANGINGWALLPAPER: RESTRICTIONS = RESTRICTIONS(1073741841i32);
pub const REST_NOCLOSE: RESTRICTIONS = RESTRICTIONS(2i32);
pub const REST_NOCLOSEDESKCOMP: RESTRICTIONS = RESTRICTIONS(1073741845i32);
pub const REST_NOCLOSE_DRAGDROPBAND: RESTRICTIONS = RESTRICTIONS(1073741846i32);
pub const REST_NOCOLORCHOICE: RESTRICTIONS = RESTRICTIONS(1073741919i32);
pub const REST_NOCOMMONGROUPS: RESTRICTIONS = RESTRICTIONS(4194304i32);
pub const REST_NOCONTROLPANEL: RESTRICTIONS = RESTRICTIONS(1073741863i32);
pub const REST_NOCONTROLPANELBARRICADE: RESTRICTIONS = RESTRICTIONS(1073741907i32);
pub const REST_NOCSC: RESTRICTIONS = RESTRICTIONS(1073741862i32);
pub const REST_NOCURRENTUSERRUN: RESTRICTIONS = RESTRICTIONS(1073741895i32);
pub const REST_NOCURRENTUSERRUNONCE: RESTRICTIONS = RESTRICTIONS(1073741897i32);
pub const REST_NOCUSTOMIZETHISFOLDER: RESTRICTIONS = RESTRICTIONS(1073741876i32);
pub const REST_NOCUSTOMIZEWEBVIEW: RESTRICTIONS = RESTRICTIONS(1073741833i32);
pub const REST_NODELDESKCOMP: RESTRICTIONS = RESTRICTIONS(1073741844i32);
pub const REST_NODESKCOMP: RESTRICTIONS = RESTRICTIONS(1073741842i32);
pub const REST_NODESKTOP: RESTRICTIONS = RESTRICTIONS(64i32);
pub const REST_NODESKTOPCLEANUP: RESTRICTIONS = RESTRICTIONS(1073741939i32);
pub const REST_NODISCONNECT: RESTRICTIONS = RESTRICTIONS(1090519041i32);
pub const REST_NODISPBACKGROUND: RESTRICTIONS = RESTRICTIONS(1073741943i32);
pub const REST_NODISPLAYAPPEARANCEPAGE: RESTRICTIONS = RESTRICTIONS(1073741915i32);
pub const REST_NODISPLAYCPL: RESTRICTIONS = RESTRICTIONS(1073741947i32);
pub const REST_NODISPSCREENSAVEPG: RESTRICTIONS = RESTRICTIONS(1073741944i32);
pub const REST_NODISPSCREENSAVEPREVIEW: RESTRICTIONS = RESTRICTIONS(1073741946i32);
pub const REST_NODISPSETTINGSPG: RESTRICTIONS = RESTRICTIONS(1073741945i32);
pub const REST_NODRIVEAUTORUN: RESTRICTIONS = RESTRICTIONS(512i32);
pub const REST_NODRIVES: RESTRICTIONS = RESTRICTIONS(256i32);
pub const REST_NODRIVETYPEAUTORUN: RESTRICTIONS = RESTRICTIONS(1024i32);
pub const REST_NOEDITDESKCOMP: RESTRICTIONS = RESTRICTIONS(1073741848i32);
pub const REST_NOENCRYPTION: RESTRICTIONS = RESTRICTIONS(1073741877i32);
pub const REST_NOENCRYPTONMOVE: RESTRICTIONS = RESTRICTIONS(1073741893i32);
pub const REST_NOENTIRENETWORK: RESTRICTIONS = RESTRICTIONS(1073741938i32);
pub const REST_NOENUMENTIRENETWORK: RESTRICTIONS = RESTRICTIONS(1073741971i32);
pub const REST_NOEXITTODOS: RESTRICTIONS = RESTRICTIONS(524288i32);
pub const REST_NOFAVORITESMENU: RESTRICTIONS = RESTRICTIONS(1073741830i32);
pub const REST_NOFILEASSOCIATE: RESTRICTIONS = RESTRICTIONS(1090519043i32);
pub const REST_NOFILEMENU: RESTRICTIONS = RESTRICTIONS(8i32);
pub const REST_NOFIND: RESTRICTIONS = RESTRICTIONS(128i32);
pub const REST_NOFOLDEROPTIONS: RESTRICTIONS = RESTRICTIONS(1073741857i32);
pub const REST_NOFORGETSOFTWAREUPDATE: RESTRICTIONS = RESTRICTIONS(1073741853i32);
pub const REST_NOHARDWARETAB: RESTRICTIONS = RESTRICTIONS(1073741881i32);
pub const REST_NOHTMLWALLPAPER: RESTRICTIONS = RESTRICTIONS(1073741840i32);
pub const REST_NOINTERNETICON: RESTRICTIONS = RESTRICTIONS(1073741825i32);
pub const REST_NOINTERNETOPENWITH: RESTRICTIONS = RESTRICTIONS(1073741973i32);
pub const REST_NOLOCALMACHINERUN: RESTRICTIONS = RESTRICTIONS(1073741894i32);
pub const REST_NOLOCALMACHINERUNONCE: RESTRICTIONS = RESTRICTIONS(1073741896i32);
pub const REST_NOLOWDISKSPACECHECKS: RESTRICTIONS = RESTRICTIONS(1073741937i32);
pub const REST_NOMANAGEMYCOMPUTERVERB: RESTRICTIONS = RESTRICTIONS(1073741884i32);
pub const REST_NOMOVINGBAND: RESTRICTIONS = RESTRICTIONS(1073741847i32);
pub const REST_NOMYCOMPUTERICON: RESTRICTIONS = RESTRICTIONS(1073741923i32);
pub const REST_NONE: RESTRICTIONS = RESTRICTIONS(0i32);
pub const REST_NONETCONNECTDISCONNECT: RESTRICTIONS = RESTRICTIONS(134217728i32);
pub const REST_NONETCRAWL: RESTRICTIONS = RESTRICTIONS(1073741901i32);
pub const REST_NONETHOOD: RESTRICTIONS = RESTRICTIONS(2048i32);
pub const REST_NONETWORKCONNECTIONS: RESTRICTIONS = RESTRICTIONS(1073741873i32);
pub const REST_NONLEGACYSHELLMODE: RESTRICTIONS = RESTRICTIONS(1073741906i32);
pub const REST_NOONLINEPRINTSWIZARD: RESTRICTIONS = RESTRICTIONS(1073741952i32);
pub const REST_NOPRINTERADD: RESTRICTIONS = RESTRICTIONS(65536i32);
pub const REST_NOPRINTERDELETE: RESTRICTIONS = RESTRICTIONS(32768i32);
pub const REST_NOPRINTERTABS: RESTRICTIONS = RESTRICTIONS(16384i32);
pub const REST_NOPUBLISHWIZARD: RESTRICTIONS = RESTRICTIONS(1073741951i32);
pub const REST_NORECENTDOCSHISTORY: RESTRICTIONS = RESTRICTIONS(1073741826i32);
pub const REST_NORECENTDOCSMENU: RESTRICTIONS = RESTRICTIONS(1073741827i32);
pub const REST_NOREMOTECHANGENOTIFY: RESTRICTIONS = RESTRICTIONS(1073741969i32);
pub const REST_NOREMOTERECURSIVEEVENTS: RESTRICTIONS = RESTRICTIONS(1073741961i32);
pub const REST_NORESOLVESEARCH: RESTRICTIONS = RESTRICTIONS(1073741849i32);
pub const REST_NORESOLVETRACK: RESTRICTIONS = RESTRICTIONS(1073741850i32);
pub const REST_NORUN: RESTRICTIONS = RESTRICTIONS(1i32);
pub const REST_NORUNASINSTALLPROMPT: RESTRICTIONS = RESTRICTIONS(1073741882i32);
pub const REST_NOSAVESET: RESTRICTIONS = RESTRICTIONS(4i32);
pub const REST_NOSECURITY: RESTRICTIONS = RESTRICTIONS(1090519042i32);
pub const REST_NOSETACTIVEDESKTOP: RESTRICTIONS = RESTRICTIONS(1073741854i32);
pub const REST_NOSETFOLDERS: RESTRICTIONS = RESTRICTIONS(16i32);
pub const REST_NOSETTASKBAR: RESTRICTIONS = RESTRICTIONS(32i32);
pub const REST_NOSETTINGSASSIST: RESTRICTIONS = RESTRICTIONS(536870912i32);
pub const REST_NOSHAREDDOCUMENTS: RESTRICTIONS = RESTRICTIONS(1073741902i32);
pub const REST_NOSHELLSEARCHBUTTON: RESTRICTIONS = RESTRICTIONS(1073741880i32);
pub const REST_NOSIZECHOICE: RESTRICTIONS = RESTRICTIONS(1073741918i32);
pub const REST_NOSMBALLOONTIP: RESTRICTIONS = RESTRICTIONS(1073741890i32);
pub const REST_NOSMCONFIGUREPROGRAMS: RESTRICTIONS = RESTRICTIONS(1073741935i32);
pub const REST_NOSMEJECTPC: RESTRICTIONS = RESTRICTIONS(1073741927i32);
pub const REST_NOSMHELP: RESTRICTIONS = RESTRICTIONS(1073741891i32);
pub const REST_NOSMMFUPROGRAMS: RESTRICTIONS = RESTRICTIONS(1073741929i32);
pub const REST_NOSMMOREPROGRAMS: RESTRICTIONS = RESTRICTIONS(1073741928i32);
pub const REST_NOSMMYDOCS: RESTRICTIONS = RESTRICTIONS(1073741903i32);
pub const REST_NOSMMYMUSIC: RESTRICTIONS = RESTRICTIONS(1073741926i32);
pub const REST_NOSMMYPICS: RESTRICTIONS = RESTRICTIONS(1073741904i32);
pub const REST_NOSMNETWORKPLACES: RESTRICTIONS = RESTRICTIONS(1073741924i32);
pub const REST_NOSMPINNEDLIST: RESTRICTIONS = RESTRICTIONS(1073741925i32);
pub const REST_NOSTARTMENUSUBFOLDERS: RESTRICTIONS = RESTRICTIONS(131072i32);
pub const REST_NOSTARTPAGE: RESTRICTIONS = RESTRICTIONS(1073741908i32);
pub const REST_NOSTARTPANEL: RESTRICTIONS = RESTRICTIONS(1073741914i32);
pub const REST_NOSTRCMPLOGICAL: RESTRICTIONS = RESTRICTIONS(1073741950i32);
pub const REST_NOTASKGROUPING: RESTRICTIONS = RESTRICTIONS(1073741910i32);
pub const REST_NOTHEMESTAB: RESTRICTIONS = RESTRICTIONS(1073741916i32);
pub const REST_NOTHUMBNAILCACHE: RESTRICTIONS = RESTRICTIONS(1073741949i32);
pub const REST_NOTOOLBARSONTASKBAR: RESTRICTIONS = RESTRICTIONS(1073741931i32);
pub const REST_NOTRAYCONTEXTMENU: RESTRICTIONS = RESTRICTIONS(33554432i32);
pub const REST_NOTRAYITEMSDISPLAY: RESTRICTIONS = RESTRICTIONS(1073741930i32);
pub const REST_NOUPDATEWINDOWS: RESTRICTIONS = RESTRICTIONS(1073741855i32);
pub const REST_NOUPNPINSTALL: RESTRICTIONS = RESTRICTIONS(1073741981i32);
pub const REST_NOUSERNAMEINSTARTPANEL: RESTRICTIONS = RESTRICTIONS(1073741922i32);
pub const REST_NOVIEWCONTEXTMENU: RESTRICTIONS = RESTRICTIONS(67108864i32);
pub const REST_NOVIEWONDRIVE: RESTRICTIONS = RESTRICTIONS(1073741900i32);
pub const REST_NOVISUALSTYLECHOICE: RESTRICTIONS = RESTRICTIONS(1073741917i32);
pub const REST_NOWEB: RESTRICTIONS = RESTRICTIONS(16777216i32);
pub const REST_NOWEBSERVICES: RESTRICTIONS = RESTRICTIONS(1073741953i32);
pub const REST_NOWEBVIEW: RESTRICTIONS = RESTRICTIONS(1073741875i32);
pub const REST_NOWELCOMESCREEN: RESTRICTIONS = RESTRICTIONS(1073741887i32);
pub const REST_NOWINKEYS: RESTRICTIONS = RESTRICTIONS(1073741892i32);
pub const REST_PROMPTRUNASINSTALLNETPATH: RESTRICTIONS = RESTRICTIONS(1073741883i32);
pub const REST_RESTRICTCPL: RESTRICTIONS = RESTRICTIONS(1073741888i32);
pub const REST_RESTRICTRUN: RESTRICTIONS = RESTRICTIONS(8192i32);
pub const REST_REVERTWEBVIEWSECURITY: RESTRICTIONS = RESTRICTIONS(1073741956i32);
pub const REST_RUNDLGMEMCHECKBOX: RESTRICTIONS = RESTRICTIONS(1073741860i32);
pub const REST_SEPARATEDESKTOPPROCESS: RESTRICTIONS = RESTRICTIONS(8388608i32);
pub const REST_SETVISUALSTYLE: RESTRICTIONS = RESTRICTIONS(1073741920i32);
pub const REST_STARTBANNER: RESTRICTIONS = RESTRICTIONS(4096i32);
pub const REST_STARTMENULOGOFF: RESTRICTIONS = RESTRICTIONS(268435456i32);
pub const REST_STARTRUNNOHOMEPATH: RESTRICTIONS = RESTRICTIONS(1073741921i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct RefreshConstants(pub i32);
pub const ResizeThumbnail: ThumbnailStreamCacheOptions = ThumbnailStreamCacheOptions(2i32);
pub const ReturnOnlyIfCached: ThumbnailStreamCacheOptions = ThumbnailStreamCacheOptions(1i32);
pub const SBSC_HIDE: SHELLBROWSERSHOWCONTROL = SHELLBROWSERSHOWCONTROL(0i32);
pub const SBSC_QUERY: SHELLBROWSERSHOWCONTROL = SHELLBROWSERSHOWCONTROL(3i32);
pub const SBSC_SHOW: SHELLBROWSERSHOWCONTROL = SHELLBROWSERSHOWCONTROL(1i32);
pub const SBSC_TOGGLE: SHELLBROWSERSHOWCONTROL = SHELLBROWSERSHOWCONTROL(2i32);
pub const SBSP_ABSOLUTE: u32 = 0u32;
pub const SBSP_ACTIVATE_NOFOCUS: u32 = 524288u32;
pub const SBSP_ALLOW_AUTONAVIGATE: u32 = 65536u32;
pub const SBSP_CALLERUNTRUSTED: u32 = 8388608u32;
pub const SBSP_CREATENOHISTORY: u32 = 1048576u32;
pub const SBSP_DEFBROWSER: u32 = 0u32;
pub const SBSP_DEFMODE: u32 = 0u32;
pub const SBSP_EXPLOREMODE: u32 = 32u32;
pub const SBSP_FEEDNAVIGATION: u32 = 536870912u32;
pub const SBSP_HELPMODE: u32 = 64u32;
pub const SBSP_INITIATEDBYHLINKFRAME: u32 = 2147483648u32;
pub const SBSP_KEEPSAMETEMPLATE: u32 = 131072u32;
pub const SBSP_KEEPWORDWHEELTEXT: u32 = 262144u32;
pub const SBSP_NAVIGATEBACK: u32 = 16384u32;
pub const SBSP_NAVIGATEFORWARD: u32 = 32768u32;
pub const SBSP_NEWBROWSER: u32 = 2u32;
pub const SBSP_NOAUTOSELECT: u32 = 67108864u32;
pub const SBSP_NOTRANSFERHIST: u32 = 128u32;
pub const SBSP_OPENMODE: u32 = 16u32;
pub const SBSP_PARENT: u32 = 8192u32;
pub const SBSP_PLAYNOSOUND: u32 = 2097152u32;
pub const SBSP_REDIRECT: u32 = 1073741824u32;
pub const SBSP_RELATIVE: u32 = 4096u32;
pub const SBSP_SAMEBROWSER: u32 = 1u32;
pub const SBSP_TRUSTEDFORACTIVEX: u32 = 268435456u32;
pub const SBSP_TRUSTFIRSTDOWNLOAD: u32 = 16777216u32;
pub const SBSP_UNTRUSTEDFORDOWNLOAD: u32 = 33554432u32;
pub const SBSP_WRITENOHISTORY: u32 = 134217728u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SCALE_CHANGE_FLAGS(pub i32);
impl SCALE_CHANGE_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SCALE_CHANGE_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SCALE_CHANGE_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SCALE_CHANGE_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SCALE_CHANGE_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SCALE_CHANGE_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SCF_PHYSICAL: SCALE_CHANGE_FLAGS = SCALE_CHANGE_FLAGS(2i32);
pub const SCF_SCALE: SCALE_CHANGE_FLAGS = SCALE_CHANGE_FLAGS(1i32);
pub const SCF_VALUE_NONE: SCALE_CHANGE_FLAGS = SCALE_CHANGE_FLAGS(0i32);
pub const SCHEME_CREATE: u32 = 128u32;
pub const SCHEME_DISPLAY: u32 = 1u32;
pub const SCHEME_DONOTUSE: u32 = 64u32;
pub const SCHEME_EDIT: u32 = 2u32;
pub const SCHEME_GLOBAL: u32 = 8u32;
pub const SCHEME_LOCAL: u32 = 4u32;
pub const SCHEME_REFRESH: u32 = 16u32;
pub const SCHEME_UPDATE: u32 = 32u32;
pub const SCNRT_DISABLE: SCNRT_STATUS = SCNRT_STATUS(1i32);
pub const SCNRT_ENABLE: SCNRT_STATUS = SCNRT_STATUS(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SCNRT_STATUS(pub i32);
pub const SCRM_VERIFYPW: u32 = 32768u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SECURELOCKCODE(pub i32);
pub const SECURELOCK_FIRSTSUGGEST: SECURELOCKCODE = SECURELOCKCODE(7i32);
pub const SECURELOCK_NOCHANGE: SECURELOCKCODE = SECURELOCKCODE(-1i32);
pub const SECURELOCK_SET_FORTEZZA: SECURELOCKCODE = SECURELOCKCODE(5i32);
pub const SECURELOCK_SET_MIXED: SECURELOCKCODE = SECURELOCKCODE(1i32);
pub const SECURELOCK_SET_SECURE128BIT: SECURELOCKCODE = SECURELOCKCODE(6i32);
pub const SECURELOCK_SET_SECURE40BIT: SECURELOCKCODE = SECURELOCKCODE(3i32);
pub const SECURELOCK_SET_SECURE56BIT: SECURELOCKCODE = SECURELOCKCODE(4i32);
pub const SECURELOCK_SET_SECUREUNKNOWNBIT: SECURELOCKCODE = SECURELOCKCODE(2i32);
pub const SECURELOCK_SET_UNSECURE: SECURELOCKCODE = SECURELOCKCODE(0i32);
pub const SECURELOCK_SUGGEST_FORTEZZA: SECURELOCKCODE = SECURELOCKCODE(12i32);
pub const SECURELOCK_SUGGEST_MIXED: SECURELOCKCODE = SECURELOCKCODE(8i32);
pub const SECURELOCK_SUGGEST_SECURE128BIT: SECURELOCKCODE = SECURELOCKCODE(13i32);
pub const SECURELOCK_SUGGEST_SECURE40BIT: SECURELOCKCODE = SECURELOCKCODE(10i32);
pub const SECURELOCK_SUGGEST_SECURE56BIT: SECURELOCKCODE = SECURELOCKCODE(11i32);
pub const SECURELOCK_SUGGEST_SECUREUNKNOWNBIT: SECURELOCKCODE = SECURELOCKCODE(9i32);
pub const SECURELOCK_SUGGEST_UNSECURE: SECURELOCKCODE = SECURELOCKCODE(7i32);
pub const SEE_MASK_ASYNCOK: u32 = 1048576u32;
pub const SEE_MASK_CLASSKEY: u32 = 3u32;
pub const SEE_MASK_CLASSNAME: u32 = 1u32;
pub const SEE_MASK_CONNECTNETDRV: u32 = 128u32;
pub const SEE_MASK_DEFAULT: u32 = 0u32;
pub const SEE_MASK_DOENVSUBST: u32 = 512u32;
pub const SEE_MASK_FLAG_DDEWAIT: u32 = 256u32;
pub const SEE_MASK_FLAG_HINST_IS_SITE: u32 = 134217728u32;
pub const SEE_MASK_FLAG_LOG_USAGE: u32 = 67108864u32;
pub const SEE_MASK_FLAG_NO_UI: u32 = 1024u32;
pub const SEE_MASK_HMONITOR: u32 = 2097152u32;
pub const SEE_MASK_HOTKEY: u32 = 32u32;
pub const SEE_MASK_ICON: u32 = 16u32;
pub const SEE_MASK_IDLIST: u32 = 4u32;
pub const SEE_MASK_INVOKEIDLIST: u32 = 12u32;
pub const SEE_MASK_NOASYNC: u32 = 256u32;
pub const SEE_MASK_NOCLOSEPROCESS: u32 = 64u32;
pub const SEE_MASK_NOQUERYCLASSSTORE: u32 = 16777216u32;
pub const SEE_MASK_NOZONECHECKS: u32 = 8388608u32;
pub const SEE_MASK_NO_CONSOLE: u32 = 32768u32;
pub const SEE_MASK_UNICODE: u32 = 16384u32;
pub const SEE_MASK_WAITFORINPUTIDLE: u32 = 33554432u32;
pub const SETPROPS_NONE: u32 = 0u32;
pub const SE_ERR_ACCESSDENIED: u32 = 5u32;
pub const SE_ERR_ASSOCINCOMPLETE: u32 = 27u32;
pub const SE_ERR_DDEBUSY: u32 = 30u32;
pub const SE_ERR_DDEFAIL: u32 = 29u32;
pub const SE_ERR_DDETIMEOUT: u32 = 28u32;
pub const SE_ERR_DLLNOTFOUND: u32 = 32u32;
pub const SE_ERR_FNF: u32 = 2u32;
pub const SE_ERR_NOASSOC: u32 = 31u32;
pub const SE_ERR_OOM: u32 = 8u32;
pub const SE_ERR_PNF: u32 = 3u32;
pub const SE_ERR_SHARE: u32 = 26u32;
pub const SFBID_PIDLCHANGED: i32 = 0i32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SFBS_FLAGS(pub i32);
pub const SFBS_FLAGS_ROUND_TO_NEAREST_DISPLAYED_DIGIT: SFBS_FLAGS = SFBS_FLAGS(1i32);
pub const SFBS_FLAGS_TRUNCATE_UNDISPLAYED_DECIMAL_DIGITS: SFBS_FLAGS = SFBS_FLAGS(2i32);
pub const SFVM_ADDOBJECT: u32 = 3u32;
pub const SFVM_ADDPROPERTYPAGES: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(47i32);
pub const SFVM_BACKGROUNDENUM: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(32i32);
pub const SFVM_BACKGROUNDENUMDONE: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(48i32);
pub const SFVM_COLUMNCLICK: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(24i32);
pub const SFVM_DEFITEMCOUNT: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(26i32);
pub const SFVM_DEFVIEWMODE: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(27i32);
pub const SFVM_DIDDRAGDROP: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(36i32);
pub const SFVM_FSNOTIFY: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(14i32);
pub const SFVM_GETANIMATION: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(68i32);
pub const SFVM_GETBUTTONINFO: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(5i32);
pub const SFVM_GETBUTTONS: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(6i32);
pub const SFVM_GETDETAILSOF: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(23i32);
pub const SFVM_GETHELPTEXT: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(3i32);
pub const SFVM_GETHELPTOPIC: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(63i32);
pub const SFVM_GETNOTIFY: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(49i32);
pub const SFVM_GETPANE: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(59i32);
pub const SFVM_GETSELECTEDOBJECTS: u32 = 9u32;
pub const SFVM_GETSORTDEFAULTS: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(53i32);
pub const SFVM_GETTOOLTIPTEXT: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(4i32);
pub const SFVM_GETZONE: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(58i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SFVM_HELPTOPIC_DATA {
    pub wszHelpFile: [u16; 260],
    pub wszHelpTopic: [u16; 260],
}
impl Default for SFVM_HELPTOPIC_DATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SFVM_INITMENUPOPUP: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(7i32);
pub const SFVM_INVOKECOMMAND: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(2i32);
pub const SFVM_MERGEMENU: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SFVM_MESSAGE_ID(pub i32);
#[repr(C)]
#[cfg(feature = "Win32_UI_Controls")]
#[derive(Clone, Copy, Debug, Default)]
pub struct SFVM_PROPPAGE_DATA {
    pub dwReserved: u32,
    pub pfn: super::Controls::LPFNSVADDPROPSHEETPAGE,
    pub lParam: super::super::Foundation::LPARAM,
}
pub const SFVM_QUERYFSNOTIFY: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(25i32);
pub const SFVM_REARRANGE: u32 = 1u32;
pub const SFVM_REMOVEOBJECT: u32 = 6u32;
pub const SFVM_SETCLIPBOARD: u32 = 16u32;
pub const SFVM_SETISFV: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(39i32);
pub const SFVM_SETITEMPOS: u32 = 14u32;
pub const SFVM_SETPOINTS: u32 = 23u32;
pub const SFVM_SIZE: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(57i32);
pub const SFVM_THISIDLIST: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(41i32);
pub const SFVM_UNMERGEMENU: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(28i32);
pub const SFVM_UPDATEOBJECT: u32 = 7u32;
pub const SFVM_UPDATESTATUSBAR: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(31i32);
pub const SFVM_WINDOWCREATED: SFVM_MESSAGE_ID = SFVM_MESSAGE_ID(15i32);
pub const SFVSOC_INVALIDATE_ALL: u32 = 1u32;
pub const SFVSOC_NOSCROLL: u32 = 2u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SFVS_SELECT(pub i32);
pub const SFVS_SELECT_ALLITEMS: SFVS_SELECT = SFVS_SELECT(1i32);
pub const SFVS_SELECT_INVERT: SFVS_SELECT = SFVS_SELECT(2i32);
pub const SFVS_SELECT_NONE: SFVS_SELECT = SFVS_SELECT(0i32);
pub const SFVVO_DESKTOPHTML: ShellFolderViewOptions = ShellFolderViewOptions(512i32);
pub const SFVVO_DOUBLECLICKINWEBVIEW: ShellFolderViewOptions = ShellFolderViewOptions(128i32);
pub const SFVVO_SHOWALLOBJECTS: ShellFolderViewOptions = ShellFolderViewOptions(1i32);
pub const SFVVO_SHOWCOMPCOLOR: ShellFolderViewOptions = ShellFolderViewOptions(8i32);
pub const SFVVO_SHOWEXTENSIONS: ShellFolderViewOptions = ShellFolderViewOptions(2i32);
pub const SFVVO_SHOWSYSFILES: ShellFolderViewOptions = ShellFolderViewOptions(32i32);
pub const SFVVO_WIN95CLASSIC: ShellFolderViewOptions = ShellFolderViewOptions(64i32);
#[repr(C)]
#[cfg(feature = "Win32_System_Ole")]
#[derive(Clone, Debug, Default, PartialEq)]
pub struct SFV_CREATE {
    pub cbSize: u32,
    pub pshf: core::mem::ManuallyDrop<Option<IShellFolder>>,
    pub psvOuter: core::mem::ManuallyDrop<Option<IShellView>>,
    pub psfvcb: core::mem::ManuallyDrop<Option<IShellFolderViewCB>>,
}
#[repr(C)]
#[cfg(feature = "Win32_UI_Shell_Common")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SFV_SETITEMPOS {
    pub pidl: *mut Common::ITEMIDLIST,
    pub pt: super::super::Foundation::POINT,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl Default for SFV_SETITEMPOS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SHACF_AUTOAPPEND_FORCE_OFF: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(2147483648u32);
pub const SHACF_AUTOAPPEND_FORCE_ON: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(1073741824u32);
pub const SHACF_AUTOSUGGEST_FORCE_OFF: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(536870912u32);
pub const SHACF_AUTOSUGGEST_FORCE_ON: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(268435456u32);
pub const SHACF_DEFAULT: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(0u32);
pub const SHACF_FILESYSTEM: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(1u32);
pub const SHACF_FILESYS_DIRS: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(32u32);
pub const SHACF_FILESYS_ONLY: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(16u32);
pub const SHACF_URLALL: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(6u32);
pub const SHACF_URLHISTORY: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(2u32);
pub const SHACF_URLMRU: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(4u32);
pub const SHACF_USETAB: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(8u32);
pub const SHACF_VIRTUAL_NAMESPACE: SHELL_AUTOCOMPLETE_FLAGS = SHELL_AUTOCOMPLETE_FLAGS(64u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHARD(pub i32);
#[repr(C, packed(1))]
#[derive(Default)]
pub struct SHARDAPPIDINFO {
    pub psi: core::mem::ManuallyDrop<Option<IShellItem>>,
    pub pszAppID: windows_core::PCWSTR,
}
#[repr(C, packed(1))]
#[cfg(feature = "Win32_UI_Shell_Common")]
#[derive(Clone, Copy)]
pub struct SHARDAPPIDINFOIDLIST {
    pub pidl: *mut Common::ITEMIDLIST,
    pub pszAppID: windows_core::PCWSTR,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl Default for SHARDAPPIDINFOIDLIST {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Default)]
pub struct SHARDAPPIDINFOLINK {
    pub psl: core::mem::ManuallyDrop<Option<IShellLinkA>>,
    pub pszAppID: windows_core::PCWSTR,
}
pub const SHARD_APPIDINFO: SHARD = SHARD(4i32);
pub const SHARD_APPIDINFOIDLIST: SHARD = SHARD(5i32);
pub const SHARD_APPIDINFOLINK: SHARD = SHARD(7i32);
pub const SHARD_LINK: SHARD = SHARD(6i32);
pub const SHARD_PATHA: SHARD = SHARD(2i32);
pub const SHARD_PATHW: SHARD = SHARD(3i32);
pub const SHARD_PIDL: SHARD = SHARD(1i32);
pub const SHARD_SHELLITEM: SHARD = SHARD(8i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHARE_ROLE(pub i32);
pub const SHARE_ROLE_CONTRIBUTOR: SHARE_ROLE = SHARE_ROLE(1i32);
pub const SHARE_ROLE_CO_OWNER: SHARE_ROLE = SHARE_ROLE(2i32);
pub const SHARE_ROLE_CUSTOM: SHARE_ROLE = SHARE_ROLE(4i32);
pub const SHARE_ROLE_INVALID: SHARE_ROLE = SHARE_ROLE(-1i32);
pub const SHARE_ROLE_MIXED: SHARE_ROLE = SHARE_ROLE(5i32);
pub const SHARE_ROLE_OWNER: SHARE_ROLE = SHARE_ROLE(3i32);
pub const SHARE_ROLE_READER: SHARE_ROLE = SHARE_ROLE(0i32);
pub const SHCDF_UPDATEITEM: u32 = 1u32;
pub const SHCIDS_ALLFIELDS: i32 = -2147483648i32;
pub const SHCIDS_BITMASK: i32 = -65536i32;
pub const SHCIDS_CANONICALONLY: i32 = 268435456i32;
pub const SHCIDS_COLUMNMASK: i32 = 65535i32;
pub const SHCNEE_MSI_CHANGE: i32 = 4i32;
pub const SHCNEE_MSI_UNINSTALL: i32 = 5i32;
pub const SHCNEE_ORDERCHANGED: i32 = 2i32;
pub const SHCNE_ALLEVENTS: SHCNE_ID = SHCNE_ID(2147483647u32);
pub const SHCNE_ASSOCCHANGED: SHCNE_ID = SHCNE_ID(134217728u32);
pub const SHCNE_ATTRIBUTES: SHCNE_ID = SHCNE_ID(2048u32);
pub const SHCNE_CREATE: SHCNE_ID = SHCNE_ID(2u32);
pub const SHCNE_DELETE: SHCNE_ID = SHCNE_ID(4u32);
pub const SHCNE_DISKEVENTS: SHCNE_ID = SHCNE_ID(145439u32);
pub const SHCNE_DRIVEADD: SHCNE_ID = SHCNE_ID(256u32);
pub const SHCNE_DRIVEADDGUI: SHCNE_ID = SHCNE_ID(65536u32);
pub const SHCNE_DRIVEREMOVED: SHCNE_ID = SHCNE_ID(128u32);
pub const SHCNE_EXTENDED_EVENT: SHCNE_ID = SHCNE_ID(67108864u32);
pub const SHCNE_FREESPACE: SHCNE_ID = SHCNE_ID(262144u32);
pub const SHCNE_GLOBALEVENTS: SHCNE_ID = SHCNE_ID(201687520u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHCNE_ID(pub u32);
impl SHCNE_ID {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SHCNE_ID {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SHCNE_ID {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SHCNE_ID {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SHCNE_ID {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SHCNE_ID {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SHCNE_INTERRUPT: SHCNE_ID = SHCNE_ID(2147483648u32);
pub const SHCNE_MEDIAINSERTED: SHCNE_ID = SHCNE_ID(32u32);
pub const SHCNE_MEDIAREMOVED: SHCNE_ID = SHCNE_ID(64u32);
pub const SHCNE_MKDIR: SHCNE_ID = SHCNE_ID(8u32);
pub const SHCNE_NETSHARE: SHCNE_ID = SHCNE_ID(512u32);
pub const SHCNE_NETUNSHARE: SHCNE_ID = SHCNE_ID(1024u32);
pub const SHCNE_RENAMEFOLDER: SHCNE_ID = SHCNE_ID(131072u32);
pub const SHCNE_RENAMEITEM: SHCNE_ID = SHCNE_ID(1u32);
pub const SHCNE_RMDIR: SHCNE_ID = SHCNE_ID(16u32);
pub const SHCNE_SERVERDISCONNECT: SHCNE_ID = SHCNE_ID(16384u32);
pub const SHCNE_UPDATEDIR: SHCNE_ID = SHCNE_ID(4096u32);
pub const SHCNE_UPDATEIMAGE: SHCNE_ID = SHCNE_ID(32768u32);
pub const SHCNE_UPDATEITEM: SHCNE_ID = SHCNE_ID(8192u32);
pub const SHCNF_DWORD: SHCNF_FLAGS = SHCNF_FLAGS(3u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHCNF_FLAGS(pub u32);
impl SHCNF_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SHCNF_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SHCNF_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SHCNF_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SHCNF_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SHCNF_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SHCNF_FLUSH: SHCNF_FLAGS = SHCNF_FLAGS(4096u32);
pub const SHCNF_FLUSHNOWAIT: SHCNF_FLAGS = SHCNF_FLAGS(12288u32);
pub const SHCNF_IDLIST: SHCNF_FLAGS = SHCNF_FLAGS(0u32);
pub const SHCNF_NOTIFYRECURSIVE: SHCNF_FLAGS = SHCNF_FLAGS(65536u32);
pub const SHCNF_PATH: SHCNF_FLAGS = SHCNF_FLAGS(5u32);
pub const SHCNF_PATHA: SHCNF_FLAGS = SHCNF_FLAGS(1u32);
pub const SHCNF_PATHW: SHCNF_FLAGS = SHCNF_FLAGS(5u32);
pub const SHCNF_PRINTER: SHCNF_FLAGS = SHCNF_FLAGS(6u32);
pub const SHCNF_PRINTERA: SHCNF_FLAGS = SHCNF_FLAGS(2u32);
pub const SHCNF_PRINTERW: SHCNF_FLAGS = SHCNF_FLAGS(6u32);
pub const SHCNF_TYPE: SHCNF_FLAGS = SHCNF_FLAGS(255u32);
pub const SHCNRF_InterruptLevel: SHCNRF_SOURCE = SHCNRF_SOURCE(1i32);
pub const SHCNRF_NewDelivery: SHCNRF_SOURCE = SHCNRF_SOURCE(32768i32);
pub const SHCNRF_RecursiveInterrupt: SHCNRF_SOURCE = SHCNRF_SOURCE(4096i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHCNRF_SOURCE(pub i32);
impl SHCNRF_SOURCE {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SHCNRF_SOURCE {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SHCNRF_SOURCE {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SHCNRF_SOURCE {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SHCNRF_SOURCE {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SHCNRF_SOURCE {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SHCNRF_ShellLevel: SHCNRF_SOURCE = SHCNRF_SOURCE(2i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SHCOLUMNDATA {
    pub dwFlags: u32,
    pub dwFileAttributes: u32,
    pub dwReserved: u32,
    pub pwszExt: windows_core::PWSTR,
    pub wszFile: [u16; 260],
}
impl Default for SHCOLUMNDATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(feature = "Win32_System_Variant")]
#[derive(Clone, Copy)]
pub struct SHCOLUMNINFO {
    pub scid: super::super::Foundation::PROPERTYKEY,
    pub vt: super::super::System::Variant::VARENUM,
    pub fmt: u32,
    pub cChars: u32,
    pub csFlags: u32,
    pub wszTitle: [u16; 80],
    pub wszDescription: [u16; 128],
}
#[cfg(feature = "Win32_System_Variant")]
impl Default for SHCOLUMNINFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SHCOLUMNINIT {
    pub dwFlags: u32,
    pub dwReserved: u32,
    pub wszFolder: [u16; 260],
}
impl Default for SHCOLUMNINIT {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SHCONTF_CHECKING_FOR_CHILDREN: _SHCONTF = _SHCONTF(16i32);
pub const SHCONTF_ENABLE_ASYNC: _SHCONTF = _SHCONTF(32768i32);
pub const SHCONTF_FASTITEMS: _SHCONTF = _SHCONTF(8192i32);
pub const SHCONTF_FLATLIST: _SHCONTF = _SHCONTF(16384i32);
pub const SHCONTF_FOLDERS: _SHCONTF = _SHCONTF(32i32);
pub const SHCONTF_INCLUDEHIDDEN: _SHCONTF = _SHCONTF(128i32);
pub const SHCONTF_INCLUDESUPERHIDDEN: _SHCONTF = _SHCONTF(65536i32);
pub const SHCONTF_INIT_ON_FIRST_NEXT: _SHCONTF = _SHCONTF(256i32);
pub const SHCONTF_NAVIGATION_ENUM: _SHCONTF = _SHCONTF(4096i32);
pub const SHCONTF_NETPRINTERSRCH: _SHCONTF = _SHCONTF(512i32);
pub const SHCONTF_NONFOLDERS: _SHCONTF = _SHCONTF(64i32);
pub const SHCONTF_SHAREABLE: _SHCONTF = _SHCONTF(1024i32);
pub const SHCONTF_STORAGE: _SHCONTF = _SHCONTF(2048i32);
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(all(feature = "Win32_Security", feature = "Win32_System_Threading"))]
#[derive(Clone, Copy)]
pub struct SHCREATEPROCESSINFOW {
    pub cbSize: u32,
    pub fMask: u32,
    pub hwnd: super::super::Foundation::HWND,
    pub pszFile: windows_core::PCWSTR,
    pub pszParameters: windows_core::PCWSTR,
    pub pszCurrentDirectory: windows_core::PCWSTR,
    pub hUserToken: super::super::Foundation::HANDLE,
    pub lpProcessAttributes: *mut super::super::Security::SECURITY_ATTRIBUTES,
    pub lpThreadAttributes: *mut super::super::Security::SECURITY_ATTRIBUTES,
    pub bInheritHandles: windows_core::BOOL,
    pub dwCreationFlags: u32,
    pub lpStartupInfo: *mut super::super::System::Threading::STARTUPINFOW,
    pub lpProcessInformation: *mut super::super::System::Threading::PROCESS_INFORMATION,
}
#[cfg(target_arch = "x86")]
#[cfg(all(feature = "Win32_Security", feature = "Win32_System_Threading"))]
impl Default for SHCREATEPROCESSINFOW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(all(feature = "Win32_Security", feature = "Win32_System_Threading"))]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SHCREATEPROCESSINFOW {
    pub cbSize: u32,
    pub fMask: u32,
    pub hwnd: super::super::Foundation::HWND,
    pub pszFile: windows_core::PCWSTR,
    pub pszParameters: windows_core::PCWSTR,
    pub pszCurrentDirectory: windows_core::PCWSTR,
    pub hUserToken: super::super::Foundation::HANDLE,
    pub lpProcessAttributes: *mut super::super::Security::SECURITY_ATTRIBUTES,
    pub lpThreadAttributes: *mut super::super::Security::SECURITY_ATTRIBUTES,
    pub bInheritHandles: windows_core::BOOL,
    pub dwCreationFlags: u32,
    pub lpStartupInfo: *mut super::super::System::Threading::STARTUPINFOW,
    pub lpProcessInformation: *mut super::super::System::Threading::PROCESS_INFORMATION,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(all(feature = "Win32_Security", feature = "Win32_System_Threading"))]
impl Default for SHCREATEPROCESSINFOW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SHC_E_SHELL_COMPONENT_STARTUP_FAILURE: windows_core::HRESULT = windows_core::HRESULT(0x80270234_u32 as _);
#[repr(C, packed(1))]
#[derive(Clone, Copy, Default)]
pub struct SHChangeDWORDAsIDList {
    pub cb: u16,
    pub dwItem1: u32,
    pub dwItem2: u32,
    pub cbZero: u16,
}
#[repr(C, packed(1))]
#[cfg(feature = "Win32_UI_Shell_Common")]
#[derive(Clone, Copy)]
pub struct SHChangeNotifyEntry {
    pub pidl: *mut Common::ITEMIDLIST,
    pub fRecursive: windows_core::BOOL,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl Default for SHChangeNotifyEntry {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct SHChangeProductKeyAsIDList {
    pub cb: u16,
    pub wszProductKey: [u16; 39],
    pub cbZero: u16,
}
impl Default for SHChangeProductKeyAsIDList {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy)]
pub struct SHChangeUpdateImageIDList {
    pub cb: u16,
    pub iIconIndex: i32,
    pub iCurIndex: i32,
    pub uFlags: u32,
    pub dwProcessID: u32,
    pub szName: [u16; 260],
    pub cbZero: u16,
}
impl Default for SHChangeUpdateImageIDList {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct SHDESCRIPTIONID {
    pub dwDescriptionId: u32,
    pub clsid: windows_core::GUID,
}
pub const SHDID_COMPUTER_AUDIO: SHDID_ID = SHDID_ID(19i32);
pub const SHDID_COMPUTER_CDROM: SHDID_ID = SHDID_ID(10i32);
pub const SHDID_COMPUTER_DRIVE35: SHDID_ID = SHDID_ID(5i32);
pub const SHDID_COMPUTER_DRIVE525: SHDID_ID = SHDID_ID(6i32);
pub const SHDID_COMPUTER_FIXED: SHDID_ID = SHDID_ID(8i32);
pub const SHDID_COMPUTER_IMAGING: SHDID_ID = SHDID_ID(18i32);
pub const SHDID_COMPUTER_NETDRIVE: SHDID_ID = SHDID_ID(9i32);
pub const SHDID_COMPUTER_OTHER: SHDID_ID = SHDID_ID(12i32);
pub const SHDID_COMPUTER_RAMDISK: SHDID_ID = SHDID_ID(11i32);
pub const SHDID_COMPUTER_REMOVABLE: SHDID_ID = SHDID_ID(7i32);
pub const SHDID_COMPUTER_SHAREDDOCS: SHDID_ID = SHDID_ID(20i32);
pub const SHDID_FS_DIRECTORY: SHDID_ID = SHDID_ID(3i32);
pub const SHDID_FS_FILE: SHDID_ID = SHDID_ID(2i32);
pub const SHDID_FS_OTHER: SHDID_ID = SHDID_ID(4i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHDID_ID(pub i32);
pub const SHDID_MOBILE_DEVICE: SHDID_ID = SHDID_ID(21i32);
pub const SHDID_NET_DOMAIN: SHDID_ID = SHDID_ID(13i32);
pub const SHDID_NET_OTHER: SHDID_ID = SHDID_ID(17i32);
pub const SHDID_NET_RESTOFNET: SHDID_ID = SHDID_ID(16i32);
pub const SHDID_NET_SERVER: SHDID_ID = SHDID_ID(14i32);
pub const SHDID_NET_SHARE: SHDID_ID = SHDID_ID(15i32);
pub const SHDID_REMOTE_DESKTOP_DRIVE: SHDID_ID = SHDID_ID(22i32);
pub const SHDID_ROOT_REGITEM: SHDID_ID = SHDID_ID(1i32);
#[repr(C)]
#[cfg(feature = "Win32_Graphics_Gdi")]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct SHDRAGIMAGE {
    pub sizeDragImage: super::super::Foundation::SIZE,
    pub ptOffset: super::super::Foundation::POINT,
    pub hbmpDragImage: super::super::Graphics::Gdi::HBITMAP,
    pub crColorKey: super::super::Foundation::COLORREF,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHELLBROWSERSHOWCONTROL(pub i32);
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_System_Registry")]
#[derive(Clone, Copy)]
pub struct SHELLEXECUTEINFOA {
    pub cbSize: u32,
    pub fMask: u32,
    pub hwnd: super::super::Foundation::HWND,
    pub lpVerb: windows_core::PCSTR,
    pub lpFile: windows_core::PCSTR,
    pub lpParameters: windows_core::PCSTR,
    pub lpDirectory: windows_core::PCSTR,
    pub nShow: i32,
    pub hInstApp: super::super::Foundation::HINSTANCE,
    pub lpIDList: *mut core::ffi::c_void,
    pub lpClass: windows_core::PCSTR,
    pub hkeyClass: super::super::System::Registry::HKEY,
    pub dwHotKey: u32,
    pub Anonymous: SHELLEXECUTEINFOA_0,
    pub hProcess: super::super::Foundation::HANDLE,
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_System_Registry")]
impl Default for SHELLEXECUTEINFOA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_System_Registry")]
#[derive(Clone, Copy)]
pub union SHELLEXECUTEINFOA_0 {
    pub hIcon: super::super::Foundation::HANDLE,
    pub hMonitor: super::super::Foundation::HANDLE,
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_System_Registry")]
impl Default for SHELLEXECUTEINFOA_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_System_Registry")]
#[derive(Clone, Copy)]
pub struct SHELLEXECUTEINFOA {
    pub cbSize: u32,
    pub fMask: u32,
    pub hwnd: super::super::Foundation::HWND,
    pub lpVerb: windows_core::PCSTR,
    pub lpFile: windows_core::PCSTR,
    pub lpParameters: windows_core::PCSTR,
    pub lpDirectory: windows_core::PCSTR,
    pub nShow: i32,
    pub hInstApp: super::super::Foundation::HINSTANCE,
    pub lpIDList: *mut core::ffi::c_void,
    pub lpClass: windows_core::PCSTR,
    pub hkeyClass: super::super::System::Registry::HKEY,
    pub dwHotKey: u32,
    pub Anonymous: SHELLEXECUTEINFOA_0,
    pub hProcess: super::super::Foundation::HANDLE,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_System_Registry")]
impl Default for SHELLEXECUTEINFOA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_System_Registry")]
#[derive(Clone, Copy)]
pub union SHELLEXECUTEINFOA_0 {
    pub hIcon: super::super::Foundation::HANDLE,
    pub hMonitor: super::super::Foundation::HANDLE,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_System_Registry")]
impl Default for SHELLEXECUTEINFOA_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_System_Registry")]
#[derive(Clone, Copy)]
pub struct SHELLEXECUTEINFOW {
    pub cbSize: u32,
    pub fMask: u32,
    pub hwnd: super::super::Foundation::HWND,
    pub lpVerb: windows_core::PCWSTR,
    pub lpFile: windows_core::PCWSTR,
    pub lpParameters: windows_core::PCWSTR,
    pub lpDirectory: windows_core::PCWSTR,
    pub nShow: i32,
    pub hInstApp: super::super::Foundation::HINSTANCE,
    pub lpIDList: *mut core::ffi::c_void,
    pub lpClass: windows_core::PCWSTR,
    pub hkeyClass: super::super::System::Registry::HKEY,
    pub dwHotKey: u32,
    pub Anonymous: SHELLEXECUTEINFOW_0,
    pub hProcess: super::super::Foundation::HANDLE,
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_System_Registry")]
impl Default for SHELLEXECUTEINFOW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_System_Registry")]
#[derive(Clone, Copy)]
pub union SHELLEXECUTEINFOW_0 {
    pub hIcon: super::super::Foundation::HANDLE,
    pub hMonitor: super::super::Foundation::HANDLE,
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_System_Registry")]
impl Default for SHELLEXECUTEINFOW_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_System_Registry")]
#[derive(Clone, Copy)]
pub struct SHELLEXECUTEINFOW {
    pub cbSize: u32,
    pub fMask: u32,
    pub hwnd: super::super::Foundation::HWND,
    pub lpVerb: windows_core::PCWSTR,
    pub lpFile: windows_core::PCWSTR,
    pub lpParameters: windows_core::PCWSTR,
    pub lpDirectory: windows_core::PCWSTR,
    pub nShow: i32,
    pub hInstApp: super::super::Foundation::HINSTANCE,
    pub lpIDList: *mut core::ffi::c_void,
    pub lpClass: windows_core::PCWSTR,
    pub hkeyClass: super::super::System::Registry::HKEY,
    pub dwHotKey: u32,
    pub Anonymous: SHELLEXECUTEINFOW_0,
    pub hProcess: super::super::Foundation::HANDLE,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_System_Registry")]
impl Default for SHELLEXECUTEINFOW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_System_Registry")]
#[derive(Clone, Copy)]
pub union SHELLEXECUTEINFOW_0 {
    pub hIcon: super::super::Foundation::HANDLE,
    pub hMonitor: super::super::Foundation::HANDLE,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_System_Registry")]
impl Default for SHELLEXECUTEINFOW_0 {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[derive(Clone, Copy, Default)]
pub struct SHELLFLAGSTATE {
    pub _bitfield: i32,
}
#[repr(C, packed(1))]
#[derive(Clone, Copy, Default)]
pub struct SHELLSTATEA {
    pub _bitfield1: i32,
    pub dwWin95Unused: u32,
    pub uWin95Unused: u32,
    pub lParamSort: i32,
    pub iSortDirection: i32,
    pub version: u32,
    pub uNotUsed: u32,
    pub _bitfield2: i32,
}
pub const SHELLSTATEVERSION_IE4: u32 = 9u32;
pub const SHELLSTATEVERSION_WIN2K: u32 = 10u32;
#[repr(C, packed(1))]
#[derive(Clone, Copy, Default)]
pub struct SHELLSTATEW {
    pub _bitfield1: i32,
    pub dwWin95Unused: u32,
    pub uWin95Unused: u32,
    pub lParamSort: i32,
    pub iSortDirection: i32,
    pub version: u32,
    pub uNotUsed: u32,
    pub _bitfield2: i32,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHELL_AUTOCOMPLETE_FLAGS(pub u32);
impl SHELL_AUTOCOMPLETE_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SHELL_AUTOCOMPLETE_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SHELL_AUTOCOMPLETE_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SHELL_AUTOCOMPLETE_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SHELL_AUTOCOMPLETE_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SHELL_AUTOCOMPLETE_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SHELL_E_WRONG_BITDEPTH: windows_core::HRESULT = windows_core::HRESULT(0x80270102_u32 as _);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SHELL_ITEM_RESOURCE {
    pub guidType: windows_core::GUID,
    pub szName: [u16; 260],
}
impl Default for SHELL_ITEM_RESOURCE {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHELL_LINK_DATA_FLAGS(pub i32);
impl SHELL_LINK_DATA_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SHELL_LINK_DATA_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SHELL_LINK_DATA_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SHELL_LINK_DATA_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SHELL_LINK_DATA_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SHELL_LINK_DATA_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHELL_UI_COMPONENT(pub i32);
pub const SHELL_UI_COMPONENT_DESKBAND: SHELL_UI_COMPONENT = SHELL_UI_COMPONENT(2i32);
pub const SHELL_UI_COMPONENT_NOTIFICATIONAREA: SHELL_UI_COMPONENT = SHELL_UI_COMPONENT(1i32);
pub const SHELL_UI_COMPONENT_TASKBARS: SHELL_UI_COMPONENT = SHELL_UI_COMPONENT(0i32);
pub const SHERB_NOCONFIRMATION: u32 = 1u32;
pub const SHERB_NOPROGRESSUI: u32 = 2u32;
pub const SHERB_NOSOUND: u32 = 4u32;
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub struct SHFILEINFOA {
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub iIcon: i32,
    pub dwAttributes: u32,
    pub szDisplayName: [i8; 260],
    pub szTypeName: [i8; 80],
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for SHFILEINFOA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SHFILEINFOA {
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub iIcon: i32,
    pub dwAttributes: u32,
    pub szDisplayName: [i8; 260],
    pub szTypeName: [i8; 80],
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for SHFILEINFOA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub struct SHFILEINFOW {
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub iIcon: i32,
    pub dwAttributes: u32,
    pub szDisplayName: [u16; 260],
    pub szTypeName: [u16; 80],
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for SHFILEINFOW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SHFILEINFOW {
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub iIcon: i32,
    pub dwAttributes: u32,
    pub szDisplayName: [u16; 260],
    pub szTypeName: [u16; 80],
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for SHFILEINFOW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy)]
pub struct SHFILEOPSTRUCTA {
    pub hwnd: super::super::Foundation::HWND,
    pub wFunc: u32,
    pub pFrom: *mut i8,
    pub pTo: *mut i8,
    pub fFlags: u16,
    pub fAnyOperationsAborted: windows_core::BOOL,
    pub hNameMappings: *mut core::ffi::c_void,
    pub lpszProgressTitle: windows_core::PCSTR,
}
#[cfg(target_arch = "x86")]
impl Default for SHFILEOPSTRUCTA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SHFILEOPSTRUCTA {
    pub hwnd: super::super::Foundation::HWND,
    pub wFunc: u32,
    pub pFrom: *mut i8,
    pub pTo: *mut i8,
    pub fFlags: u16,
    pub fAnyOperationsAborted: windows_core::BOOL,
    pub hNameMappings: *mut core::ffi::c_void,
    pub lpszProgressTitle: windows_core::PCSTR,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
impl Default for SHFILEOPSTRUCTA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy)]
pub struct SHFILEOPSTRUCTW {
    pub hwnd: super::super::Foundation::HWND,
    pub wFunc: u32,
    pub pFrom: windows_core::PCWSTR,
    pub pTo: windows_core::PCWSTR,
    pub fFlags: u16,
    pub fAnyOperationsAborted: windows_core::BOOL,
    pub hNameMappings: *mut core::ffi::c_void,
    pub lpszProgressTitle: windows_core::PCWSTR,
}
#[cfg(target_arch = "x86")]
impl Default for SHFILEOPSTRUCTW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SHFILEOPSTRUCTW {
    pub hwnd: super::super::Foundation::HWND,
    pub wFunc: u32,
    pub pFrom: windows_core::PCWSTR,
    pub pTo: windows_core::PCWSTR,
    pub fFlags: u16,
    pub fAnyOperationsAborted: windows_core::BOOL,
    pub hNameMappings: *mut core::ffi::c_void,
    pub lpszProgressTitle: windows_core::PCWSTR,
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
impl Default for SHFILEOPSTRUCTW {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SHFMT_CANCEL: SHFMT_RET = SHFMT_RET(4294967294u32);
pub const SHFMT_ERROR: SHFMT_RET = SHFMT_RET(4294967295u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHFMT_ID(pub u32);
pub const SHFMT_ID_DEFAULT: SHFMT_ID = SHFMT_ID(65535u32);
pub const SHFMT_NOFORMAT: SHFMT_RET = SHFMT_RET(4294967293u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHFMT_OPT(pub i32);
impl SHFMT_OPT {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SHFMT_OPT {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SHFMT_OPT {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SHFMT_OPT {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SHFMT_OPT {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SHFMT_OPT {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SHFMT_OPT_FULL: SHFMT_OPT = SHFMT_OPT(1i32);
pub const SHFMT_OPT_NONE: SHFMT_OPT = SHFMT_OPT(0i32);
pub const SHFMT_OPT_SYSONLY: SHFMT_OPT = SHFMT_OPT(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHFMT_RET(pub u32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SHFOLDERCUSTOMSETTINGS {
    pub dwSize: u32,
    pub dwMask: u32,
    pub pvid: *mut windows_core::GUID,
    pub pszWebViewTemplate: windows_core::PWSTR,
    pub cchWebViewTemplate: u32,
    pub pszWebViewTemplateVersion: windows_core::PWSTR,
    pub pszInfoTip: windows_core::PWSTR,
    pub cchInfoTip: u32,
    pub pclsid: *mut windows_core::GUID,
    pub dwFlags: u32,
    pub pszIconFile: windows_core::PWSTR,
    pub cchIconFile: u32,
    pub iIconIndex: i32,
    pub pszLogo: windows_core::PWSTR,
    pub cchLogo: u32,
}
impl Default for SHFOLDERCUSTOMSETTINGS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SHGDFIL_DESCRIPTIONID: SHGDFIL_FORMAT = SHGDFIL_FORMAT(3i32);
pub const SHGDFIL_FINDDATA: SHGDFIL_FORMAT = SHGDFIL_FORMAT(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHGDFIL_FORMAT(pub i32);
pub const SHGDFIL_NETRESOURCE: SHGDFIL_FORMAT = SHGDFIL_FORMAT(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHGDNF(pub u32);
pub const SHGDN_FORADDRESSBAR: SHGDNF = SHGDNF(16384u32);
pub const SHGDN_FOREDITING: SHGDNF = SHGDNF(4096u32);
pub const SHGDN_FORPARSING: SHGDNF = SHGDNF(32768u32);
pub const SHGDN_INFOLDER: SHGDNF = SHGDNF(1u32);
pub const SHGDN_NORMAL: SHGDNF = SHGDNF(0u32);
pub const SHGFI_ADDOVERLAYS: SHGFI_FLAGS = SHGFI_FLAGS(32u32);
pub const SHGFI_ATTRIBUTES: SHGFI_FLAGS = SHGFI_FLAGS(2048u32);
pub const SHGFI_ATTR_SPECIFIED: SHGFI_FLAGS = SHGFI_FLAGS(131072u32);
pub const SHGFI_DISPLAYNAME: SHGFI_FLAGS = SHGFI_FLAGS(512u32);
pub const SHGFI_EXETYPE: SHGFI_FLAGS = SHGFI_FLAGS(8192u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHGFI_FLAGS(pub u32);
impl SHGFI_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SHGFI_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SHGFI_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SHGFI_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SHGFI_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SHGFI_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SHGFI_ICON: SHGFI_FLAGS = SHGFI_FLAGS(256u32);
pub const SHGFI_ICONLOCATION: SHGFI_FLAGS = SHGFI_FLAGS(4096u32);
pub const SHGFI_LARGEICON: SHGFI_FLAGS = SHGFI_FLAGS(0u32);
pub const SHGFI_LINKOVERLAY: SHGFI_FLAGS = SHGFI_FLAGS(32768u32);
pub const SHGFI_OPENICON: SHGFI_FLAGS = SHGFI_FLAGS(2u32);
pub const SHGFI_OVERLAYINDEX: SHGFI_FLAGS = SHGFI_FLAGS(64u32);
pub const SHGFI_PIDL: SHGFI_FLAGS = SHGFI_FLAGS(8u32);
pub const SHGFI_SELECTED: SHGFI_FLAGS = SHGFI_FLAGS(65536u32);
pub const SHGFI_SHELLICONSIZE: SHGFI_FLAGS = SHGFI_FLAGS(4u32);
pub const SHGFI_SMALLICON: SHGFI_FLAGS = SHGFI_FLAGS(1u32);
pub const SHGFI_SYSICONINDEX: SHGFI_FLAGS = SHGFI_FLAGS(16384u32);
pub const SHGFI_TYPENAME: SHGFI_FLAGS = SHGFI_FLAGS(1024u32);
pub const SHGFI_USEFILEATTRIBUTES: SHGFI_FLAGS = SHGFI_FLAGS(16u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHGFP_TYPE(pub i32);
pub const SHGFP_TYPE_CURRENT: SHGFP_TYPE = SHGFP_TYPE(0i32);
pub const SHGFP_TYPE_DEFAULT: SHGFP_TYPE = SHGFP_TYPE(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHGLOBALCOUNTER(pub i32);
pub const SHGNLI_NOLNK: u64 = 8u64;
pub const SHGNLI_NOLOCNAME: u64 = 16u64;
pub const SHGNLI_NOUNIQUE: u64 = 4u64;
pub const SHGNLI_PIDL: u64 = 1u64;
pub const SHGNLI_PREFIXNAME: u64 = 2u64;
pub const SHGNLI_USEURLEXT: u64 = 32u64;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHGSI_FLAGS(pub u32);
impl SHGSI_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SHGSI_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SHGSI_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SHGSI_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SHGSI_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SHGSI_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SHGSI_ICON: SHGSI_FLAGS = SHGSI_FLAGS(256u32);
pub const SHGSI_ICONLOCATION: SHGSI_FLAGS = SHGSI_FLAGS(0u32);
pub const SHGSI_LARGEICON: SHGSI_FLAGS = SHGSI_FLAGS(0u32);
pub const SHGSI_LINKOVERLAY: SHGSI_FLAGS = SHGSI_FLAGS(32768u32);
pub const SHGSI_SELECTED: SHGSI_FLAGS = SHGSI_FLAGS(65536u32);
pub const SHGSI_SHELLICONSIZE: SHGSI_FLAGS = SHGSI_FLAGS(4u32);
pub const SHGSI_SMALLICON: SHGSI_FLAGS = SHGSI_FLAGS(1u32);
pub const SHGSI_SYSICONINDEX: SHGSI_FLAGS = SHGSI_FLAGS(16384u32);
pub const SHGVSPB_ALLFOLDERS: u32 = 8u32;
pub const SHGVSPB_ALLUSERS: u32 = 2u32;
pub const SHGVSPB_INHERIT: u32 = 16u32;
pub const SHGVSPB_NOAUTODEFAULTS: u32 = 2147483648u32;
pub const SHGVSPB_PERFOLDER: u32 = 4u32;
pub const SHGVSPB_PERUSER: u32 = 1u32;
pub const SHGVSPB_ROAM: u32 = 32u32;
pub const SHHLNF_NOAUTOSELECT: u32 = 67108864u32;
pub const SHHLNF_WRITENOHISTORY: u32 = 134217728u32;
pub const SHIL_EXTRALARGE: u32 = 2u32;
pub const SHIL_JUMBO: u32 = 4u32;
pub const SHIL_LARGE: u32 = 0u32;
pub const SHIL_LAST: u32 = 4u32;
pub const SHIL_SMALL: u32 = 1u32;
pub const SHIL_SYSSMALL: u32 = 3u32;
pub const SHIMGDEC_DEFAULT: u32 = 0u32;
pub const SHIMGDEC_LOADFULL: u32 = 2u32;
pub const SHIMGDEC_THUMBNAIL: u32 = 1u32;
pub const SHIMGKEY_QUALITY: windows_core::PCWSTR = windows_core::w!("Compression");
pub const SHIMGKEY_RAWFORMAT: windows_core::PCWSTR = windows_core::w!("RawDataFormat");
pub const SHIMSTCAPFLAG_LOCKABLE: u32 = 1u32;
pub const SHIMSTCAPFLAG_PURGEABLE: u32 = 2u32;
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy, Default)]
pub struct SHNAMEMAPPINGA {
    pub pszOldPath: windows_core::PSTR,
    pub pszNewPath: windows_core::PSTR,
    pub cchOldPath: i32,
    pub cchNewPath: i32,
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct SHNAMEMAPPINGA {
    pub pszOldPath: windows_core::PSTR,
    pub pszNewPath: windows_core::PSTR,
    pub cchOldPath: i32,
    pub cchNewPath: i32,
}
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy, Default)]
pub struct SHNAMEMAPPINGW {
    pub pszOldPath: windows_core::PWSTR,
    pub pszNewPath: windows_core::PWSTR,
    pub cchOldPath: i32,
    pub cchNewPath: i32,
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct SHNAMEMAPPINGW {
    pub pszOldPath: windows_core::PWSTR,
    pub pszNewPath: windows_core::PWSTR,
    pub cchOldPath: i32,
    pub cchNewPath: i32,
}
pub const SHOP_FILEPATH: SHOP_TYPE = SHOP_TYPE(2i32);
pub const SHOP_PRINTERNAME: SHOP_TYPE = SHOP_TYPE(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHOP_TYPE(pub i32);
impl SHOP_TYPE {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SHOP_TYPE {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SHOP_TYPE {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SHOP_TYPE {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SHOP_TYPE {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SHOP_TYPE {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SHOP_VOLUMEGUID: SHOP_TYPE = SHOP_TYPE(4i32);
pub const SHPPFW_ASKDIRCREATE: u32 = 2u32;
pub const SHPPFW_DIRCREATE: u32 = 1u32;
pub const SHPPFW_IGNOREFILENAME: u32 = 4u32;
pub const SHPPFW_MEDIACHECKONLY: u32 = 16u32;
pub const SHPPFW_NONE: u32 = 0u32;
pub const SHPPFW_NOWRITECHECK: u32 = 8u32;
pub const SHPWHF_ANYLOCATION: u32 = 256u32;
pub const SHPWHF_NOFILESELECTOR: u32 = 4u32;
pub const SHPWHF_NONETPLACECREATE: u32 = 2u32;
pub const SHPWHF_NORECOMPRESS: u32 = 1u32;
pub const SHPWHF_USEMRU: u32 = 8u32;
pub const SHPWHF_VALIDATEVIAWEBFOLDERS: u32 = 65536u32;
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[derive(Clone, Copy, Default)]
pub struct SHQUERYRBINFO {
    pub cbSize: u32,
    pub i64Size: i64,
    pub i64NumItems: i64,
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct SHQUERYRBINFO {
    pub cbSize: u32,
    pub i64Size: i64,
    pub i64NumItems: i64,
}
pub const SHREGDEL_BOTH: SHREGDEL_FLAGS = SHREGDEL_FLAGS(17i32);
pub const SHREGDEL_DEFAULT: SHREGDEL_FLAGS = SHREGDEL_FLAGS(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHREGDEL_FLAGS(pub i32);
pub const SHREGDEL_HKCU: SHREGDEL_FLAGS = SHREGDEL_FLAGS(1i32);
pub const SHREGDEL_HKLM: SHREGDEL_FLAGS = SHREGDEL_FLAGS(16i32);
pub const SHREGENUM_BOTH: SHREGENUM_FLAGS = SHREGENUM_FLAGS(17i32);
pub const SHREGENUM_DEFAULT: SHREGENUM_FLAGS = SHREGENUM_FLAGS(0i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHREGENUM_FLAGS(pub i32);
pub const SHREGENUM_HKCU: SHREGENUM_FLAGS = SHREGENUM_FLAGS(1i32);
pub const SHREGENUM_HKLM: SHREGENUM_FLAGS = SHREGENUM_FLAGS(16i32);
pub const SHREGSET_FORCE_HKCU: u32 = 2u32;
pub const SHREGSET_FORCE_HKLM: u32 = 8u32;
pub const SHREGSET_HKCU: u32 = 1u32;
pub const SHREGSET_HKLM: u32 = 4u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SHSTOCKICONID(pub i32);
#[repr(C, packed(1))]
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy)]
pub struct SHSTOCKICONINFO {
    pub cbSize: u32,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub iSysImageIndex: i32,
    pub iIcon: i32,
    pub szPath: [u16; 260],
}
#[cfg(target_arch = "x86")]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for SHSTOCKICONINFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(C)]
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SHSTOCKICONINFO {
    pub cbSize: u32,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub iSysImageIndex: i32,
    pub iIcon: i32,
    pub szPath: [u16; 260],
}
#[cfg(any(target_arch = "aarch64", target_arch = "arm64ec", target_arch = "x86_64"))]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for SHSTOCKICONINFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SIATTRIBFLAGS(pub i32);
impl SIATTRIBFLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SIATTRIBFLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SIATTRIBFLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SIATTRIBFLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SIATTRIBFLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SIATTRIBFLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SIATTRIBFLAGS_ALLITEMS: SIATTRIBFLAGS = SIATTRIBFLAGS(16384i32);
pub const SIATTRIBFLAGS_AND: SIATTRIBFLAGS = SIATTRIBFLAGS(1i32);
pub const SIATTRIBFLAGS_APPCOMPAT: SIATTRIBFLAGS = SIATTRIBFLAGS(3i32);
pub const SIATTRIBFLAGS_MASK: SIATTRIBFLAGS = SIATTRIBFLAGS(3i32);
pub const SIATTRIBFLAGS_OR: SIATTRIBFLAGS = SIATTRIBFLAGS(2i32);
pub const SICHINT_ALLFIELDS: _SICHINTF = _SICHINTF(-2147483648i32);
pub const SICHINT_CANONICAL: _SICHINTF = _SICHINTF(268435456i32);
pub const SICHINT_DISPLAY: _SICHINTF = _SICHINTF(0i32);
pub const SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL: _SICHINTF = _SICHINTF(536870912i32);
pub const SID_CommandsPropertyBag: windows_core::GUID = windows_core::GUID::from_u128(0x6e043250_4416_485c_b143_e62a760d9fe5);
pub const SID_CtxQueryAssociations: windows_core::GUID = windows_core::GUID::from_u128(0xfaadfc40_b777_4b69_aa81_77035ef0e6e8);
pub const SID_DefView: windows_core::GUID = windows_core::GUID::from_u128(0x6d12fe80_7911_11cf_9534_0000c05bae0b);
pub const SID_LaunchSourceAppUserModelId: windows_core::GUID = windows_core::GUID::from_u128(0x2ce78010_74db_48bc_9c6a_10f372495723);
pub const SID_LaunchSourceViewSizePreference: windows_core::GUID = windows_core::GUID::from_u128(0x80605492_67d9_414f_af89_a1cdf1242bc1);
pub const SID_LaunchTargetViewSizePreference: windows_core::GUID = windows_core::GUID::from_u128(0x26db2472_b7b7_406b_9702_730a4e20d3bf);
pub const SID_MenuShellFolder: windows_core::GUID = windows_core::GUID::from_u128(0xa6c17eb4_2d65_11d2_838f_00c04fd918d0);
pub const SID_SCommDlgBrowser: windows_core::GUID = windows_core::GUID::from_u128(0x80f30233_b7df_11d2_a33b_006097df5bd4);
pub const SID_SCommandBarState: windows_core::GUID = windows_core::GUID::from_u128(0xb99eaa5c_3850_4400_bc33_2ce534048bf8);
pub const SID_SGetViewFromViewDual: windows_core::GUID = windows_core::GUID::from_u128(0x889a935d_971e_4b12_b90c_24dfc9e1e5e8);
pub const SID_SInPlaceBrowser: windows_core::GUID = windows_core::GUID::from_u128(0x1d2ae02b_3655_46cc_b63a_285988153bca);
pub const SID_SMenuBandBKContextMenu: windows_core::GUID = windows_core::GUID::from_u128(0x164bbd86_1d0d_4de0_9a3b_d9729647c2b8);
pub const SID_SMenuBandBottom: windows_core::GUID = windows_core::GUID::from_u128(0x743ca664_0deb_11d1_9825_00c04fd91972);
pub const SID_SMenuBandBottomSelected: windows_core::GUID = windows_core::GUID::from_u128(0x165ebaf4_6d51_11d2_83ad_00c04fd918d0);
pub const SID_SMenuBandChild: windows_core::GUID = windows_core::GUID::from_u128(0xed9cc020_08b9_11d1_9823_00c04fd91972);
pub const SID_SMenuBandContextMenuModifier: windows_core::GUID = windows_core::GUID::from_u128(0x39545874_7162_465e_b783_2aa1874fef81);
pub const SID_SMenuBandParent: windows_core::GUID = windows_core::GUID::from_u128(0x8c278eec_3eab_11d1_8cb0_00c04fd918d0);
pub const SID_SMenuBandTop: windows_core::GUID = windows_core::GUID::from_u128(0x9493a810_ec38_11d0_bc46_00aa006ce2f5);
pub const SID_SMenuPopup: windows_core::GUID = windows_core::GUID::from_u128(0xd1e7afeb_6a2e_11d0_8c78_00c04fd918b4);
pub const SID_SSearchBoxInfo: windows_core::GUID = windows_core::GUID::from_u128(0x142daa61_516b_4713_b49c_fb985ef82998);
pub const SID_STopLevelBrowser: windows_core::GUID = windows_core::GUID::from_u128(0x4c96be40_915c_11cf_99d3_00aa004ae837);
pub const SID_STopWindow: windows_core::GUID = windows_core::GUID::from_u128(0x49e1b500_4636_11d3_97f7_00c04f45d0b3);
pub const SID_ShellExecuteNamedPropertyStore: windows_core::GUID = windows_core::GUID::from_u128(0xeb84ada2_00ff_4992_8324_ed5ce061cb29);
pub const SID_URLExecutionContext: windows_core::GUID = windows_core::GUID::from_u128(0xfb5f8ebc_bbb6_4d10_a461_777291a09030);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SIGDN(pub i32);
pub const SIGDN_DESKTOPABSOLUTEEDITING: SIGDN = SIGDN(-2147172352i32);
pub const SIGDN_DESKTOPABSOLUTEPARSING: SIGDN = SIGDN(-2147319808i32);
pub const SIGDN_FILESYSPATH: SIGDN = SIGDN(-2147123200i32);
pub const SIGDN_NORMALDISPLAY: SIGDN = SIGDN(0i32);
pub const SIGDN_PARENTRELATIVE: SIGDN = SIGDN(-2146959359i32);
pub const SIGDN_PARENTRELATIVEEDITING: SIGDN = SIGDN(-2147282943i32);
pub const SIGDN_PARENTRELATIVEFORADDRESSBAR: SIGDN = SIGDN(-2146975743i32);
pub const SIGDN_PARENTRELATIVEFORUI: SIGDN = SIGDN(-2146877439i32);
pub const SIGDN_PARENTRELATIVEPARSING: SIGDN = SIGDN(-2147385343i32);
pub const SIGDN_URL: SIGDN = SIGDN(-2147057664i32);
pub const SIID_APPLICATION: SHSTOCKICONID = SHSTOCKICONID(2i32);
pub const SIID_AUDIOFILES: SHSTOCKICONID = SHSTOCKICONID(71i32);
pub const SIID_AUTOLIST: SHSTOCKICONID = SHSTOCKICONID(49i32);
pub const SIID_CLUSTEREDDRIVE: SHSTOCKICONID = SHSTOCKICONID(140i32);
pub const SIID_DELETE: SHSTOCKICONID = SHSTOCKICONID(84i32);
pub const SIID_DESKTOPPC: SHSTOCKICONID = SHSTOCKICONID(94i32);
pub const SIID_DEVICEAUDIOPLAYER: SHSTOCKICONID = SHSTOCKICONID(102i32);
pub const SIID_DEVICECAMERA: SHSTOCKICONID = SHSTOCKICONID(100i32);
pub const SIID_DEVICECELLPHONE: SHSTOCKICONID = SHSTOCKICONID(99i32);
pub const SIID_DEVICEVIDEOCAMERA: SHSTOCKICONID = SHSTOCKICONID(101i32);
pub const SIID_DOCASSOC: SHSTOCKICONID = SHSTOCKICONID(1i32);
pub const SIID_DOCNOASSOC: SHSTOCKICONID = SHSTOCKICONID(0i32);
pub const SIID_DRIVE35: SHSTOCKICONID = SHSTOCKICONID(6i32);
pub const SIID_DRIVE525: SHSTOCKICONID = SHSTOCKICONID(5i32);
pub const SIID_DRIVEBD: SHSTOCKICONID = SHSTOCKICONID(133i32);
pub const SIID_DRIVECD: SHSTOCKICONID = SHSTOCKICONID(11i32);
pub const SIID_DRIVEDVD: SHSTOCKICONID = SHSTOCKICONID(59i32);
pub const SIID_DRIVEFIXED: SHSTOCKICONID = SHSTOCKICONID(8i32);
pub const SIID_DRIVEHDDVD: SHSTOCKICONID = SHSTOCKICONID(132i32);
pub const SIID_DRIVENET: SHSTOCKICONID = SHSTOCKICONID(9i32);
pub const SIID_DRIVENETDISABLED: SHSTOCKICONID = SHSTOCKICONID(10i32);
pub const SIID_DRIVERAM: SHSTOCKICONID = SHSTOCKICONID(12i32);
pub const SIID_DRIVEREMOVE: SHSTOCKICONID = SHSTOCKICONID(7i32);
pub const SIID_DRIVEUNKNOWN: SHSTOCKICONID = SHSTOCKICONID(58i32);
pub const SIID_ERROR: SHSTOCKICONID = SHSTOCKICONID(80i32);
pub const SIID_FIND: SHSTOCKICONID = SHSTOCKICONID(22i32);
pub const SIID_FOLDER: SHSTOCKICONID = SHSTOCKICONID(3i32);
pub const SIID_FOLDERBACK: SHSTOCKICONID = SHSTOCKICONID(75i32);
pub const SIID_FOLDERFRONT: SHSTOCKICONID = SHSTOCKICONID(76i32);
pub const SIID_FOLDEROPEN: SHSTOCKICONID = SHSTOCKICONID(4i32);
pub const SIID_HELP: SHSTOCKICONID = SHSTOCKICONID(23i32);
pub const SIID_IMAGEFILES: SHSTOCKICONID = SHSTOCKICONID(72i32);
pub const SIID_INFO: SHSTOCKICONID = SHSTOCKICONID(79i32);
pub const SIID_INTERNET: SHSTOCKICONID = SHSTOCKICONID(104i32);
pub const SIID_KEY: SHSTOCKICONID = SHSTOCKICONID(81i32);
pub const SIID_LINK: SHSTOCKICONID = SHSTOCKICONID(29i32);
pub const SIID_LOCK: SHSTOCKICONID = SHSTOCKICONID(47i32);
pub const SIID_MAX_ICONS: SHSTOCKICONID = SHSTOCKICONID(181i32);
pub const SIID_MEDIAAUDIODVD: SHSTOCKICONID = SHSTOCKICONID(85i32);
pub const SIID_MEDIABDR: SHSTOCKICONID = SHSTOCKICONID(138i32);
pub const SIID_MEDIABDRE: SHSTOCKICONID = SHSTOCKICONID(139i32);
pub const SIID_MEDIABDROM: SHSTOCKICONID = SHSTOCKICONID(137i32);
pub const SIID_MEDIABLANKCD: SHSTOCKICONID = SHSTOCKICONID(69i32);
pub const SIID_MEDIABLURAY: SHSTOCKICONID = SHSTOCKICONID(90i32);
pub const SIID_MEDIACDAUDIO: SHSTOCKICONID = SHSTOCKICONID(40i32);
pub const SIID_MEDIACDAUDIOPLUS: SHSTOCKICONID = SHSTOCKICONID(65i32);
pub const SIID_MEDIACDBURN: SHSTOCKICONID = SHSTOCKICONID(68i32);
pub const SIID_MEDIACDR: SHSTOCKICONID = SHSTOCKICONID(67i32);
pub const SIID_MEDIACDROM: SHSTOCKICONID = SHSTOCKICONID(70i32);
pub const SIID_MEDIACDRW: SHSTOCKICONID = SHSTOCKICONID(66i32);
pub const SIID_MEDIACOMPACTFLASH: SHSTOCKICONID = SHSTOCKICONID(98i32);
pub const SIID_MEDIADVD: SHSTOCKICONID = SHSTOCKICONID(60i32);
pub const SIID_MEDIADVDPLUSR: SHSTOCKICONID = SHSTOCKICONID(92i32);
pub const SIID_MEDIADVDPLUSRW: SHSTOCKICONID = SHSTOCKICONID(93i32);
pub const SIID_MEDIADVDR: SHSTOCKICONID = SHSTOCKICONID(63i32);
pub const SIID_MEDIADVDRAM: SHSTOCKICONID = SHSTOCKICONID(61i32);
pub const SIID_MEDIADVDROM: SHSTOCKICONID = SHSTOCKICONID(64i32);
pub const SIID_MEDIADVDRW: SHSTOCKICONID = SHSTOCKICONID(62i32);
pub const SIID_MEDIAENHANCEDCD: SHSTOCKICONID = SHSTOCKICONID(87i32);
pub const SIID_MEDIAENHANCEDDVD: SHSTOCKICONID = SHSTOCKICONID(88i32);
pub const SIID_MEDIAHDDVD: SHSTOCKICONID = SHSTOCKICONID(89i32);
pub const SIID_MEDIAHDDVDR: SHSTOCKICONID = SHSTOCKICONID(135i32);
pub const SIID_MEDIAHDDVDRAM: SHSTOCKICONID = SHSTOCKICONID(136i32);
pub const SIID_MEDIAHDDVDROM: SHSTOCKICONID = SHSTOCKICONID(134i32);
pub const SIID_MEDIAMOVIEDVD: SHSTOCKICONID = SHSTOCKICONID(86i32);
pub const SIID_MEDIASMARTMEDIA: SHSTOCKICONID = SHSTOCKICONID(97i32);
pub const SIID_MEDIASVCD: SHSTOCKICONID = SHSTOCKICONID(56i32);
pub const SIID_MEDIAVCD: SHSTOCKICONID = SHSTOCKICONID(91i32);
pub const SIID_MIXEDFILES: SHSTOCKICONID = SHSTOCKICONID(74i32);
pub const SIID_MOBILEPC: SHSTOCKICONID = SHSTOCKICONID(95i32);
pub const SIID_MYNETWORK: SHSTOCKICONID = SHSTOCKICONID(17i32);
pub const SIID_NETWORKCONNECT: SHSTOCKICONID = SHSTOCKICONID(103i32);
pub const SIID_PRINTER: SHSTOCKICONID = SHSTOCKICONID(16i32);
pub const SIID_PRINTERFAX: SHSTOCKICONID = SHSTOCKICONID(52i32);
pub const SIID_PRINTERFAXNET: SHSTOCKICONID = SHSTOCKICONID(53i32);
pub const SIID_PRINTERFILE: SHSTOCKICONID = SHSTOCKICONID(54i32);
pub const SIID_PRINTERNET: SHSTOCKICONID = SHSTOCKICONID(50i32);
pub const SIID_RECYCLER: SHSTOCKICONID = SHSTOCKICONID(31i32);
pub const SIID_RECYCLERFULL: SHSTOCKICONID = SHSTOCKICONID(32i32);
pub const SIID_RENAME: SHSTOCKICONID = SHSTOCKICONID(83i32);
pub const SIID_SERVER: SHSTOCKICONID = SHSTOCKICONID(15i32);
pub const SIID_SERVERSHARE: SHSTOCKICONID = SHSTOCKICONID(51i32);
pub const SIID_SETTINGS: SHSTOCKICONID = SHSTOCKICONID(106i32);
pub const SIID_SHARE: SHSTOCKICONID = SHSTOCKICONID(28i32);
pub const SIID_SHIELD: SHSTOCKICONID = SHSTOCKICONID(77i32);
pub const SIID_SLOWFILE: SHSTOCKICONID = SHSTOCKICONID(30i32);
pub const SIID_SOFTWARE: SHSTOCKICONID = SHSTOCKICONID(82i32);
pub const SIID_STACK: SHSTOCKICONID = SHSTOCKICONID(55i32);
pub const SIID_STUFFEDFOLDER: SHSTOCKICONID = SHSTOCKICONID(57i32);
pub const SIID_USERS: SHSTOCKICONID = SHSTOCKICONID(96i32);
pub const SIID_VIDEOFILES: SHSTOCKICONID = SHSTOCKICONID(73i32);
pub const SIID_WARNING: SHSTOCKICONID = SHSTOCKICONID(78i32);
pub const SIID_WORLD: SHSTOCKICONID = SHSTOCKICONID(13i32);
pub const SIID_ZIPFILE: SHSTOCKICONID = SHSTOCKICONID(105i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SIIGBF(pub i32);
impl SIIGBF {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SIIGBF {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SIIGBF {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SIIGBF {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SIIGBF {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SIIGBF {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SIIGBF_BIGGERSIZEOK: SIIGBF = SIIGBF(1i32);
pub const SIIGBF_CROPTOSQUARE: SIIGBF = SIIGBF(32i32);
pub const SIIGBF_ICONBACKGROUND: SIIGBF = SIIGBF(128i32);
pub const SIIGBF_ICONONLY: SIIGBF = SIIGBF(4i32);
pub const SIIGBF_INCACHEONLY: SIIGBF = SIIGBF(16i32);
pub const SIIGBF_MEMORYONLY: SIIGBF = SIIGBF(2i32);
pub const SIIGBF_RESIZETOFIT: SIIGBF = SIIGBF(0i32);
pub const SIIGBF_SCALEUP: SIIGBF = SIIGBF(256i32);
pub const SIIGBF_THUMBNAILONLY: SIIGBF = SIIGBF(8i32);
pub const SIIGBF_WIDETHUMBNAILS: SIIGBF = SIIGBF(64i32);
pub const SIOM_ICONINDEX: u32 = 2u32;
pub const SIOM_OVERLAYINDEX: u32 = 1u32;
pub const SIOM_RESERVED_DEFAULT: u32 = 3u32;
pub const SIOM_RESERVED_LINK: u32 = 1u32;
pub const SIOM_RESERVED_SHARED: u32 = 0u32;
pub const SIOM_RESERVED_SLOWFILE: u32 = 2u32;
pub const SLDF_ALLOW_LINK_TO_LINK: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(8388608i32);
pub const SLDF_DEFAULT: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(0i32);
pub const SLDF_DISABLE_KNOWNFOLDER_RELATIVE_TRACKING: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(2097152i32);
pub const SLDF_DISABLE_LINK_PATH_TRACKING: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(1048576i32);
pub const SLDF_ENABLE_TARGET_METADATA: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(524288i32);
pub const SLDF_FORCE_NO_LINKINFO: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(256i32);
pub const SLDF_FORCE_NO_LINKTRACK: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(262144i32);
pub const SLDF_FORCE_UNCNAME: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(65536i32);
pub const SLDF_HAS_ARGS: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(32i32);
pub const SLDF_HAS_DARWINID: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(4096i32);
pub const SLDF_HAS_EXP_ICON_SZ: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(16384i32);
pub const SLDF_HAS_EXP_SZ: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(512i32);
pub const SLDF_HAS_ICONLOCATION: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(64i32);
pub const SLDF_HAS_ID_LIST: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(1i32);
pub const SLDF_HAS_LINK_INFO: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(2i32);
pub const SLDF_HAS_NAME: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(4i32);
pub const SLDF_HAS_RELPATH: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(8i32);
pub const SLDF_HAS_WORKINGDIR: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(16i32);
pub const SLDF_KEEP_LOCAL_IDLIST_FOR_UNC_TARGET: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(67108864i32);
pub const SLDF_NO_KF_ALIAS: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(4194304i32);
pub const SLDF_NO_PIDL_ALIAS: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(32768i32);
pub const SLDF_PERSIST_VOLUME_ID_RELATIVE: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(134217728i32);
pub const SLDF_PREFER_ENVIRONMENT_PATH: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(33554432i32);
pub const SLDF_RESERVED: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(-2147483648i32);
pub const SLDF_RUNAS_USER: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(8192i32);
pub const SLDF_RUN_IN_SEPARATE: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(1024i32);
pub const SLDF_RUN_WITH_SHIMLAYER: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(131072i32);
pub const SLDF_UNALIAS_ON_SAVE: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(16777216i32);
pub const SLDF_UNICODE: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(128i32);
pub const SLDF_VALID: SHELL_LINK_DATA_FLAGS = SHELL_LINK_DATA_FLAGS(268433407i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SLGP_FLAGS(pub i32);
impl SLGP_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SLGP_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SLGP_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SLGP_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SLGP_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SLGP_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SLGP_RAWPATH: SLGP_FLAGS = SLGP_FLAGS(4i32);
pub const SLGP_RELATIVEPRIORITY: SLGP_FLAGS = SLGP_FLAGS(8i32);
pub const SLGP_SHORTPATH: SLGP_FLAGS = SLGP_FLAGS(1i32);
pub const SLGP_UNCPRIORITY: SLGP_FLAGS = SLGP_FLAGS(2i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct SLOWAPPINFO {
    pub ullSize: u64,
    pub ftLastUsed: super::super::Foundation::FILETIME,
    pub iTimesUsed: i32,
    pub pszImage: windows_core::PWSTR,
}
pub const SLR_ANY_MATCH: SLR_FLAGS = SLR_FLAGS(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SLR_FLAGS(pub i32);
impl SLR_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SLR_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SLR_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SLR_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SLR_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SLR_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SLR_INVOKE_MSI: SLR_FLAGS = SLR_FLAGS(128i32);
pub const SLR_KNOWNFOLDER: SLR_FLAGS = SLR_FLAGS(1024i32);
pub const SLR_MACHINE_IN_LOCAL_TARGET: SLR_FLAGS = SLR_FLAGS(2048i32);
pub const SLR_NOLINKINFO: SLR_FLAGS = SLR_FLAGS(64i32);
pub const SLR_NONE: SLR_FLAGS = SLR_FLAGS(0i32);
pub const SLR_NOSEARCH: SLR_FLAGS = SLR_FLAGS(16i32);
pub const SLR_NOTRACK: SLR_FLAGS = SLR_FLAGS(32i32);
pub const SLR_NOUPDATE: SLR_FLAGS = SLR_FLAGS(8i32);
pub const SLR_NO_OBJECT_ID: SLR_FLAGS = SLR_FLAGS(8192i32);
pub const SLR_NO_UI: SLR_FLAGS = SLR_FLAGS(1i32);
pub const SLR_NO_UI_WITH_MSG_PUMP: SLR_FLAGS = SLR_FLAGS(257i32);
pub const SLR_OFFER_DELETE_WITHOUT_FILE: SLR_FLAGS = SLR_FLAGS(512i32);
pub const SLR_UPDATE: SLR_FLAGS = SLR_FLAGS(4i32);
pub const SLR_UPDATE_MACHINE_AND_SID: SLR_FLAGS = SLR_FLAGS(4096i32);
pub const SMAE_CONTRACTED: u32 = 2u32;
pub const SMAE_EXPANDED: u32 = 1u32;
pub const SMAE_USER: u32 = 4u32;
pub const SMAE_VALID: u32 = 7u32;
#[repr(C)]
#[cfg(feature = "Win32_UI_Shell_Common")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SMCSHCHANGENOTIFYSTRUCT {
    pub lEvent: i32,
    pub pidl1: *mut Common::ITEMIDLIST,
    pub pidl2: *mut Common::ITEMIDLIST,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl Default for SMCSHCHANGENOTIFYSTRUCT {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SMC_AUTOEXPANDCHANGE: u32 = 66u32;
pub const SMC_CHEVRONEXPAND: u32 = 25u32;
pub const SMC_CHEVRONGETTIP: u32 = 47u32;
pub const SMC_CREATE: u32 = 2u32;
pub const SMC_DEFAULTICON: u32 = 22u32;
pub const SMC_DEMOTE: u32 = 17u32;
pub const SMC_DISPLAYCHEVRONTIP: u32 = 42u32;
pub const SMC_EXITMENU: u32 = 3u32;
pub const SMC_GETAUTOEXPANDSTATE: u32 = 65u32;
pub const SMC_GETBKCONTEXTMENU: u32 = 68u32;
pub const SMC_GETCONTEXTMENUMODIFIER: u32 = 67u32;
pub const SMC_GETINFO: u32 = 5u32;
pub const SMC_GETOBJECT: u32 = 7u32;
pub const SMC_GETSFINFO: u32 = 6u32;
pub const SMC_GETSFOBJECT: u32 = 8u32;
pub const SMC_INITMENU: u32 = 1u32;
pub const SMC_NEWITEM: u32 = 23u32;
pub const SMC_OPEN: u32 = 69u32;
pub const SMC_PROMOTE: u32 = 18u32;
pub const SMC_REFRESH: u32 = 16u32;
pub const SMC_SETSFOBJECT: u32 = 45u32;
pub const SMC_SFDDRESTRICTED: u32 = 48u32;
pub const SMC_SFEXEC: u32 = 9u32;
pub const SMC_SFEXEC_MIDDLE: u32 = 49u32;
pub const SMC_SFSELECTITEM: u32 = 10u32;
pub const SMC_SHCHANGENOTIFY: u32 = 46u32;
#[repr(C)]
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
#[derive(Clone, Debug, PartialEq)]
pub struct SMDATA {
    pub dwMask: u32,
    pub dwFlags: u32,
    pub hmenu: super::WindowsAndMessaging::HMENU,
    pub hwnd: super::super::Foundation::HWND,
    pub uId: u32,
    pub uIdParent: u32,
    pub uIdAncestor: u32,
    pub punk: core::mem::ManuallyDrop<Option<windows_core::IUnknown>>,
    pub pidlFolder: *mut Common::ITEMIDLIST,
    pub pidlItem: *mut Common::ITEMIDLIST,
    pub psf: core::mem::ManuallyDrop<Option<IShellFolder>>,
    pub pvUserData: *mut core::ffi::c_void,
}
#[cfg(all(feature = "Win32_UI_Shell_Common", feature = "Win32_UI_WindowsAndMessaging"))]
impl Default for SMDATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SMDM_HMENU: u32 = 2u32;
pub const SMDM_SHELLFOLDER: u32 = 1u32;
pub const SMDM_TOOLBAR: u32 = 4u32;
pub const SMIF_ACCELERATOR: SMINFOFLAGS = SMINFOFLAGS(2i32);
pub const SMIF_ALTSTATE: SMINFOFLAGS = SMINFOFLAGS(2048i32);
pub const SMIF_CHECKED: SMINFOFLAGS = SMINFOFLAGS(32i32);
pub const SMIF_DEMOTED: SMINFOFLAGS = SMINFOFLAGS(1024i32);
pub const SMIF_DISABLED: SMINFOFLAGS = SMINFOFLAGS(256i32);
pub const SMIF_DRAGNDROP: SMINFOFLAGS = SMINFOFLAGS(4096i32);
pub const SMIF_DROPCASCADE: SMINFOFLAGS = SMINFOFLAGS(64i32);
pub const SMIF_DROPTARGET: SMINFOFLAGS = SMINFOFLAGS(4i32);
pub const SMIF_HIDDEN: SMINFOFLAGS = SMINFOFLAGS(128i32);
pub const SMIF_ICON: SMINFOFLAGS = SMINFOFLAGS(1i32);
pub const SMIF_NEW: SMINFOFLAGS = SMINFOFLAGS(8192i32);
pub const SMIF_SUBMENU: SMINFOFLAGS = SMINFOFLAGS(8i32);
pub const SMIF_TRACKPOPUP: SMINFOFLAGS = SMINFOFLAGS(512i32);
pub const SMIM_FLAGS: SMINFOMASK = SMINFOMASK(2i32);
pub const SMIM_ICON: SMINFOMASK = SMINFOMASK(4i32);
pub const SMIM_TYPE: SMINFOMASK = SMINFOMASK(1i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct SMINFO {
    pub dwMask: u32,
    pub dwType: u32,
    pub dwFlags: u32,
    pub iIcon: i32,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SMINFOFLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SMINFOMASK(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SMINFOTYPE(pub i32);
pub const SMINIT_AUTOEXPAND: u32 = 256u32;
pub const SMINIT_AUTOTOOLTIP: u32 = 512u32;
pub const SMINIT_CACHED: u32 = 16u32;
pub const SMINIT_DEFAULT: u32 = 0u32;
pub const SMINIT_DROPONCONTAINER: u32 = 1024u32;
pub const SMINIT_HORIZONTAL: u32 = 536870912u32;
pub const SMINIT_RESTRICT_DRAGDROP: u32 = 2u32;
pub const SMINIT_TOPLEVEL: u32 = 4u32;
pub const SMINIT_VERTICAL: u32 = 268435456u32;
pub const SMINV_ID: u32 = 8u32;
pub const SMINV_REFRESH: u32 = 1u32;
pub const SMIT_SEPARATOR: SMINFOTYPE = SMINFOTYPE(1i32);
pub const SMIT_STRING: SMINFOTYPE = SMINFOTYPE(2i32);
pub const SMSET_BOTTOM: u32 = 536870912u32;
pub const SMSET_DONTOWN: u32 = 1u32;
pub const SMSET_TOP: u32 = 268435456u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct SORTCOLUMN {
    pub propkey: super::super::Foundation::PROPERTYKEY,
    pub direction: SORTDIRECTION,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SORTDIRECTION(pub i32);
pub const SORT_ASCENDING: SORTDIRECTION = SORTDIRECTION(1i32);
pub const SORT_DESCENDING: SORTDIRECTION = SORTDIRECTION(-1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SORT_ORDER_TYPE(pub i32);
pub const SOT_DEFAULT: SORT_ORDER_TYPE = SORT_ORDER_TYPE(0i32);
pub const SOT_IGNORE_FOLDERNESS: SORT_ORDER_TYPE = SORT_ORDER_TYPE(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SPACTION(pub i32);
pub const SPACTION_APPLYINGATTRIBS: SPACTION = SPACTION(4i32);
pub const SPACTION_CALCULATING: SPACTION = SPACTION(7i32);
pub const SPACTION_COPYING: SPACTION = SPACTION(2i32);
pub const SPACTION_COPY_MOVING: SPACTION = SPACTION(13i32);
pub const SPACTION_DELETING: SPACTION = SPACTION(10i32);
pub const SPACTION_DOWNLOADING: SPACTION = SPACTION(5i32);
pub const SPACTION_FORMATTING: SPACTION = SPACTION(12i32);
pub const SPACTION_MOVING: SPACTION = SPACTION(1i32);
pub const SPACTION_NONE: SPACTION = SPACTION(0i32);
pub const SPACTION_RECYCLING: SPACTION = SPACTION(3i32);
pub const SPACTION_RENAMING: SPACTION = SPACTION(11i32);
pub const SPACTION_SEARCHING_FILES: SPACTION = SPACTION(9i32);
pub const SPACTION_SEARCHING_INTERNET: SPACTION = SPACTION(6i32);
pub const SPACTION_UPLOADING: SPACTION = SPACTION(8i32);
pub const SPBEGINF_AUTOTIME: _SPBEGINF = _SPBEGINF(2i32);
pub const SPBEGINF_MARQUEEPROGRESS: _SPBEGINF = _SPBEGINF(32i32);
pub const SPBEGINF_NOCANCELBUTTON: _SPBEGINF = _SPBEGINF(64i32);
pub const SPBEGINF_NOPROGRESSBAR: _SPBEGINF = _SPBEGINF(16i32);
pub const SPBEGINF_NORMAL: _SPBEGINF = _SPBEGINF(0i32);
pub const SPFF_CREATED_ON_THIS_DEVICE: STORAGE_PROVIDER_FILE_FLAGS = STORAGE_PROVIDER_FILE_FLAGS(2i32);
pub const SPFF_DOWNLOAD_BY_DEFAULT: STORAGE_PROVIDER_FILE_FLAGS = STORAGE_PROVIDER_FILE_FLAGS(1i32);
pub const SPFF_NONE: STORAGE_PROVIDER_FILE_FLAGS = STORAGE_PROVIDER_FILE_FLAGS(0i32);
pub const SPINITF_MODAL: _SPINITF = _SPINITF(1i32);
pub const SPINITF_NOMINIMIZE: _SPINITF = _SPINITF(8i32);
pub const SPINITF_NORMAL: _SPINITF = _SPINITF(0i32);
pub const SPMODE_BROWSER: u32 = 8u32;
pub const SPMODE_DBMON: u32 = 8192u32;
pub const SPMODE_DEBUGBREAK: u32 = 512u32;
pub const SPMODE_DEBUGOUT: u32 = 2u32;
pub const SPMODE_EVENT: u32 = 32u32;
pub const SPMODE_EVENTTRACE: u32 = 32768u32;
pub const SPMODE_FLUSH: u32 = 16u32;
pub const SPMODE_FORMATTEXT: u32 = 128u32;
pub const SPMODE_MEMWATCH: u32 = 4096u32;
pub const SPMODE_MSGTRACE: u32 = 1024u32;
pub const SPMODE_MSVM: u32 = 64u32;
pub const SPMODE_MULTISTOP: u32 = 16384u32;
pub const SPMODE_PERFTAGS: u32 = 2048u32;
pub const SPMODE_PROFILE: u32 = 256u32;
pub const SPMODE_SHELL: u32 = 1u32;
pub const SPMODE_TEST: u32 = 4u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SPTEXT(pub i32);
pub const SPTEXT_ACTIONDESCRIPTION: SPTEXT = SPTEXT(1i32);
pub const SPTEXT_ACTIONDETAIL: SPTEXT = SPTEXT(2i32);
pub const SRRF_NOEXPAND: u32 = 268435456u32;
pub const SRRF_NOVIRT: u32 = 1073741824u32;
pub const SRRF_RM_ANY: u32 = 0u32;
pub const SRRF_RM_NORMAL: u32 = 65536u32;
pub const SRRF_RM_SAFE: u32 = 131072u32;
pub const SRRF_RM_SAFENETWORK: u32 = 262144u32;
pub const SRRF_RT_ANY: u32 = 65535u32;
pub const SRRF_RT_REG_BINARY: u32 = 8u32;
pub const SRRF_RT_REG_DWORD: u32 = 16u32;
pub const SRRF_RT_REG_EXPAND_SZ: u32 = 4u32;
pub const SRRF_RT_REG_MULTI_SZ: u32 = 32u32;
pub const SRRF_RT_REG_NONE: u32 = 1u32;
pub const SRRF_RT_REG_QWORD: u32 = 64u32;
pub const SRRF_RT_REG_SZ: u32 = 2u32;
pub const SRRF_ZEROONFAILURE: u32 = 536870912u32;
pub const SSF_AUTOCHECKSELECT: SSF_MASK = SSF_MASK(8388608u32);
pub const SSF_DESKTOPHTML: SSF_MASK = SSF_MASK(512u32);
pub const SSF_DONTPRETTYPATH: SSF_MASK = SSF_MASK(2048u32);
pub const SSF_DOUBLECLICKINWEBVIEW: SSF_MASK = SSF_MASK(128u32);
pub const SSF_FILTER: SSF_MASK = SSF_MASK(65536u32);
pub const SSF_HIDDENFILEEXTS: SSF_MASK = SSF_MASK(4u32);
pub const SSF_HIDEICONS: SSF_MASK = SSF_MASK(16384u32);
pub const SSF_ICONSONLY: SSF_MASK = SSF_MASK(16777216u32);
pub const SSF_MAPNETDRVBUTTON: SSF_MASK = SSF_MASK(4096u32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SSF_MASK(pub u32);
impl SSF_MASK {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for SSF_MASK {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for SSF_MASK {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for SSF_MASK {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for SSF_MASK {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for SSF_MASK {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const SSF_NOCONFIRMRECYCLE: SSF_MASK = SSF_MASK(32768u32);
pub const SSF_NONETCRAWLING: SSF_MASK = SSF_MASK(1048576u32);
pub const SSF_SEPPROCESS: SSF_MASK = SSF_MASK(524288u32);
pub const SSF_SERVERADMINUI: SSF_MASK = SSF_MASK(4u32);
pub const SSF_SHOWALLOBJECTS: SSF_MASK = SSF_MASK(1u32);
pub const SSF_SHOWATTRIBCOL: SSF_MASK = SSF_MASK(256u32);
pub const SSF_SHOWCOMPCOLOR: SSF_MASK = SSF_MASK(8u32);
pub const SSF_SHOWEXTENSIONS: SSF_MASK = SSF_MASK(2u32);
pub const SSF_SHOWINFOTIP: SSF_MASK = SSF_MASK(8192u32);
pub const SSF_SHOWSTARTPAGE: SSF_MASK = SSF_MASK(4194304u32);
pub const SSF_SHOWSTATUSBAR: SSF_MASK = SSF_MASK(67108864u32);
pub const SSF_SHOWSUPERHIDDEN: SSF_MASK = SSF_MASK(262144u32);
pub const SSF_SHOWSYSFILES: SSF_MASK = SSF_MASK(32u32);
pub const SSF_SHOWTYPEOVERLAY: SSF_MASK = SSF_MASK(33554432u32);
pub const SSF_SORTCOLUMNS: SSF_MASK = SSF_MASK(16u32);
pub const SSF_STARTPANELON: SSF_MASK = SSF_MASK(2097152u32);
pub const SSF_WEBVIEW: SSF_MASK = SSF_MASK(131072u32);
pub const SSF_WIN95CLASSIC: SSF_MASK = SSF_MASK(1024u32);
pub const SSM_CLEAR: u32 = 0u32;
pub const SSM_REFRESH: u32 = 2u32;
pub const SSM_SET: u32 = 1u32;
pub const SSM_UPDATE: u32 = 4u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct STGOP(pub i32);
pub const STGOP_APPLYPROPERTIES: STGOP = STGOP(8i32);
pub const STGOP_COPY: STGOP = STGOP(2i32);
pub const STGOP_MOVE: STGOP = STGOP(1i32);
pub const STGOP_NEW: STGOP = STGOP(10i32);
pub const STGOP_REMOVE: STGOP = STGOP(5i32);
pub const STGOP_RENAME: STGOP = STGOP(6i32);
pub const STGOP_SYNC: STGOP = STGOP(3i32);
pub const STIF_DEFAULT: i32 = 0i32;
pub const STIF_SUPPORT_HEX: i32 = 1i32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct STORAGE_PROVIDER_FILE_FLAGS(pub i32);
impl STORAGE_PROVIDER_FILE_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for STORAGE_PROVIDER_FILE_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for STORAGE_PROVIDER_FILE_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for STORAGE_PROVIDER_FILE_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for STORAGE_PROVIDER_FILE_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for STORAGE_PROVIDER_FILE_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const STORE_E_NEWER_VERSION_AVAILABLE: windows_core::HRESULT = windows_core::HRESULT(0x80270104_u32 as _);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct STPFLAG(pub i32);
impl STPFLAG {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for STPFLAG {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for STPFLAG {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for STPFLAG {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for STPFLAG {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for STPFLAG {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const STPF_NONE: STPFLAG = STPFLAG(0i32);
pub const STPF_USEAPPPEEKALWAYS: STPFLAG = STPFLAG(4i32);
pub const STPF_USEAPPPEEKWHENACTIVE: STPFLAG = STPFLAG(8i32);
pub const STPF_USEAPPTHUMBNAILALWAYS: STPFLAG = STPFLAG(1i32);
pub const STPF_USEAPPTHUMBNAILWHENACTIVE: STPFLAG = STPFLAG(2i32);
pub const STR_AVOID_DRIVE_RESTRICTION_POLICY: windows_core::PCWSTR = windows_core::w!("Avoid Drive Restriction Policy");
pub const STR_BIND_DELEGATE_CREATE_OBJECT: windows_core::PCWSTR = windows_core::w!("Delegate Object Creation");
pub const STR_BIND_FOLDERS_READ_ONLY: windows_core::PCWSTR = windows_core::w!("Folders As Read Only");
pub const STR_BIND_FOLDER_ENUM_MODE: windows_core::PCWSTR = windows_core::w!("Folder Enum Mode");
pub const STR_BIND_FORCE_FOLDER_SHORTCUT_RESOLVE: windows_core::PCWSTR = windows_core::w!("Force Folder Shortcut Resolve");
pub const STR_DONT_PARSE_RELATIVE: windows_core::PCWSTR = windows_core::w!("Don\'t Parse Relative");
pub const STR_DONT_RESOLVE_LINK: windows_core::PCWSTR = windows_core::w!("Don\'t Resolve Link");
pub const STR_ENUM_ITEMS_FLAGS: windows_core::PCWSTR = windows_core::w!("SHCONTF");
pub const STR_FILE_SYS_BIND_DATA: windows_core::PCWSTR = windows_core::w!("File System Bind Data");
pub const STR_FILE_SYS_BIND_DATA_WIN7_FORMAT: windows_core::PCWSTR = windows_core::w!("Win7FileSystemIdList");
pub const STR_GET_ASYNC_HANDLER: windows_core::PCWSTR = windows_core::w!("GetAsyncHandler");
pub const STR_GPS_BESTEFFORT: windows_core::PCWSTR = windows_core::w!("GPS_BESTEFFORT");
pub const STR_GPS_DELAYCREATION: windows_core::PCWSTR = windows_core::w!("GPS_DELAYCREATION");
pub const STR_GPS_FASTPROPERTIESONLY: windows_core::PCWSTR = windows_core::w!("GPS_FASTPROPERTIESONLY");
pub const STR_GPS_HANDLERPROPERTIESONLY: windows_core::PCWSTR = windows_core::w!("GPS_HANDLERPROPERTIESONLY");
pub const STR_GPS_NO_OPLOCK: windows_core::PCWSTR = windows_core::w!("GPS_NO_OPLOCK");
pub const STR_GPS_OPENSLOWITEM: windows_core::PCWSTR = windows_core::w!("GPS_OPENSLOWITEM");
pub const STR_INTERNAL_NAVIGATE: windows_core::PCWSTR = windows_core::w!("Internal Navigation");
pub const STR_INTERNETFOLDER_PARSE_ONLY_URLMON_BINDABLE: windows_core::PCWSTR = windows_core::w!("Validate URL");
pub const STR_ITEM_CACHE_CONTEXT: windows_core::PCWSTR = windows_core::w!("ItemCacheContext");
pub const STR_MYDOCS_CLSID: windows_core::PCSTR = windows_core::s!("{450D8FBA-AD25-11D0-98A8-0800361B1103}");
pub const STR_NO_VALIDATE_FILENAME_CHARS: windows_core::PCWSTR = windows_core::w!("NoValidateFilenameChars");
pub const STR_PARSE_ALLOW_INTERNET_SHELL_FOLDERS: windows_core::PCWSTR = windows_core::w!("Allow binding to Internet shell folder handlers and negate STR_PARSE_PREFER_WEB_BROWSING");
pub const STR_PARSE_AND_CREATE_ITEM: windows_core::PCWSTR = windows_core::w!("ParseAndCreateItem");
pub const STR_PARSE_DONT_REQUIRE_VALIDATED_URLS: windows_core::PCWSTR = windows_core::w!("Do not require validated URLs");
pub const STR_PARSE_EXPLICIT_ASSOCIATION_SUCCESSFUL: windows_core::PCWSTR = windows_core::w!("ExplicitAssociationSuccessful");
pub const STR_PARSE_PARTIAL_IDLIST: windows_core::PCWSTR = windows_core::w!("ParseOriginalItem");
pub const STR_PARSE_PREFER_FOLDER_BROWSING: windows_core::PCWSTR = windows_core::w!("Parse Prefer Folder Browsing");
pub const STR_PARSE_PREFER_WEB_BROWSING: windows_core::PCWSTR = windows_core::w!("Do not bind to Internet shell folder handlers");
pub const STR_PARSE_PROPERTYSTORE: windows_core::PCWSTR = windows_core::w!("DelegateNamedProperties");
pub const STR_PARSE_SHELL_PROTOCOL_TO_FILE_OBJECTS: windows_core::PCWSTR = windows_core::w!("Parse Shell Protocol To File Objects");
pub const STR_PARSE_SHOW_NET_DIAGNOSTICS_UI: windows_core::PCWSTR = windows_core::w!("Show network diagnostics UI");
pub const STR_PARSE_SKIP_NET_CACHE: windows_core::PCWSTR = windows_core::w!("Skip Net Resource Cache");
pub const STR_PARSE_TRANSLATE_ALIASES: windows_core::PCWSTR = windows_core::w!("Parse Translate Aliases");
pub const STR_PARSE_WITH_EXPLICIT_ASSOCAPP: windows_core::PCWSTR = windows_core::w!("ExplicitAssociationApp");
pub const STR_PARSE_WITH_EXPLICIT_PROGID: windows_core::PCWSTR = windows_core::w!("ExplicitProgid");
pub const STR_PARSE_WITH_PROPERTIES: windows_core::PCWSTR = windows_core::w!("ParseWithProperties");
pub const STR_PROPERTYBAG_PARAM: windows_core::PCWSTR = windows_core::w!("SHBindCtxPropertyBag");
pub const STR_REFERRER_IDENTIFIER: windows_core::PCWSTR = windows_core::w!("Referrer Identifier");
pub const STR_SKIP_BINDING_CLSID: windows_core::PCWSTR = windows_core::w!("Skip Binding CLSID");
pub const STR_STORAGEITEM_CREATION_FLAGS: windows_core::PCWSTR = windows_core::w!("SHGETSTORAGEITEM");
pub const STR_TAB_REUSE_IDENTIFIER: windows_core::PCWSTR = windows_core::w!("Tab Reuse Identifier");
pub const STR_TRACK_CLSID: windows_core::PCWSTR = windows_core::w!("Track the CLSID");
pub type SUBCLASSPROC = Option<unsafe extern "system" fn(hwnd: super::super::Foundation::HWND, umsg: u32, wparam: super::super::Foundation::WPARAM, lparam: super::super::Foundation::LPARAM, uidsubclass: usize, dwrefdata: usize) -> super::super::Foundation::LRESULT>;
#[repr(C)]
#[cfg(feature = "Win32_System_Ole")]
#[derive(Clone, Debug, PartialEq)]
pub struct SV2CVW2_PARAMS {
    pub cbSize: u32,
    pub psvPrev: core::mem::ManuallyDrop<Option<IShellView>>,
    pub pfs: *mut FOLDERSETTINGS,
    pub psbOwner: core::mem::ManuallyDrop<Option<IShellBrowser>>,
    pub prcView: *mut super::super::Foundation::RECT,
    pub pvid: *const windows_core::GUID,
    pub hwndView: super::super::Foundation::HWND,
}
#[cfg(feature = "Win32_System_Ole")]
impl Default for SV2CVW2_PARAMS {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SV3CVW3_DEFAULT: _SV3CVW3_FLAGS = _SV3CVW3_FLAGS(0i32);
pub const SV3CVW3_FORCEFOLDERFLAGS: _SV3CVW3_FLAGS = _SV3CVW3_FLAGS(4i32);
pub const SV3CVW3_FORCEVIEWMODE: _SV3CVW3_FLAGS = _SV3CVW3_FLAGS(2i32);
pub const SV3CVW3_NONINTERACTIVE: _SV3CVW3_FLAGS = _SV3CVW3_FLAGS(1i32);
pub const SVGIO_ALLVIEW: _SVGIO = _SVGIO(2i32);
pub const SVGIO_BACKGROUND: _SVGIO = _SVGIO(0i32);
pub const SVGIO_CHECKED: _SVGIO = _SVGIO(3i32);
pub const SVGIO_FLAG_VIEWORDER: _SVGIO = _SVGIO(-2147483648i32);
pub const SVGIO_SELECTION: _SVGIO = _SVGIO(1i32);
pub const SVGIO_TYPE_MASK: _SVGIO = _SVGIO(15i32);
pub const SVSI_CHECK: _SVSIF = _SVSIF(256i32);
pub const SVSI_CHECK2: _SVSIF = _SVSIF(512i32);
pub const SVSI_DESELECT: _SVSIF = _SVSIF(0i32);
pub const SVSI_DESELECTOTHERS: _SVSIF = _SVSIF(4i32);
pub const SVSI_EDIT: _SVSIF = _SVSIF(3i32);
pub const SVSI_ENSUREVISIBLE: _SVSIF = _SVSIF(8i32);
pub const SVSI_FOCUSED: _SVSIF = _SVSIF(16i32);
pub const SVSI_KEYBOARDSELECT: _SVSIF = _SVSIF(1025i32);
pub const SVSI_NOTAKEFOCUS: _SVSIF = _SVSIF(1073741824i32);
pub const SVSI_POSITIONITEM: _SVSIF = _SVSIF(128i32);
pub const SVSI_SELECT: _SVSIF = _SVSIF(1i32);
pub const SVSI_SELECTIONMARK: _SVSIF = _SVSIF(64i32);
pub const SVSI_TRANSLATEPT: _SVSIF = _SVSIF(32i32);
pub const SVUIA_ACTIVATE_FOCUS: SVUIA_STATUS = SVUIA_STATUS(2i32);
pub const SVUIA_ACTIVATE_NOFOCUS: SVUIA_STATUS = SVUIA_STATUS(1i32);
pub const SVUIA_DEACTIVATE: SVUIA_STATUS = SVUIA_STATUS(0i32);
pub const SVUIA_INPLACEACTIVATE: SVUIA_STATUS = SVUIA_STATUS(3i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SVUIA_STATUS(pub i32);
pub const SWC_3RDPARTY: ShellWindowTypeConstants = ShellWindowTypeConstants(2i32);
pub const SWC_BROWSER: ShellWindowTypeConstants = ShellWindowTypeConstants(1i32);
pub const SWC_CALLBACK: ShellWindowTypeConstants = ShellWindowTypeConstants(4i32);
pub const SWC_DESKTOP: ShellWindowTypeConstants = ShellWindowTypeConstants(8i32);
pub const SWC_EXPLORER: ShellWindowTypeConstants = ShellWindowTypeConstants(0i32);
pub const SWFO_COOKIEPASSED: ShellWindowFindWindowOptions = ShellWindowFindWindowOptions(4i32);
pub const SWFO_INCLUDEPENDING: ShellWindowFindWindowOptions = ShellWindowFindWindowOptions(2i32);
pub const SWFO_NEEDDISPATCH: ShellWindowFindWindowOptions = ShellWindowFindWindowOptions(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGRERRORFLAGS(pub i32);
pub const SYNCMGRERRORFLAG_ENABLEJUMPTEXT: SYNCMGRERRORFLAGS = SYNCMGRERRORFLAGS(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGRFLAG(pub i32);
pub const SYNCMGRFLAG_CONNECT: SYNCMGRFLAG = SYNCMGRFLAG(1i32);
pub const SYNCMGRFLAG_EVENTMASK: SYNCMGRFLAG = SYNCMGRFLAG(255i32);
pub const SYNCMGRFLAG_IDLE: SYNCMGRFLAG = SYNCMGRFLAG(4i32);
pub const SYNCMGRFLAG_INVOKE: SYNCMGRFLAG = SYNCMGRFLAG(5i32);
pub const SYNCMGRFLAG_MANUAL: SYNCMGRFLAG = SYNCMGRFLAG(3i32);
pub const SYNCMGRFLAG_MAYBOTHERUSER: SYNCMGRFLAG = SYNCMGRFLAG(512i32);
pub const SYNCMGRFLAG_PENDINGDISCONNECT: SYNCMGRFLAG = SYNCMGRFLAG(2i32);
pub const SYNCMGRFLAG_SCHEDULED: SYNCMGRFLAG = SYNCMGRFLAG(6i32);
pub const SYNCMGRFLAG_SETTINGS: SYNCMGRFLAG = SYNCMGRFLAG(256i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGRHANDLERFLAGS(pub i32);
pub const SYNCMGRHANDLERFLAG_MASK: u32 = 15u32;
#[repr(C)]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SYNCMGRHANDLERINFO {
    pub cbSize: u32,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub SyncMgrHandlerFlags: u32,
    pub wszHandlerName: [u16; 32],
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for SYNCMGRHANDLERINFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const SYNCMGRHANDLER_ALWAYSLISTHANDLER: SYNCMGRHANDLERFLAGS = SYNCMGRHANDLERFLAGS(4i32);
pub const SYNCMGRHANDLER_HASPROPERTIES: SYNCMGRHANDLERFLAGS = SYNCMGRHANDLERFLAGS(1i32);
pub const SYNCMGRHANDLER_HIDDEN: SYNCMGRHANDLERFLAGS = SYNCMGRHANDLERFLAGS(8i32);
pub const SYNCMGRHANDLER_MAYESTABLISHCONNECTION: SYNCMGRHANDLERFLAGS = SYNCMGRHANDLERFLAGS(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGRINVOKEFLAGS(pub i32);
pub const SYNCMGRINVOKE_MINIMIZED: SYNCMGRINVOKEFLAGS = SYNCMGRINVOKEFLAGS(4i32);
pub const SYNCMGRINVOKE_STARTSYNC: SYNCMGRINVOKEFLAGS = SYNCMGRINVOKEFLAGS(2i32);
#[repr(C)]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SYNCMGRITEM {
    pub cbSize: u32,
    pub dwFlags: u32,
    pub ItemID: windows_core::GUID,
    pub dwItemState: u32,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub wszItemName: [u16; 128],
    pub ftLastUpdate: super::super::Foundation::FILETIME,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for SYNCMGRITEM {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGRITEMFLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGRITEMSTATE(pub i32);
pub const SYNCMGRITEMSTATE_CHECKED: SYNCMGRITEMSTATE = SYNCMGRITEMSTATE(1i32);
pub const SYNCMGRITEMSTATE_UNCHECKED: SYNCMGRITEMSTATE = SYNCMGRITEMSTATE(0i32);
pub const SYNCMGRITEM_HASPROPERTIES: SYNCMGRITEMFLAGS = SYNCMGRITEMFLAGS(1i32);
pub const SYNCMGRITEM_HIDDEN: SYNCMGRITEMFLAGS = SYNCMGRITEMFLAGS(32i32);
pub const SYNCMGRITEM_ITEMFLAGMASK: u32 = 127u32;
pub const SYNCMGRITEM_LASTUPDATETIME: SYNCMGRITEMFLAGS = SYNCMGRITEMFLAGS(8i32);
pub const SYNCMGRITEM_MAYDELETEITEM: SYNCMGRITEMFLAGS = SYNCMGRITEMFLAGS(16i32);
pub const SYNCMGRITEM_ROAMINGUSER: SYNCMGRITEMFLAGS = SYNCMGRITEMFLAGS(4i32);
pub const SYNCMGRITEM_TEMPORARY: SYNCMGRITEMFLAGS = SYNCMGRITEMFLAGS(2i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct SYNCMGRLOGERRORINFO {
    pub cbSize: u32,
    pub mask: u32,
    pub dwSyncMgrErrorFlags: u32,
    pub ErrorID: windows_core::GUID,
    pub ItemID: windows_core::GUID,
}
pub const SYNCMGRLOGERROR_ERRORFLAGS: u32 = 1u32;
pub const SYNCMGRLOGERROR_ERRORID: u32 = 2u32;
pub const SYNCMGRLOGERROR_ITEMID: u32 = 4u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGRLOGLEVEL(pub i32);
pub const SYNCMGRLOGLEVEL_ERROR: SYNCMGRLOGLEVEL = SYNCMGRLOGLEVEL(3i32);
pub const SYNCMGRLOGLEVEL_INFORMATION: SYNCMGRLOGLEVEL = SYNCMGRLOGLEVEL(1i32);
pub const SYNCMGRLOGLEVEL_LOGLEVELMAX: SYNCMGRLOGLEVEL = SYNCMGRLOGLEVEL(3i32);
pub const SYNCMGRLOGLEVEL_WARNING: SYNCMGRLOGLEVEL = SYNCMGRLOGLEVEL(2i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct SYNCMGRPROGRESSITEM {
    pub cbSize: u32,
    pub mask: u32,
    pub lpcStatusText: windows_core::PCWSTR,
    pub dwStatusType: u32,
    pub iProgValue: i32,
    pub iMaxValue: i32,
}
pub const SYNCMGRPROGRESSITEM_MAXVALUE: u32 = 8u32;
pub const SYNCMGRPROGRESSITEM_PROGVALUE: u32 = 4u32;
pub const SYNCMGRPROGRESSITEM_STATUSTEXT: u32 = 1u32;
pub const SYNCMGRPROGRESSITEM_STATUSTYPE: u32 = 2u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGRREGISTERFLAGS(pub i32);
pub const SYNCMGRREGISTERFLAGS_MASK: u32 = 7u32;
pub const SYNCMGRREGISTERFLAG_CONNECT: SYNCMGRREGISTERFLAGS = SYNCMGRREGISTERFLAGS(1i32);
pub const SYNCMGRREGISTERFLAG_IDLE: SYNCMGRREGISTERFLAGS = SYNCMGRREGISTERFLAGS(4i32);
pub const SYNCMGRREGISTERFLAG_PENDINGDISCONNECT: SYNCMGRREGISTERFLAGS = SYNCMGRREGISTERFLAGS(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGRSTATUS(pub i32);
pub const SYNCMGRSTATUS_DELETED: SYNCMGRSTATUS = SYNCMGRSTATUS(256i32);
pub const SYNCMGRSTATUS_FAILED: SYNCMGRSTATUS = SYNCMGRSTATUS(5i32);
pub const SYNCMGRSTATUS_PAUSED: SYNCMGRSTATUS = SYNCMGRSTATUS(6i32);
pub const SYNCMGRSTATUS_PENDING: SYNCMGRSTATUS = SYNCMGRSTATUS(2i32);
pub const SYNCMGRSTATUS_RESUMING: SYNCMGRSTATUS = SYNCMGRSTATUS(7i32);
pub const SYNCMGRSTATUS_SKIPPED: SYNCMGRSTATUS = SYNCMGRSTATUS(1i32);
pub const SYNCMGRSTATUS_STOPPED: SYNCMGRSTATUS = SYNCMGRSTATUS(0i32);
pub const SYNCMGRSTATUS_SUCCEEDED: SYNCMGRSTATUS = SYNCMGRSTATUS(4i32);
pub const SYNCMGRSTATUS_UPDATING: SYNCMGRSTATUS = SYNCMGRSTATUS(3i32);
pub const SYNCMGRSTATUS_UPDATING_INDETERMINATE: SYNCMGRSTATUS = SYNCMGRSTATUS(8i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_CANCEL_REQUEST(pub i32);
pub const SYNCMGR_CF_NONE: SYNCMGR_CONTROL_FLAGS = SYNCMGR_CONTROL_FLAGS(0i32);
pub const SYNCMGR_CF_NOUI: SYNCMGR_CONTROL_FLAGS = SYNCMGR_CONTROL_FLAGS(2i32);
pub const SYNCMGR_CF_NOWAIT: SYNCMGR_CONTROL_FLAGS = SYNCMGR_CONTROL_FLAGS(0i32);
pub const SYNCMGR_CF_VALID: SYNCMGR_CONTROL_FLAGS = SYNCMGR_CONTROL_FLAGS(3i32);
pub const SYNCMGR_CF_WAIT: SYNCMGR_CONTROL_FLAGS = SYNCMGR_CONTROL_FLAGS(1i32);
pub const SYNCMGR_CIT_DELETED: SYNCMGR_CONFLICT_ITEM_TYPE = SYNCMGR_CONFLICT_ITEM_TYPE(2i32);
pub const SYNCMGR_CIT_UPDATED: SYNCMGR_CONFLICT_ITEM_TYPE = SYNCMGR_CONFLICT_ITEM_TYPE(1i32);
#[repr(C)]
#[cfg(feature = "Win32_System_Com")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct SYNCMGR_CONFLICT_ID_INFO {
    pub pblobID: *mut super::super::System::Com::BYTE_BLOB,
    pub pblobExtra: *mut super::super::System::Com::BYTE_BLOB,
}
#[cfg(feature = "Win32_System_Com")]
impl Default for SYNCMGR_CONFLICT_ID_INFO {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_CONFLICT_ITEM_TYPE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_CONTROL_FLAGS(pub i32);
pub const SYNCMGR_CR_CANCEL_ALL: SYNCMGR_CANCEL_REQUEST = SYNCMGR_CANCEL_REQUEST(2i32);
pub const SYNCMGR_CR_CANCEL_ITEM: SYNCMGR_CANCEL_REQUEST = SYNCMGR_CANCEL_REQUEST(1i32);
pub const SYNCMGR_CR_MAX: SYNCMGR_CANCEL_REQUEST = SYNCMGR_CANCEL_REQUEST(2i32);
pub const SYNCMGR_CR_NONE: SYNCMGR_CANCEL_REQUEST = SYNCMGR_CANCEL_REQUEST(0i32);
pub const SYNCMGR_EF_NONE: SYNCMGR_EVENT_FLAGS = SYNCMGR_EVENT_FLAGS(0i32);
pub const SYNCMGR_EF_VALID: SYNCMGR_EVENT_FLAGS = SYNCMGR_EVENT_FLAGS(0i32);
pub const SYNCMGR_EL_ERROR: SYNCMGR_EVENT_LEVEL = SYNCMGR_EVENT_LEVEL(3i32);
pub const SYNCMGR_EL_INFORMATION: SYNCMGR_EVENT_LEVEL = SYNCMGR_EVENT_LEVEL(1i32);
pub const SYNCMGR_EL_MAX: SYNCMGR_EVENT_LEVEL = SYNCMGR_EVENT_LEVEL(3i32);
pub const SYNCMGR_EL_WARNING: SYNCMGR_EVENT_LEVEL = SYNCMGR_EVENT_LEVEL(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_EVENT_FLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_EVENT_LEVEL(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_HANDLER_CAPABILITIES(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_HANDLER_POLICIES(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_HANDLER_TYPE(pub i32);
pub const SYNCMGR_HCM_CAN_BROWSE_CONTENT: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(65536i32);
pub const SYNCMGR_HCM_CAN_SHOW_SCHEDULE: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(131072i32);
pub const SYNCMGR_HCM_CONFLICT_STORE: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(4i32);
pub const SYNCMGR_HCM_EVENT_STORE: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(2i32);
pub const SYNCMGR_HCM_NONE: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(0i32);
pub const SYNCMGR_HCM_PROVIDES_ICON: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(1i32);
pub const SYNCMGR_HCM_QUERY_BEFORE_ACTIVATE: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(1048576i32);
pub const SYNCMGR_HCM_QUERY_BEFORE_DEACTIVATE: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(2097152i32);
pub const SYNCMGR_HCM_QUERY_BEFORE_DISABLE: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(8388608i32);
pub const SYNCMGR_HCM_QUERY_BEFORE_ENABLE: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(4194304i32);
pub const SYNCMGR_HCM_SUPPORTS_CONCURRENT_SESSIONS: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(16i32);
pub const SYNCMGR_HCM_VALID_MASK: SYNCMGR_HANDLER_CAPABILITIES = SYNCMGR_HANDLER_CAPABILITIES(15925271i32);
pub const SYNCMGR_HPM_BACKGROUND_SYNC_ONLY: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(48i32);
pub const SYNCMGR_HPM_DISABLE_BROWSE: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(4096i32);
pub const SYNCMGR_HPM_DISABLE_DISABLE: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(512i32);
pub const SYNCMGR_HPM_DISABLE_ENABLE: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(256i32);
pub const SYNCMGR_HPM_DISABLE_SCHEDULE: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(8192i32);
pub const SYNCMGR_HPM_DISABLE_START_SYNC: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(1024i32);
pub const SYNCMGR_HPM_DISABLE_STOP_SYNC: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(2048i32);
pub const SYNCMGR_HPM_HIDDEN_BY_DEFAULT: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(65536i32);
pub const SYNCMGR_HPM_NONE: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(0i32);
pub const SYNCMGR_HPM_PREVENT_ACTIVATE: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(1i32);
pub const SYNCMGR_HPM_PREVENT_DEACTIVATE: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(2i32);
pub const SYNCMGR_HPM_PREVENT_DISABLE: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(8i32);
pub const SYNCMGR_HPM_PREVENT_ENABLE: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(4i32);
pub const SYNCMGR_HPM_PREVENT_START_SYNC: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(16i32);
pub const SYNCMGR_HPM_PREVENT_STOP_SYNC: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(32i32);
pub const SYNCMGR_HPM_VALID_MASK: SYNCMGR_HANDLER_POLICIES = SYNCMGR_HANDLER_POLICIES(77631i32);
pub const SYNCMGR_HT_APPLICATION: SYNCMGR_HANDLER_TYPE = SYNCMGR_HANDLER_TYPE(1i32);
pub const SYNCMGR_HT_COMPUTER: SYNCMGR_HANDLER_TYPE = SYNCMGR_HANDLER_TYPE(5i32);
pub const SYNCMGR_HT_DEVICE: SYNCMGR_HANDLER_TYPE = SYNCMGR_HANDLER_TYPE(2i32);
pub const SYNCMGR_HT_FOLDER: SYNCMGR_HANDLER_TYPE = SYNCMGR_HANDLER_TYPE(3i32);
pub const SYNCMGR_HT_MAX: SYNCMGR_HANDLER_TYPE = SYNCMGR_HANDLER_TYPE(5i32);
pub const SYNCMGR_HT_MIN: SYNCMGR_HANDLER_TYPE = SYNCMGR_HANDLER_TYPE(0i32);
pub const SYNCMGR_HT_SERVICE: SYNCMGR_HANDLER_TYPE = SYNCMGR_HANDLER_TYPE(4i32);
pub const SYNCMGR_HT_UNSPECIFIED: SYNCMGR_HANDLER_TYPE = SYNCMGR_HANDLER_TYPE(0i32);
pub const SYNCMGR_ICM_CAN_BROWSE_CONTENT: SYNCMGR_ITEM_CAPABILITIES = SYNCMGR_ITEM_CAPABILITIES(65536i32);
pub const SYNCMGR_ICM_CAN_DELETE: SYNCMGR_ITEM_CAPABILITIES = SYNCMGR_ITEM_CAPABILITIES(16i32);
pub const SYNCMGR_ICM_CONFLICT_STORE: SYNCMGR_ITEM_CAPABILITIES = SYNCMGR_ITEM_CAPABILITIES(4i32);
pub const SYNCMGR_ICM_EVENT_STORE: SYNCMGR_ITEM_CAPABILITIES = SYNCMGR_ITEM_CAPABILITIES(2i32);
pub const SYNCMGR_ICM_NONE: SYNCMGR_ITEM_CAPABILITIES = SYNCMGR_ITEM_CAPABILITIES(0i32);
pub const SYNCMGR_ICM_PROVIDES_ICON: SYNCMGR_ITEM_CAPABILITIES = SYNCMGR_ITEM_CAPABILITIES(1i32);
pub const SYNCMGR_ICM_QUERY_BEFORE_DELETE: SYNCMGR_ITEM_CAPABILITIES = SYNCMGR_ITEM_CAPABILITIES(4194304i32);
pub const SYNCMGR_ICM_QUERY_BEFORE_DISABLE: SYNCMGR_ITEM_CAPABILITIES = SYNCMGR_ITEM_CAPABILITIES(2097152i32);
pub const SYNCMGR_ICM_QUERY_BEFORE_ENABLE: SYNCMGR_ITEM_CAPABILITIES = SYNCMGR_ITEM_CAPABILITIES(1048576i32);
pub const SYNCMGR_ICM_VALID_MASK: SYNCMGR_ITEM_CAPABILITIES = SYNCMGR_ITEM_CAPABILITIES(7405591i32);
pub const SYNCMGR_IPM_DISABLE_BROWSE: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(256i32);
pub const SYNCMGR_IPM_DISABLE_DELETE: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(512i32);
pub const SYNCMGR_IPM_DISABLE_DISABLE: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(32i32);
pub const SYNCMGR_IPM_DISABLE_ENABLE: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(16i32);
pub const SYNCMGR_IPM_DISABLE_START_SYNC: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(64i32);
pub const SYNCMGR_IPM_DISABLE_STOP_SYNC: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(128i32);
pub const SYNCMGR_IPM_HIDDEN_BY_DEFAULT: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(65536i32);
pub const SYNCMGR_IPM_NONE: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(0i32);
pub const SYNCMGR_IPM_PREVENT_DISABLE: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(2i32);
pub const SYNCMGR_IPM_PREVENT_ENABLE: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(1i32);
pub const SYNCMGR_IPM_PREVENT_START_SYNC: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(4i32);
pub const SYNCMGR_IPM_PREVENT_STOP_SYNC: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(8i32);
pub const SYNCMGR_IPM_VALID_MASK: SYNCMGR_ITEM_POLICIES = SYNCMGR_ITEM_POLICIES(66303i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_ITEM_CAPABILITIES(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_ITEM_POLICIES(pub i32);
pub const SYNCMGR_OBJECTID_BrowseContent: windows_core::GUID = windows_core::GUID::from_u128(0x57cbb584_e9b4_47ae_a120_c4df3335dee2);
pub const SYNCMGR_OBJECTID_ConflictStore: windows_core::GUID = windows_core::GUID::from_u128(0xd78181f4_2389_47e4_a960_60bcc2ed930b);
pub const SYNCMGR_OBJECTID_EventLinkClick: windows_core::GUID = windows_core::GUID::from_u128(0x2203bdc1_1af1_4082_8c30_28399f41384c);
pub const SYNCMGR_OBJECTID_EventStore: windows_core::GUID = windows_core::GUID::from_u128(0x4bef34b9_a786_4075_ba88_0c2b9d89a98f);
pub const SYNCMGR_OBJECTID_Icon: windows_core::GUID = windows_core::GUID::from_u128(0x6dbc85c3_5d07_4c72_a777_7fec78072c06);
pub const SYNCMGR_OBJECTID_QueryBeforeActivate: windows_core::GUID = windows_core::GUID::from_u128(0xd882d80b_e7aa_49ed_86b7_e6e1f714cdfe);
pub const SYNCMGR_OBJECTID_QueryBeforeDeactivate: windows_core::GUID = windows_core::GUID::from_u128(0xa0efc282_60e0_460e_9374_ea88513cfc80);
pub const SYNCMGR_OBJECTID_QueryBeforeDelete: windows_core::GUID = windows_core::GUID::from_u128(0xf76c3397_afb3_45d7_a59f_5a49e905437e);
pub const SYNCMGR_OBJECTID_QueryBeforeDisable: windows_core::GUID = windows_core::GUID::from_u128(0xbb5f64aa_f004_4eb5_8e4d_26751966344c);
pub const SYNCMGR_OBJECTID_QueryBeforeEnable: windows_core::GUID = windows_core::GUID::from_u128(0x04cbf7f0_5beb_4de1_bc90_908345c480f6);
pub const SYNCMGR_OBJECTID_ShowSchedule: windows_core::GUID = windows_core::GUID::from_u128(0xedc6f3e3_8441_4109_adf3_6c1ca0b7de47);
pub const SYNCMGR_PC_KEEP_MULTIPLE: SYNCMGR_PRESENTER_CHOICE = SYNCMGR_PRESENTER_CHOICE(2i32);
pub const SYNCMGR_PC_KEEP_ONE: SYNCMGR_PRESENTER_CHOICE = SYNCMGR_PRESENTER_CHOICE(1i32);
pub const SYNCMGR_PC_KEEP_RECENT: SYNCMGR_PRESENTER_CHOICE = SYNCMGR_PRESENTER_CHOICE(3i32);
pub const SYNCMGR_PC_NO_CHOICE: SYNCMGR_PRESENTER_CHOICE = SYNCMGR_PRESENTER_CHOICE(0i32);
pub const SYNCMGR_PC_REMOVE_FROM_SYNC_SET: SYNCMGR_PRESENTER_CHOICE = SYNCMGR_PRESENTER_CHOICE(4i32);
pub const SYNCMGR_PC_SKIP: SYNCMGR_PRESENTER_CHOICE = SYNCMGR_PRESENTER_CHOICE(5i32);
pub const SYNCMGR_PNS_CANCEL: SYNCMGR_PRESENTER_NEXT_STEP = SYNCMGR_PRESENTER_NEXT_STEP(2i32);
pub const SYNCMGR_PNS_CONTINUE: SYNCMGR_PRESENTER_NEXT_STEP = SYNCMGR_PRESENTER_NEXT_STEP(0i32);
pub const SYNCMGR_PNS_DEFAULT: SYNCMGR_PRESENTER_NEXT_STEP = SYNCMGR_PRESENTER_NEXT_STEP(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_PRESENTER_CHOICE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_PRESENTER_NEXT_STEP(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_PROGRESS_STATUS(pub i32);
pub const SYNCMGR_PS_CANCELED: SYNCMGR_PROGRESS_STATUS = SYNCMGR_PROGRESS_STATUS(5i32);
pub const SYNCMGR_PS_DISCONNECTED: SYNCMGR_PROGRESS_STATUS = SYNCMGR_PROGRESS_STATUS(6i32);
pub const SYNCMGR_PS_FAILED: SYNCMGR_PROGRESS_STATUS = SYNCMGR_PROGRESS_STATUS(4i32);
pub const SYNCMGR_PS_MAX: SYNCMGR_PROGRESS_STATUS = SYNCMGR_PROGRESS_STATUS(6i32);
pub const SYNCMGR_PS_SUCCEEDED: SYNCMGR_PROGRESS_STATUS = SYNCMGR_PROGRESS_STATUS(3i32);
pub const SYNCMGR_PS_UPDATING: SYNCMGR_PROGRESS_STATUS = SYNCMGR_PROGRESS_STATUS(1i32);
pub const SYNCMGR_PS_UPDATING_INDETERMINATE: SYNCMGR_PROGRESS_STATUS = SYNCMGR_PROGRESS_STATUS(2i32);
pub const SYNCMGR_RA_KEEPOTHER: SYNCMGR_RESOLUTION_ABILITIES = SYNCMGR_RESOLUTION_ABILITIES(1i32);
pub const SYNCMGR_RA_KEEPRECENT: SYNCMGR_RESOLUTION_ABILITIES = SYNCMGR_RESOLUTION_ABILITIES(2i32);
pub const SYNCMGR_RA_KEEP_MULTIPLE: SYNCMGR_RESOLUTION_ABILITIES = SYNCMGR_RESOLUTION_ABILITIES(16i32);
pub const SYNCMGR_RA_KEEP_SINGLE: SYNCMGR_RESOLUTION_ABILITIES = SYNCMGR_RESOLUTION_ABILITIES(8i32);
pub const SYNCMGR_RA_REMOVEFROMSYNCSET: SYNCMGR_RESOLUTION_ABILITIES = SYNCMGR_RESOLUTION_ABILITIES(4i32);
pub const SYNCMGR_RA_VALID: SYNCMGR_RESOLUTION_ABILITIES = SYNCMGR_RESOLUTION_ABILITIES(31i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_RESOLUTION_ABILITIES(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_RESOLUTION_FEEDBACK(pub i32);
pub const SYNCMGR_RF_CANCEL: SYNCMGR_RESOLUTION_FEEDBACK = SYNCMGR_RESOLUTION_FEEDBACK(2i32);
pub const SYNCMGR_RF_CONTINUE: SYNCMGR_RESOLUTION_FEEDBACK = SYNCMGR_RESOLUTION_FEEDBACK(0i32);
pub const SYNCMGR_RF_REFRESH: SYNCMGR_RESOLUTION_FEEDBACK = SYNCMGR_RESOLUTION_FEEDBACK(1i32);
pub const SYNCMGR_SCF_IGNORE_IF_ALREADY_SYNCING: SYNCMGR_SYNC_CONTROL_FLAGS = SYNCMGR_SYNC_CONTROL_FLAGS(1i32);
pub const SYNCMGR_SCF_NONE: SYNCMGR_SYNC_CONTROL_FLAGS = SYNCMGR_SYNC_CONTROL_FLAGS(0i32);
pub const SYNCMGR_SCF_VALID: SYNCMGR_SYNC_CONTROL_FLAGS = SYNCMGR_SYNC_CONTROL_FLAGS(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_SYNC_CONTROL_FLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SYNCMGR_UPDATE_REASON(pub i32);
pub const SYNCMGR_UR_ADDED: SYNCMGR_UPDATE_REASON = SYNCMGR_UPDATE_REASON(0i32);
pub const SYNCMGR_UR_CHANGED: SYNCMGR_UPDATE_REASON = SYNCMGR_UPDATE_REASON(1i32);
pub const SYNCMGR_UR_MAX: SYNCMGR_UPDATE_REASON = SYNCMGR_UPDATE_REASON(2i32);
pub const SYNCMGR_UR_REMOVED: SYNCMGR_UPDATE_REASON = SYNCMGR_UPDATE_REASON(2i32);
pub const SZ_CONTENTTYPE_CDF: windows_core::PCWSTR = windows_core::w!("application/x-cdf");
pub const SZ_CONTENTTYPE_CDFA: windows_core::PCSTR = windows_core::s!("application/x-cdf");
pub const SZ_CONTENTTYPE_CDFW: windows_core::PCWSTR = windows_core::w!("application/x-cdf");
pub const SZ_CONTENTTYPE_HTML: windows_core::PCWSTR = windows_core::w!("text/html");
pub const SZ_CONTENTTYPE_HTMLA: windows_core::PCSTR = windows_core::s!("text/html");
pub const SZ_CONTENTTYPE_HTMLW: windows_core::PCWSTR = windows_core::w!("text/html");
pub const S_SYNCMGR_CANCELALL: windows_core::HRESULT = windows_core::HRESULT(0x40204_u32 as _);
pub const S_SYNCMGR_CANCELITEM: windows_core::HRESULT = windows_core::HRESULT(0x40203_u32 as _);
pub const S_SYNCMGR_ENUMITEMS: windows_core::HRESULT = windows_core::HRESULT(0x40211_u32 as _);
pub const S_SYNCMGR_ITEMDELETED: windows_core::HRESULT = windows_core::HRESULT(0x40210_u32 as _);
pub const S_SYNCMGR_MISSINGITEMS: windows_core::HRESULT = windows_core::HRESULT(0x40201_u32 as _);
pub const S_SYNCMGR_RETRYSYNC: windows_core::HRESULT = windows_core::HRESULT(0x40202_u32 as _);
pub const ScheduledTasks: windows_core::GUID = windows_core::GUID::from_u128(0xd6277990_4c6a_11cf_8d87_00aa0060f5bf);
pub const SearchFolderItemFactory: windows_core::GUID = windows_core::GUID::from_u128(0x14010e02_bbbd_41f0_88e3_eda371216584);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct SecureLockIconConstants(pub i32);
pub const SelectedItemCount_Property_GUID: windows_core::GUID = windows_core::GUID::from_u128(0x8fe316d2_0e52_460a_9c1e_48f273d470a3);
pub const SharedBitmap: windows_core::GUID = windows_core::GUID::from_u128(0x4db26476_6787_4046_b836_e8412a9e8a27);
pub const SharingConfigurationManager: windows_core::GUID = windows_core::GUID::from_u128(0x49f371e1_8c5c_4d9c_9a3b_54a6827f513c);
pub const Shell: windows_core::GUID = windows_core::GUID::from_u128(0x13709620_c279_11ce_a49e_444553540000);
pub const ShellBrowserWindow: windows_core::GUID = windows_core::GUID::from_u128(0xc08afd90_f2a1_11d1_8455_00a0c91f3880);
pub const ShellDesktop: windows_core::GUID = windows_core::GUID::from_u128(0x00021400_0000_0000_c000_000000000046);
pub const ShellDispatchInproc: windows_core::GUID = windows_core::GUID::from_u128(0x0a89a860_d7b1_11ce_8350_444553540000);
pub const ShellFSFolder: windows_core::GUID = windows_core::GUID::from_u128(0xf3364ba0_65b9_11ce_a9ba_00aa004ae837);
pub const ShellFolderItem: windows_core::GUID = windows_core::GUID::from_u128(0x2fe352ea_fd1f_11d2_b1f4_00c04f8eeb3e);
pub const ShellFolderView: windows_core::GUID = windows_core::GUID::from_u128(0x62112aa1_ebe4_11cf_a5fb_0020afe7292d);
pub const ShellFolderViewOC: windows_core::GUID = windows_core::GUID::from_u128(0x9ba05971_f6a8_11cf_a442_00a0c90a8f39);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ShellFolderViewOptions(pub i32);
pub const ShellImageDataFactory: windows_core::GUID = windows_core::GUID::from_u128(0x66e4e4fb_f385_4dd0_8d74_a2efd1bc6178);
pub const ShellItem: windows_core::GUID = windows_core::GUID::from_u128(0x9ac9fbe1_e0a2_4ad6_b4ee_e212013ea917);
pub const ShellLibrary: windows_core::GUID = windows_core::GUID::from_u128(0xd9b3211d_e57f_4426_aaef_30a806add397);
pub const ShellLink: windows_core::GUID = windows_core::GUID::from_u128(0x00021401_0000_0000_c000_000000000046);
pub const ShellLinkObject: windows_core::GUID = windows_core::GUID::from_u128(0x11219420_1768_11d1_95be_00609797ea4f);
pub const ShellNameSpace: windows_core::GUID = windows_core::GUID::from_u128(0x55136805_b2de_11d1_b9f2_00a0c98bc547);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ShellSpecialFolderConstants(pub i32);
pub const ShellUIHelper: windows_core::GUID = windows_core::GUID::from_u128(0x64ab4bb7_111e_11d1_8f79_00c04fc2fbe1);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ShellWindowFindWindowOptions(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ShellWindowTypeConstants(pub i32);
pub const ShellWindows: windows_core::GUID = windows_core::GUID::from_u128(0x9ba05972_f6a8_11cf_a442_00a0c90a8f39);
pub const ShowInputPaneAnimationCoordinator: windows_core::GUID = windows_core::GUID::from_u128(0x1f046abf_3202_4dc1_8cb5_3c67617ce1fa);
pub const SimpleConflictPresenter: windows_core::GUID = windows_core::GUID::from_u128(0x7a0f6ab7_ed84_46b6_b47e_02aa159a152b);
pub const SizeCategorizer: windows_core::GUID = windows_core::GUID::from_u128(0x55d7b852_f6d1_42f2_aa75_8728a1b2d264);
pub const SmartcardCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0x8fd7e19c_3bf7_489b_a72c_846ab3678c96);
pub const SmartcardPinProvider: windows_core::GUID = windows_core::GUID::from_u128(0x94596c7e_3744_41ce_893e_bbf09122f76a);
pub const SmartcardReaderSelectionProvider: windows_core::GUID = windows_core::GUID::from_u128(0x1b283861_754f_4022_ad47_a5eaaa618894);
pub const SmartcardWinRTProvider: windows_core::GUID = windows_core::GUID::from_u128(0x1ee7337f_85ac_45e2_a23c_37c753209769);
pub const StartMenuPin: windows_core::GUID = windows_core::GUID::from_u128(0xa2a9545d_a0c2_42b4_9708_a0b2badd77c8);
pub const StorageProviderBanners: windows_core::GUID = windows_core::GUID::from_u128(0x7ccdf9f4_e576_455a_8bc7_f6ec68d6f063);
pub const SuspensionDependencyManager: windows_core::GUID = windows_core::GUID::from_u128(0x6b273fc5_61fd_4918_95a2_c3b5e9d7f581);
pub const SyncMgr: windows_core::GUID = windows_core::GUID::from_u128(0x6295df27_35ee_11d1_8707_00c04fd93327);
pub const SyncMgrClient: windows_core::GUID = windows_core::GUID::from_u128(0x1202db60_1dac_42c5_aed5_1abdd432248e);
pub const SyncMgrControl: windows_core::GUID = windows_core::GUID::from_u128(0x1a1f4206_0688_4e7f_be03_d82ec69df9a5);
pub const SyncMgrFolder: windows_core::GUID = windows_core::GUID::from_u128(0x9c73f5e5_7ae7_4e32_a8e8_8d23b85255bf);
pub const SyncMgrScheduleWizard: windows_core::GUID = windows_core::GUID::from_u128(0x8d8b8e30_c451_421b_8553_d2976afa648c);
pub const SyncResultsFolder: windows_core::GUID = windows_core::GUID::from_u128(0x71d99464_3b6b_475c_b241_e15883207529);
pub const SyncSetupFolder: windows_core::GUID = windows_core::GUID::from_u128(0x2e9e59c0_b437_4981_a647_9c34b9b90891);
pub const TBIF_APPEND: u32 = 0u32;
pub const TBIF_DEFAULT: u32 = 0u32;
pub const TBIF_INTERNETBAR: u32 = 65536u32;
pub const TBIF_NOTOOLBAR: u32 = 196608u32;
pub const TBIF_PREPEND: u32 = 1u32;
pub const TBIF_REPLACE: u32 = 2u32;
pub const TBIF_STANDARDTOOLBAR: u32 = 131072u32;
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct TBINFO {
    pub cbuttons: u32,
    pub uFlags: u32,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct TBPFLAG(pub i32);
impl TBPFLAG {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for TBPFLAG {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for TBPFLAG {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for TBPFLAG {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for TBPFLAG {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for TBPFLAG {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const TBPF_ERROR: TBPFLAG = TBPFLAG(4i32);
pub const TBPF_INDETERMINATE: TBPFLAG = TBPFLAG(1i32);
pub const TBPF_NOPROGRESS: TBPFLAG = TBPFLAG(0i32);
pub const TBPF_NORMAL: TBPFLAG = TBPFLAG(2i32);
pub const TBPF_PAUSED: TBPFLAG = TBPFLAG(8i32);
pub const THBF_DISABLED: THUMBBUTTONFLAGS = THUMBBUTTONFLAGS(1i32);
pub const THBF_DISMISSONCLICK: THUMBBUTTONFLAGS = THUMBBUTTONFLAGS(2i32);
pub const THBF_ENABLED: THUMBBUTTONFLAGS = THUMBBUTTONFLAGS(0i32);
pub const THBF_HIDDEN: THUMBBUTTONFLAGS = THUMBBUTTONFLAGS(8i32);
pub const THBF_NOBACKGROUND: THUMBBUTTONFLAGS = THUMBBUTTONFLAGS(4i32);
pub const THBF_NONINTERACTIVE: THUMBBUTTONFLAGS = THUMBBUTTONFLAGS(16i32);
pub const THBN_CLICKED: u32 = 6144u32;
pub const THB_BITMAP: THUMBBUTTONMASK = THUMBBUTTONMASK(1i32);
pub const THB_FLAGS: THUMBBUTTONMASK = THUMBBUTTONMASK(8i32);
pub const THB_ICON: THUMBBUTTONMASK = THUMBBUTTONMASK(2i32);
pub const THB_TOOLTIP: THUMBBUTTONMASK = THUMBBUTTONMASK(4i32);
#[repr(C)]
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct THUMBBUTTON {
    pub dwMask: THUMBBUTTONMASK,
    pub iId: u32,
    pub iBitmap: u32,
    pub hIcon: super::WindowsAndMessaging::HICON,
    pub szTip: [u16; 260],
    pub dwFlags: THUMBBUTTONFLAGS,
}
#[cfg(feature = "Win32_UI_WindowsAndMessaging")]
impl Default for THUMBBUTTON {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct THUMBBUTTONFLAGS(pub i32);
impl THUMBBUTTONFLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for THUMBBUTTONFLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for THUMBBUTTONFLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for THUMBBUTTONFLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for THUMBBUTTONFLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for THUMBBUTTONFLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct THUMBBUTTONMASK(pub i32);
impl THUMBBUTTONMASK {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for THUMBBUTTONMASK {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for THUMBBUTTONMASK {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for THUMBBUTTONMASK {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for THUMBBUTTONMASK {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for THUMBBUTTONMASK {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const TITLEBARNAMELEN: u32 = 40u32;
pub const TI_BITMAP: TI_FLAGS = TI_FLAGS(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct TI_FLAGS(pub i32);
pub const TI_JPEG: TI_FLAGS = TI_FLAGS(2i32);
pub const TLEF_ABSOLUTE: TLENUMF = TLENUMF(49i32);
pub const TLEF_EXCLUDE_ABOUT_PAGES: TLENUMF = TLENUMF(256i32);
pub const TLEF_EXCLUDE_SUBFRAME_ENTRIES: TLENUMF = TLENUMF(128i32);
pub const TLEF_INCLUDE_UNINVOKEABLE: TLENUMF = TLENUMF(64i32);
pub const TLEF_RELATIVE_BACK: TLENUMF = TLENUMF(16i32);
pub const TLEF_RELATIVE_FORE: TLENUMF = TLENUMF(32i32);
pub const TLEF_RELATIVE_INCLUDE_CURRENT: TLENUMF = TLENUMF(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct TLENUMF(pub i32);
pub const TLMENUF_BACK: u32 = 16u32;
pub const TLMENUF_FORE: u32 = 32u32;
pub const TLMENUF_INCLUDECURRENT: u32 = 1u32;
pub const TLOG_BACK: i32 = -1i32;
pub const TLOG_CURRENT: u32 = 0u32;
pub const TLOG_FORE: u32 = 1u32;
#[repr(C)]
#[cfg(all(feature = "Win32_Graphics_Gdi", feature = "Win32_System_Ole"))]
#[derive(Clone, Debug, Default, PartialEq)]
pub struct TOOLBARITEM {
    pub ptbar: core::mem::ManuallyDrop<Option<IDockingWindow>>,
    pub rcBorderTool: super::super::Foundation::RECT,
    pub pwszItem: windows_core::PWSTR,
    pub fShow: windows_core::BOOL,
    pub hMon: super::super::Graphics::Gdi::HMONITOR,
}
pub const TRANSLATEURL_FL_GUESS_PROTOCOL: TRANSLATEURL_IN_FLAGS = TRANSLATEURL_IN_FLAGS(1i32);
pub const TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL: TRANSLATEURL_IN_FLAGS = TRANSLATEURL_IN_FLAGS(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct TRANSLATEURL_IN_FLAGS(pub i32);
pub const TSF_ALLOW_DECRYPTION: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(4i32);
pub const TSF_COPY_CREATION_TIME: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(16i32);
pub const TSF_COPY_HARD_LINK: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(256i32);
pub const TSF_COPY_LOCALIZED_NAME: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(512i32);
pub const TSF_COPY_WRITE_TIME: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(32i32);
pub const TSF_DELETE_RECYCLE_IF_POSSIBLE: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(128i32);
pub const TSF_FAIL_EXIST: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(0i32);
pub const TSF_MOVE_AS_COPY_DELETE: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(1024i32);
pub const TSF_NORMAL: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(0i32);
pub const TSF_NO_SECURITY: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(8i32);
pub const TSF_OVERWRITE_EXIST: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(2i32);
pub const TSF_RENAME_EXIST: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(1i32);
pub const TSF_SUSPEND_SHELLEVENTS: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(2048i32);
pub const TSF_USE_FULL_ACCESS: _TRANSFER_SOURCE_FLAGS = _TRANSFER_SOURCE_FLAGS(64i32);
pub const TS_INDETERMINATE: _TRANSFER_ADVISE_STATE = _TRANSFER_ADVISE_STATE(4i32);
pub const TS_NONE: _TRANSFER_ADVISE_STATE = _TRANSFER_ADVISE_STATE(0i32);
pub const TS_PERFORMING: _TRANSFER_ADVISE_STATE = _TRANSFER_ADVISE_STATE(1i32);
pub const TS_PREPARING: _TRANSFER_ADVISE_STATE = _TRANSFER_ADVISE_STATE(2i32);
pub const TaskbarList: windows_core::GUID = windows_core::GUID::from_u128(0x56fdf344_fd6d_11d0_958a_006097c9a090);
pub const ThumbnailStreamCache: windows_core::GUID = windows_core::GUID::from_u128(0xcbe0fed3_4b91_4e90_8354_8a8c84ec6872);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct ThumbnailStreamCacheOptions(pub i32);
impl ThumbnailStreamCacheOptions {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for ThumbnailStreamCacheOptions {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for ThumbnailStreamCacheOptions {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for ThumbnailStreamCacheOptions {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for ThumbnailStreamCacheOptions {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for ThumbnailStreamCacheOptions {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const TimeCategorizer: windows_core::GUID = windows_core::GUID::from_u128(0x3bb4118f_ddfd_4d30_a348_9fb5d6bf1afe);
pub const TrackShellMenu: windows_core::GUID = windows_core::GUID::from_u128(0x8278f931_2a3e_11d2_838f_00c04fd918d0);
pub const TrayBandSiteService: windows_core::GUID = windows_core::GUID::from_u128(0xf60ad0a0_e5e1_45cb_b51a_e15b9f8b2934);
pub const TrayDeskBand: windows_core::GUID = windows_core::GUID::from_u128(0xe6442437_6c68_4f52_94dd_2cfed267efb9);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct UNDOCK_REASON(pub i32);
pub const URLASSOCDLG_FL_REGISTER_ASSOC: URLASSOCIATIONDIALOG_IN_FLAGS = URLASSOCIATIONDIALOG_IN_FLAGS(2i32);
pub const URLASSOCDLG_FL_USE_DEFAULT_NAME: URLASSOCIATIONDIALOG_IN_FLAGS = URLASSOCIATIONDIALOG_IN_FLAGS(1i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct URLASSOCIATIONDIALOG_IN_FLAGS(pub i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct URLINVOKECOMMANDINFOA {
    pub dwcbSize: u32,
    pub dwFlags: u32,
    pub hwndParent: super::super::Foundation::HWND,
    pub pcszVerb: windows_core::PCSTR,
}
#[repr(C)]
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct URLINVOKECOMMANDINFOW {
    pub dwcbSize: u32,
    pub dwFlags: u32,
    pub hwndParent: super::super::Foundation::HWND,
    pub pcszVerb: windows_core::PCWSTR,
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct URLIS(pub i32);
pub const URLIS_APPLIABLE: URLIS = URLIS(4i32);
pub const URLIS_DIRECTORY: URLIS = URLIS(5i32);
pub const URLIS_FILEURL: URLIS = URLIS(3i32);
pub const URLIS_HASQUERY: URLIS = URLIS(6i32);
pub const URLIS_NOHISTORY: URLIS = URLIS(2i32);
pub const URLIS_OPAQUE: URLIS = URLIS(1i32);
pub const URLIS_URL: URLIS = URLIS(0i32);
pub const URL_APPLY_DEFAULT: u32 = 1u32;
pub const URL_APPLY_FORCEAPPLY: u32 = 8u32;
pub const URL_APPLY_GUESSFILE: u32 = 4u32;
pub const URL_APPLY_GUESSSCHEME: u32 = 2u32;
pub const URL_BROWSER_MODE: u32 = 33554432u32;
pub const URL_CONVERT_IF_DOSPATH: u32 = 2097152u32;
pub const URL_DONT_ESCAPE_EXTRA_INFO: u32 = 33554432u32;
pub const URL_DONT_SIMPLIFY: u32 = 134217728u32;
pub const URL_DONT_UNESCAPE: u32 = 131072u32;
pub const URL_DONT_UNESCAPE_EXTRA_INFO: u32 = 33554432u32;
pub const URL_ESCAPE_ASCII_URI_COMPONENT: u32 = 524288u32;
pub const URL_ESCAPE_AS_UTF8: u32 = 262144u32;
pub const URL_ESCAPE_PERCENT: u32 = 4096u32;
pub const URL_ESCAPE_SEGMENT_ONLY: u32 = 8192u32;
pub const URL_ESCAPE_SPACES_ONLY: u32 = 67108864u32;
pub const URL_ESCAPE_UNSAFE: u32 = 536870912u32;
pub const URL_E_INVALID_SYNTAX: windows_core::HRESULT = windows_core::HRESULT(0x80041001_u32 as _);
pub const URL_E_UNREGISTERED_PROTOCOL: windows_core::HRESULT = windows_core::HRESULT(0x80041002_u32 as _);
pub const URL_FILE_USE_PATHURL: u32 = 65536u32;
pub const URL_INTERNAL_PATH: u32 = 8388608u32;
pub const URL_NO_META: u32 = 134217728u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct URL_PART(pub i32);
pub const URL_PARTFLAG_KEEPSCHEME: u32 = 1u32;
pub const URL_PART_HOSTNAME: URL_PART = URL_PART(2i32);
pub const URL_PART_NONE: URL_PART = URL_PART(0i32);
pub const URL_PART_PASSWORD: URL_PART = URL_PART(4i32);
pub const URL_PART_PORT: URL_PART = URL_PART(5i32);
pub const URL_PART_QUERY: URL_PART = URL_PART(6i32);
pub const URL_PART_SCHEME: URL_PART = URL_PART(1i32);
pub const URL_PART_USERNAME: URL_PART = URL_PART(3i32);
pub const URL_PLUGGABLE_PROTOCOL: u32 = 1073741824u32;
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct URL_SCHEME(pub i32);
pub const URL_SCHEME_ABOUT: URL_SCHEME = URL_SCHEME(17i32);
pub const URL_SCHEME_FILE: URL_SCHEME = URL_SCHEME(9i32);
pub const URL_SCHEME_FTP: URL_SCHEME = URL_SCHEME(1i32);
pub const URL_SCHEME_GOPHER: URL_SCHEME = URL_SCHEME(3i32);
pub const URL_SCHEME_HTTP: URL_SCHEME = URL_SCHEME(2i32);
pub const URL_SCHEME_HTTPS: URL_SCHEME = URL_SCHEME(11i32);
pub const URL_SCHEME_INVALID: URL_SCHEME = URL_SCHEME(-1i32);
pub const URL_SCHEME_JAVASCRIPT: URL_SCHEME = URL_SCHEME(15i32);
pub const URL_SCHEME_KNOWNFOLDER: URL_SCHEME = URL_SCHEME(26i32);
pub const URL_SCHEME_LOCAL: URL_SCHEME = URL_SCHEME(14i32);
pub const URL_SCHEME_MAILTO: URL_SCHEME = URL_SCHEME(4i32);
pub const URL_SCHEME_MAXVALUE: URL_SCHEME = URL_SCHEME(27i32);
pub const URL_SCHEME_MK: URL_SCHEME = URL_SCHEME(10i32);
pub const URL_SCHEME_MSHELP: URL_SCHEME = URL_SCHEME(21i32);
pub const URL_SCHEME_MSSHELLDEVICE: URL_SCHEME = URL_SCHEME(22i32);
pub const URL_SCHEME_MSSHELLIDLIST: URL_SCHEME = URL_SCHEME(20i32);
pub const URL_SCHEME_MSSHELLROOTED: URL_SCHEME = URL_SCHEME(19i32);
pub const URL_SCHEME_NEWS: URL_SCHEME = URL_SCHEME(5i32);
pub const URL_SCHEME_NNTP: URL_SCHEME = URL_SCHEME(6i32);
pub const URL_SCHEME_RES: URL_SCHEME = URL_SCHEME(18i32);
pub const URL_SCHEME_SEARCH: URL_SCHEME = URL_SCHEME(25i32);
pub const URL_SCHEME_SEARCH_MS: URL_SCHEME = URL_SCHEME(24i32);
pub const URL_SCHEME_SHELL: URL_SCHEME = URL_SCHEME(12i32);
pub const URL_SCHEME_SNEWS: URL_SCHEME = URL_SCHEME(13i32);
pub const URL_SCHEME_TELNET: URL_SCHEME = URL_SCHEME(7i32);
pub const URL_SCHEME_UNKNOWN: URL_SCHEME = URL_SCHEME(0i32);
pub const URL_SCHEME_VBSCRIPT: URL_SCHEME = URL_SCHEME(16i32);
pub const URL_SCHEME_WAIS: URL_SCHEME = URL_SCHEME(8i32);
pub const URL_SCHEME_WILDCARD: URL_SCHEME = URL_SCHEME(23i32);
pub const URL_UNESCAPE: u32 = 268435456u32;
pub const URL_UNESCAPE_AS_UTF8: u32 = 262144u32;
pub const URL_UNESCAPE_HIGH_ANSI_ONLY: u32 = 4194304u32;
pub const URL_UNESCAPE_INPLACE: u32 = 1048576u32;
pub const URL_UNESCAPE_URI_COMPONENT: u32 = 262144u32;
pub const URL_WININET_COMPATIBILITY: u32 = 2147483648u32;
pub const UR_MONITOR_DISCONNECT: UNDOCK_REASON = UNDOCK_REASON(1i32);
pub const UR_RESOLUTION_CHANGE: UNDOCK_REASON = UNDOCK_REASON(0i32);
pub const UserNotification: windows_core::GUID = windows_core::GUID::from_u128(0x0010890e_8789_413c_adbc_48f5b511b3af);
pub const V1PasswordCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0x6f45dc1e_5384_457a_bc13_2cd81b0d28ed);
pub const V1SmartcardCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0x8bf9a910_a8ff_457f_999f_a5ca10b4a885);
pub const V1WinBioCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0xac3ac249_e820_4343_a65b_377ac634dc09);
pub const VALIDATEUNC_CONNECT: VALIDATEUNC_OPTION = VALIDATEUNC_OPTION(1i32);
pub const VALIDATEUNC_NOUI: VALIDATEUNC_OPTION = VALIDATEUNC_OPTION(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct VALIDATEUNC_OPTION(pub i32);
impl VALIDATEUNC_OPTION {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for VALIDATEUNC_OPTION {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for VALIDATEUNC_OPTION {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for VALIDATEUNC_OPTION {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for VALIDATEUNC_OPTION {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for VALIDATEUNC_OPTION {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const VALIDATEUNC_PERSIST: VALIDATEUNC_OPTION = VALIDATEUNC_OPTION(8i32);
pub const VALIDATEUNC_PRINT: VALIDATEUNC_OPTION = VALIDATEUNC_OPTION(4i32);
pub const VALIDATEUNC_VALID: VALIDATEUNC_OPTION = VALIDATEUNC_OPTION(15i32);
pub const VID_Content: windows_core::GUID = windows_core::GUID::from_u128(0x30c2c434_0889_4c8d_985d_a9f71830b0a9);
pub const VID_Details: windows_core::GUID = windows_core::GUID::from_u128(0x137e7700_3573_11cf_ae69_08002b2e1262);
pub const VID_LargeIcons: windows_core::GUID = windows_core::GUID::from_u128(0x0057d0e0_3573_11cf_ae69_08002b2e1262);
pub const VID_List: windows_core::GUID = windows_core::GUID::from_u128(0x0e1fa5e0_3573_11cf_ae69_08002b2e1262);
pub const VID_SmallIcons: windows_core::GUID = windows_core::GUID::from_u128(0x089000c0_3573_11cf_ae69_08002b2e1262);
pub const VID_ThumbStrip: windows_core::GUID = windows_core::GUID::from_u128(0x8eefa624_d1e9_445b_94b7_74fbce2ea11a);
pub const VID_Thumbnails: windows_core::GUID = windows_core::GUID::from_u128(0x8bebb290_52d0_11d0_b7f4_00c04fd706ec);
pub const VID_Tile: windows_core::GUID = windows_core::GUID::from_u128(0x65f125e5_7be1_4810_ba9d_d271c8432ce3);
pub const VIEW_PRIORITY_CACHEHIT: u32 = 80u32;
pub const VIEW_PRIORITY_CACHEMISS: u32 = 48u32;
pub const VIEW_PRIORITY_DESPERATE: u32 = 16u32;
pub const VIEW_PRIORITY_INHERIT: u32 = 32u32;
pub const VIEW_PRIORITY_NONE: u32 = 0u32;
pub const VIEW_PRIORITY_RESTRICTED: u32 = 112u32;
pub const VIEW_PRIORITY_SHELLEXT: u32 = 64u32;
pub const VIEW_PRIORITY_SHELLEXT_ASBACKUP: u32 = 21u32;
pub const VIEW_PRIORITY_STALECACHEHIT: u32 = 69u32;
pub const VIEW_PRIORITY_USEASDEFAULT: u32 = 67u32;
pub const VOLUME_PREFIX: windows_core::PCWSTR = windows_core::w!("\\\\?\\Volume");
pub const VPCF_BACKGROUND: VPCOLORFLAGS = VPCOLORFLAGS(2i32);
pub const VPCF_SORTCOLUMN: VPCOLORFLAGS = VPCOLORFLAGS(3i32);
pub const VPCF_SUBTEXT: VPCOLORFLAGS = VPCOLORFLAGS(4i32);
pub const VPCF_TEXT: VPCOLORFLAGS = VPCOLORFLAGS(1i32);
pub const VPCF_TEXTBACKGROUND: VPCOLORFLAGS = VPCOLORFLAGS(5i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct VPCOLORFLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct VPWATERMARKFLAGS(pub i32);
impl VPWATERMARKFLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for VPWATERMARKFLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for VPWATERMARKFLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for VPWATERMARKFLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for VPWATERMARKFLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for VPWATERMARKFLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const VPWF_ALPHABLEND: VPWATERMARKFLAGS = VPWATERMARKFLAGS(1i32);
pub const VPWF_DEFAULT: VPWATERMARKFLAGS = VPWATERMARKFLAGS(0i32);
pub const VaultProvider: windows_core::GUID = windows_core::GUID::from_u128(0x503739d0_4c5e_4cfd_b3ba_d881334f0df2);
pub const VirtualDesktopManager: windows_core::GUID = windows_core::GUID::from_u128(0xaa509086_5ca9_4c25_8f95_589d3c07b48a);
pub const WC_NETADDRESS: windows_core::PCWSTR = windows_core::w!("msctls_netaddress");
#[repr(C)]
#[cfg(feature = "Win32_UI_Shell_Common")]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct WINDOWDATA {
    pub dwWindowID: u32,
    pub uiCP: u32,
    pub pidl: *mut Common::ITEMIDLIST,
    pub lpszUrl: windows_core::PWSTR,
    pub lpszUrlLocation: windows_core::PWSTR,
    pub lpszTitle: windows_core::PWSTR,
}
#[cfg(feature = "Win32_UI_Shell_Common")]
impl Default for WINDOWDATA {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const WM_CPL_LAUNCH: u32 = 2024u32;
pub const WM_CPL_LAUNCHED: u32 = 2025u32;
pub const WPSTYLE_CENTER: u32 = 0u32;
pub const WPSTYLE_CROPTOFIT: u32 = 4u32;
pub const WPSTYLE_KEEPASPECT: u32 = 3u32;
pub const WPSTYLE_MAX: u32 = 6u32;
pub const WPSTYLE_SPAN: u32 = 5u32;
pub const WPSTYLE_STRETCH: u32 = 2u32;
pub const WPSTYLE_TILE: u32 = 1u32;
pub const WTSAT_ARGB: WTS_ALPHATYPE = WTS_ALPHATYPE(2i32);
pub const WTSAT_RGB: WTS_ALPHATYPE = WTS_ALPHATYPE(1i32);
pub const WTSAT_UNKNOWN: WTS_ALPHATYPE = WTS_ALPHATYPE(0i32);
pub const WTSCF_APPSTYLE: WTS_CONTEXTFLAGS = WTS_CONTEXTFLAGS(1i32);
pub const WTSCF_DEFAULT: WTS_CONTEXTFLAGS = WTS_CONTEXTFLAGS(0i32);
pub const WTSCF_FAST: WTS_CONTEXTFLAGS = WTS_CONTEXTFLAGS(8i32);
pub const WTSCF_SQUARE: WTS_CONTEXTFLAGS = WTS_CONTEXTFLAGS(2i32);
pub const WTSCF_WIDE: WTS_CONTEXTFLAGS = WTS_CONTEXTFLAGS(4i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct WTS_ALPHATYPE(pub i32);
pub const WTS_APPSTYLE: WTS_FLAGS = WTS_FLAGS(8192i32);
pub const WTS_CACHED: WTS_CACHEFLAGS = WTS_CACHEFLAGS(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct WTS_CACHEFLAGS(pub i32);
impl WTS_CACHEFLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for WTS_CACHEFLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for WTS_CACHEFLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for WTS_CACHEFLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for WTS_CACHEFLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for WTS_CACHEFLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct WTS_CONTEXTFLAGS(pub i32);
impl WTS_CONTEXTFLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for WTS_CONTEXTFLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for WTS_CONTEXTFLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for WTS_CONTEXTFLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for WTS_CONTEXTFLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for WTS_CONTEXTFLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const WTS_CROPTOSQUARE: WTS_FLAGS = WTS_FLAGS(512i32);
pub const WTS_DEFAULT: WTS_CACHEFLAGS = WTS_CACHEFLAGS(0i32);
pub const WTS_EXTRACT: WTS_FLAGS = WTS_FLAGS(0i32);
pub const WTS_EXTRACTDONOTCACHE: WTS_FLAGS = WTS_FLAGS(32i32);
pub const WTS_EXTRACTINPROC: WTS_FLAGS = WTS_FLAGS(256i32);
pub const WTS_E_DATAFILEUNAVAILABLE: windows_core::HRESULT = windows_core::HRESULT(0x8004B204_u32 as _);
pub const WTS_E_EXTRACTIONBLOCKED: windows_core::HRESULT = windows_core::HRESULT(0x8004B206_u32 as _);
pub const WTS_E_EXTRACTIONPENDING: windows_core::HRESULT = windows_core::HRESULT(0x8004B205_u32 as _);
pub const WTS_E_EXTRACTIONTIMEDOUT: windows_core::HRESULT = windows_core::HRESULT(0x8004B201_u32 as _);
pub const WTS_E_FAILEDEXTRACTION: windows_core::HRESULT = windows_core::HRESULT(0x8004B200_u32 as _);
pub const WTS_E_FASTEXTRACTIONNOTSUPPORTED: windows_core::HRESULT = windows_core::HRESULT(0x8004B203_u32 as _);
pub const WTS_E_NOSTORAGEPROVIDERTHUMBNAILHANDLER: windows_core::HRESULT = windows_core::HRESULT(0x8004B207_u32 as _);
pub const WTS_E_SURROGATEUNAVAILABLE: windows_core::HRESULT = windows_core::HRESULT(0x8004B202_u32 as _);
pub const WTS_FASTEXTRACT: WTS_FLAGS = WTS_FLAGS(2i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct WTS_FLAGS(pub i32);
impl WTS_FLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for WTS_FLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for WTS_FLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for WTS_FLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for WTS_FLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for WTS_FLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
pub const WTS_FORCEEXTRACTION: WTS_FLAGS = WTS_FLAGS(4i32);
pub const WTS_IDEALCACHESIZEONLY: WTS_FLAGS = WTS_FLAGS(32768i32);
pub const WTS_INCACHEONLY: WTS_FLAGS = WTS_FLAGS(1i32);
pub const WTS_INSTANCESURROGATE: WTS_FLAGS = WTS_FLAGS(1024i32);
pub const WTS_LOWQUALITY: WTS_CACHEFLAGS = WTS_CACHEFLAGS(1i32);
pub const WTS_NONE: WTS_FLAGS = WTS_FLAGS(0i32);
pub const WTS_REQUIRESURROGATE: WTS_FLAGS = WTS_FLAGS(2048i32);
pub const WTS_SCALETOREQUESTEDSIZE: WTS_FLAGS = WTS_FLAGS(64i32);
pub const WTS_SCALEUP: WTS_FLAGS = WTS_FLAGS(65536i32);
pub const WTS_SKIPFASTEXTRACT: WTS_FLAGS = WTS_FLAGS(128i32);
pub const WTS_SLOWRECLAIM: WTS_FLAGS = WTS_FLAGS(8i32);
#[repr(C)]
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct WTS_THUMBNAILID {
    pub rgbKey: [u8; 16],
}
impl Default for WTS_THUMBNAILID {
    fn default() -> Self {
        unsafe { core::mem::zeroed() }
    }
}
pub const WTS_WIDETHUMBNAILS: WTS_FLAGS = WTS_FLAGS(16384i32);
pub const WebBrowser: windows_core::GUID = windows_core::GUID::from_u128(0x8856f961_340a_11d0_a96b_00c04fd705a2);
pub const WebBrowser_V1: windows_core::GUID = windows_core::GUID::from_u128(0xeab22ac3_30c1_11cf_a7eb_0000c05bae0b);
pub const WebWizardHost: windows_core::GUID = windows_core::GUID::from_u128(0xc827f149_55c1_4d28_935e_57e47caed973);
pub const WinBioCredentialProvider: windows_core::GUID = windows_core::GUID::from_u128(0xbec09223_b018_416d_a0ac_523971b639f5);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _BROWSERFRAMEOPTIONS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _CDBE_ACTIONS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _EXPCMDFLAGS(pub i32);
impl _EXPCMDFLAGS {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for _EXPCMDFLAGS {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for _EXPCMDFLAGS {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for _EXPCMDFLAGS {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for _EXPCMDFLAGS {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for _EXPCMDFLAGS {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _EXPCMDSTATE(pub i32);
impl _EXPCMDSTATE {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for _EXPCMDSTATE {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for _EXPCMDSTATE {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for _EXPCMDSTATE {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for _EXPCMDSTATE {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for _EXPCMDSTATE {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _EXPLORERPANESTATE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _EXPPS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _KF_DEFINITION_FLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _KF_REDIRECTION_CAPABILITIES(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _KF_REDIRECT_FLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _NMCII_FLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _NMCSAEI_FLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _NSTCECLICKTYPE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _NSTCEHITTEST(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _NSTCITEMSTATE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _NSTCROOTSTYLE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _NSTCSTYLE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _OPPROGDLGF(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _PDMODE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _SHCONTF(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _SICHINTF(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _SPBEGINF(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _SPINITF(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _SV3CVW3_FLAGS(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _SVGIO(pub i32);
impl _SVGIO {
    pub const fn contains(&self, other: Self) -> bool {
        self.0 & other.0 == other.0
    }
}
impl core::ops::BitOr for _SVGIO {
    type Output = Self;
    fn bitor(self, other: Self) -> Self {
        Self(self.0 | other.0)
    }
}
impl core::ops::BitAnd for _SVGIO {
    type Output = Self;
    fn bitand(self, other: Self) -> Self {
        Self(self.0 & other.0)
    }
}
impl core::ops::BitOrAssign for _SVGIO {
    fn bitor_assign(&mut self, other: Self) {
        self.0.bitor_assign(other.0)
    }
}
impl core::ops::BitAndAssign for _SVGIO {
    fn bitand_assign(&mut self, other: Self) {
        self.0.bitand_assign(other.0)
    }
}
impl core::ops::Not for _SVGIO {
    type Output = Self;
    fn not(self) -> Self {
        Self(self.0.not())
    }
}
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _SVSIF(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _TRANSFER_ADVISE_STATE(pub i32);
#[repr(transparent)]
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub struct _TRANSFER_SOURCE_FLAGS(pub i32);
pub const __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_CSCSYNCINPROGRESS: SHGLOBALCOUNTER = SHGLOBALCOUNTER(13i32);
pub const __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_RECYCLEDIRTYCOUNT_SERVERDRIVE: SHGLOBALCOUNTER = SHGLOBALCOUNTER(42i32);
pub const __UNUSED_RECYCLE_WAS_GLOBALCOUNTER_RECYCLEGLOBALDIRTYCOUNT: SHGLOBALCOUNTER = SHGLOBALCOUNTER(43i32);
pub const idsAppName: u32 = 1007u32;
pub const idsBadOldPW: u32 = 1006u32;
pub const idsChangePW: u32 = 1005u32;
pub const idsDefKeyword: u32 = 1010u32;
pub const idsDifferentPW: u32 = 1004u32;
pub const idsHelpFile: u32 = 1009u32;
pub const idsIniFile: u32 = 1001u32;
pub const idsIsPassword: u32 = 1000u32;
pub const idsNoHelpMemory: u32 = 1008u32;
pub const idsPassword: u32 = 1003u32;
pub const idsScreenSaver: u32 = 1002u32;
pub const navAllowAutosearch: BrowserNavConstants = BrowserNavConstants(16i32);
pub const navBlockRedirectsXDomain: BrowserNavConstants = BrowserNavConstants(32768i32);
pub const navBrowserBar: BrowserNavConstants = BrowserNavConstants(32i32);
pub const navDeferUnload: BrowserNavConstants = BrowserNavConstants(262144i32);
pub const navEnforceRestricted: BrowserNavConstants = BrowserNavConstants(128i32);
pub const navHomepageNavigate: BrowserNavConstants = BrowserNavConstants(8388608i32);
pub const navHostNavigation: BrowserNavConstants = BrowserNavConstants(33554432i32);
pub const navHyperlink: BrowserNavConstants = BrowserNavConstants(64i32);
pub const navKeepWordWheelText: BrowserNavConstants = BrowserNavConstants(8192i32);
pub const navNewWindowsManaged: BrowserNavConstants = BrowserNavConstants(256i32);
pub const navNoHistory: BrowserNavConstants = BrowserNavConstants(2i32);
pub const navNoReadFromCache: BrowserNavConstants = BrowserNavConstants(4i32);
pub const navNoWriteToCache: BrowserNavConstants = BrowserNavConstants(8i32);
pub const navOpenInBackgroundTab: BrowserNavConstants = BrowserNavConstants(4096i32);
pub const navOpenInNewTab: BrowserNavConstants = BrowserNavConstants(2048i32);
pub const navOpenInNewWindow: BrowserNavConstants = BrowserNavConstants(1i32);
pub const navOpenNewForegroundTab: BrowserNavConstants = BrowserNavConstants(65536i32);
pub const navRefresh: BrowserNavConstants = BrowserNavConstants(16777216i32);
pub const navReserved1: BrowserNavConstants = BrowserNavConstants(4194304i32);
pub const navReserved2: BrowserNavConstants = BrowserNavConstants(67108864i32);
pub const navReserved3: BrowserNavConstants = BrowserNavConstants(134217728i32);
pub const navReserved4: BrowserNavConstants = BrowserNavConstants(268435456i32);
pub const navReserved5: BrowserNavConstants = BrowserNavConstants(536870912i32);
pub const navReserved6: BrowserNavConstants = BrowserNavConstants(1073741824i32);
pub const navReserved7: BrowserNavConstants = BrowserNavConstants(-2147483648i32);
pub const navSpeculative: BrowserNavConstants = BrowserNavConstants(524288i32);
pub const navSuggestNewTab: BrowserNavConstants = BrowserNavConstants(2097152i32);
pub const navSuggestNewWindow: BrowserNavConstants = BrowserNavConstants(1048576i32);
pub const navTravelLogScreenshot: BrowserNavConstants = BrowserNavConstants(131072i32);
pub const navTrustedForActiveX: BrowserNavConstants = BrowserNavConstants(1024i32);
pub const navUntrustedForDownload: BrowserNavConstants = BrowserNavConstants(512i32);
pub const navVirtualTab: BrowserNavConstants = BrowserNavConstants(16384i32);
pub const secureLockIconMixed: SecureLockIconConstants = SecureLockIconConstants(1i32);
pub const secureLockIconSecure128Bit: SecureLockIconConstants = SecureLockIconConstants(6i32);
pub const secureLockIconSecure40Bit: SecureLockIconConstants = SecureLockIconConstants(3i32);
pub const secureLockIconSecure56Bit: SecureLockIconConstants = SecureLockIconConstants(4i32);
pub const secureLockIconSecureFortezza: SecureLockIconConstants = SecureLockIconConstants(5i32);
pub const secureLockIconSecureUnknownBits: SecureLockIconConstants = SecureLockIconConstants(2i32);
pub const secureLockIconUnsecure: SecureLockIconConstants = SecureLockIconConstants(0i32);
pub const ssfALTSTARTUP: ShellSpecialFolderConstants = ShellSpecialFolderConstants(29i32);
pub const ssfAPPDATA: ShellSpecialFolderConstants = ShellSpecialFolderConstants(26i32);
pub const ssfBITBUCKET: ShellSpecialFolderConstants = ShellSpecialFolderConstants(10i32);
pub const ssfCOMMONALTSTARTUP: ShellSpecialFolderConstants = ShellSpecialFolderConstants(30i32);
pub const ssfCOMMONAPPDATA: ShellSpecialFolderConstants = ShellSpecialFolderConstants(35i32);
pub const ssfCOMMONDESKTOPDIR: ShellSpecialFolderConstants = ShellSpecialFolderConstants(25i32);
pub const ssfCOMMONFAVORITES: ShellSpecialFolderConstants = ShellSpecialFolderConstants(31i32);
pub const ssfCOMMONPROGRAMS: ShellSpecialFolderConstants = ShellSpecialFolderConstants(23i32);
pub const ssfCOMMONSTARTMENU: ShellSpecialFolderConstants = ShellSpecialFolderConstants(22i32);
pub const ssfCOMMONSTARTUP: ShellSpecialFolderConstants = ShellSpecialFolderConstants(24i32);
pub const ssfCONTROLS: ShellSpecialFolderConstants = ShellSpecialFolderConstants(3i32);
pub const ssfCOOKIES: ShellSpecialFolderConstants = ShellSpecialFolderConstants(33i32);
pub const ssfDESKTOP: ShellSpecialFolderConstants = ShellSpecialFolderConstants(0i32);
pub const ssfDESKTOPDIRECTORY: ShellSpecialFolderConstants = ShellSpecialFolderConstants(16i32);
pub const ssfDRIVES: ShellSpecialFolderConstants = ShellSpecialFolderConstants(17i32);
pub const ssfFAVORITES: ShellSpecialFolderConstants = ShellSpecialFolderConstants(6i32);
pub const ssfFONTS: ShellSpecialFolderConstants = ShellSpecialFolderConstants(20i32);
pub const ssfHISTORY: ShellSpecialFolderConstants = ShellSpecialFolderConstants(34i32);
pub const ssfINTERNETCACHE: ShellSpecialFolderConstants = ShellSpecialFolderConstants(32i32);
pub const ssfLOCALAPPDATA: ShellSpecialFolderConstants = ShellSpecialFolderConstants(28i32);
pub const ssfMYPICTURES: ShellSpecialFolderConstants = ShellSpecialFolderConstants(39i32);
pub const ssfNETHOOD: ShellSpecialFolderConstants = ShellSpecialFolderConstants(19i32);
pub const ssfNETWORK: ShellSpecialFolderConstants = ShellSpecialFolderConstants(18i32);
pub const ssfPERSONAL: ShellSpecialFolderConstants = ShellSpecialFolderConstants(5i32);
pub const ssfPRINTERS: ShellSpecialFolderConstants = ShellSpecialFolderConstants(4i32);
pub const ssfPRINTHOOD: ShellSpecialFolderConstants = ShellSpecialFolderConstants(27i32);
pub const ssfPROFILE: ShellSpecialFolderConstants = ShellSpecialFolderConstants(40i32);
pub const ssfPROGRAMFILES: ShellSpecialFolderConstants = ShellSpecialFolderConstants(38i32);
pub const ssfPROGRAMFILESx86: ShellSpecialFolderConstants = ShellSpecialFolderConstants(48i32);
pub const ssfPROGRAMS: ShellSpecialFolderConstants = ShellSpecialFolderConstants(2i32);
pub const ssfRECENT: ShellSpecialFolderConstants = ShellSpecialFolderConstants(8i32);
pub const ssfSENDTO: ShellSpecialFolderConstants = ShellSpecialFolderConstants(9i32);
pub const ssfSTARTMENU: ShellSpecialFolderConstants = ShellSpecialFolderConstants(11i32);
pub const ssfSTARTUP: ShellSpecialFolderConstants = ShellSpecialFolderConstants(7i32);
pub const ssfSYSTEM: ShellSpecialFolderConstants = ShellSpecialFolderConstants(37i32);
pub const ssfSYSTEMx86: ShellSpecialFolderConstants = ShellSpecialFolderConstants(41i32);
pub const ssfTEMPLATES: ShellSpecialFolderConstants = ShellSpecialFolderConstants(21i32);
pub const ssfWINDOWS: ShellSpecialFolderConstants = ShellSpecialFolderConstants(36i32);
